一个struts2的request问题, 非常奇怪。

有一个TestAction类packagecom.jin.action;importcom.jin.bean.User;importcom.opensymphony.xw... 有一个TestAction类

package com.jin.action;

import com.jin.bean.User;
import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport
{
private User user;

public User getUser()
{
return user;
}

public void setUser(User user)
{
this.user = user;
}

public String execute() throws Exception
{
user = new User("安切洛蒂", "christmas tree");

return SUCCESS;
}

}

User类

package com.jin.bean;

public class User
{
private String username;
private String password;

public User(){};

public User(String username, String password)
{
this.username = username;
this.password = password;
}

//...getter和setter..
}

用户访问testAction时,跳转到print.jsp
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<package name="myStruts" extends="struts-default">

<action name="testAction" class="com.jin.action.TestAction">
<result>/print.jsp</result>
</action>

</package>
</struts>

print.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<html>
<head>
<title>Print Test Page</title>
</head>

<body>
<h1><font color="red">输出测试页面</font></h1>

姓名:<s:property value="user.username"/><br>
密码:<s:property value="user.password"/><br>

<hr>
姓名:${requestScope.user.username}<br>

</body>
</html>

当我直接访问http://localhost:8080/ognl/testAction.action时,页面输出为:
姓名:安切洛蒂
密码:christmas tree
-------------------
姓名:安切洛蒂

前面两个输出结果如我所料。因为每当一个request到来时,struts2会自动产生一个ValueStack实例,并且把被访问的action实例放入ValueStack中,所以在print.jsp中,我可以用ognl输出action中user信息。

但后面那个使用jspEL表达式竟然也可以输出,就令我感到想当费解。我访问testAction.action时,并没有传递参数。为什么这里可以拿到${requestScope.user.username}请求对象request里的user信息呢?
难道struts2也自动把user放到了request中了吗?请问是怎么回事呢?
展开
 我来答
书乐天0A2
2009-07-07 · TA获得超过722个赞
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:250万
展开全部
没错,struts2也自动把user放到request范围了,只要设置了getter方法,struts2就会自动完成该功能.
辣椒面不辣阿9O
2009-07-15 · TA获得超过202个赞
知道小有建树答主
回答量:444
采纳率:0%
帮助的人:104万
展开全部
恩,是啊对于struts2只要在Action中有set、get方法就直接放在了request中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
程序猿集锦
2009-07-10 · 专注于各种数据库技术
程序猿集锦
采纳数:91 获赞数:277

向TA提问 私信TA
展开全部
你的理解是正确的!struts2已经给封好了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式