Struts中request,session和application方法访问web元素
2011-06-07 23:39
501 查看
最近听了马士兵老师的一个视频,讲的struts访问web元素
1:jsp页面 accessWeb.jsp
<body>
取得Map类型的request,response,application,真实类型的HttpServletRequest,HttpServletResponse,ServletContext的引用:
<ol>
<li>前三者:依赖于容器</li>
<li>前三者:IOC</li>
<li>后三者:依赖于容器</li>
<li>后三者:IOC</li>
</ol>
<br/>
<form name="f" action="" method="post">
用户名:<input type="text" name="name"/>
密码:<input type="text" name="password"/>
<br/>
<input type="button" value="submit1" onclick="javascript:document.f.action='login/login1';document.f.submit();"/>
<input type="button" value="submit2" onclick="javascript:document.f.action='login/login2';document.f.submit();"/>
<input type="button" value="submit3" onclick="javascript:document.f.action='login/login3';document.f.submit();"/>
<input type="button" value="submit4" onclick="javascript:document.f.action='login/login4';document.f.submit();"/>
</form>
</body>
2:struts.xml配置
<package name="login" extends="struts-default" namespace="/login">
<action name="login*" class="com.capinfotech.web.action.LoginAction{1}">
<result name="success">/user_login_success.jsp</result>
</action>
</package>
3:LoginAction的内容
LoginAction1.java:
public class LoginAction1 extends ActionSupport{
private static final long serialVersionUID = 7964423947654287569L;
private Map request;
private Map session;
private Map application;
public LoginAction1() {
request = (Map)ActionContext.getContext().get("request");
session = ActionContext.getContext().getSession();
application = ActionContext.getContext().getApplication();
}
public String execute() {
request.put("r1", "r1");
session.put("s1", "s1");
application.put("a1", "a1");
return SUCCESS;
}
}
LoginAction2.java:
public class LoginAction2 extends ActionSupport implements RequestAware, SessionAware, ApplicationAware{
private static final long serialVersionUID = 6409381047458882347L;
private Map<String, Object> request;
private Map<String, Object> session;
private Map<String, Object> application;
//DI dependency injection
//IOC(inverse of control)
public void setRequest(Map<String, Object> request) {
this.request = request;
}
public void setSession(Map<String, Object> session) {
this.session = session;
}
public void setApplication(Map<String, Object> application) {
this.application = application;
}
public String execute() {
request.put("r1", "r1");
session.put("s1", "s1");
application.put("a1", "a1");
return SUCCESS;
}
}
LoginAction3.java:
public class LoginAction3 extends ActionSupport{
private static final long serialVersionUID = -1849003438117251182L;
private HttpServletRequest request;
private HttpSession session;
private ServletContext application;
public LoginAction3() {
request = ServletActionContext.getRequest();
session = request.getSession();
application = session.getServletContext();
}
public String execute() {
request.setAttribute("r1", "r1");
session.setAttribute("s1", "s1");
application.setAttribute("a1", "a1");
return SUCCESS;
}
}
LoginAction4.java:
public class LoginAction4 extends ActionSupport implements ServletRequestAware{
private static final long serialVersionUID = -9142255841666204739L;
private HttpServletRequest request;
private HttpSession session;
private ServletContext application;
public String execute() {
request.setAttribute("r1", "r1");
session.setAttribute("s1", "s1");
application.setAttribute("a1", "a1");
return SUCCESS;
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
this.session = request.getSession();
this.application = session.getServletContext();
}
}
4: user_login_success.jsp
<body>
User Login Success!
<br/>
<s:property value="#request.r1"/> | <%=request.getAttribute("r1") %> <br/>
<s:property value="#session.s1"/> | <%=session.getAttribute("s1") %> <br/>
<s:property value="#application.a1"/> | <%=application.getAttribute("a1") %> <br/>
<s:property value="#attr.a1"/><br/>
<s:property value="#attr.s1"/><br/>
<s:property value="#attr.r1"/><br/>
<s:debug />
</body>
5: 程序显示的结果
User Login Success!
r1 | r1
s1 | s1
a1 | a1
a1
s1
r1
6:总结
最常用的是第二种,即LoginAction2.java的内容,实现了相应的接口,当程序运行时,如果发现该类实现了这几个接口,如RequestAware接口,那么系统会直接把此时的request注入,有Spring的DI和IOC思想
1:jsp页面 accessWeb.jsp
<body>
取得Map类型的request,response,application,真实类型的HttpServletRequest,HttpServletResponse,ServletContext的引用:
<ol>
<li>前三者:依赖于容器</li>
<li>前三者:IOC</li>
<li>后三者:依赖于容器</li>
<li>后三者:IOC</li>
</ol>
<br/>
<form name="f" action="" method="post">
用户名:<input type="text" name="name"/>
密码:<input type="text" name="password"/>
<br/>
<input type="button" value="submit1" onclick="javascript:document.f.action='login/login1';document.f.submit();"/>
<input type="button" value="submit2" onclick="javascript:document.f.action='login/login2';document.f.submit();"/>
<input type="button" value="submit3" onclick="javascript:document.f.action='login/login3';document.f.submit();"/>
<input type="button" value="submit4" onclick="javascript:document.f.action='login/login4';document.f.submit();"/>
</form>
</body>
2:struts.xml配置
<package name="login" extends="struts-default" namespace="/login">
<action name="login*" class="com.capinfotech.web.action.LoginAction{1}">
<result name="success">/user_login_success.jsp</result>
</action>
</package>
3:LoginAction的内容
LoginAction1.java:
public class LoginAction1 extends ActionSupport{
private static final long serialVersionUID = 7964423947654287569L;
private Map request;
private Map session;
private Map application;
public LoginAction1() {
request = (Map)ActionContext.getContext().get("request");
session = ActionContext.getContext().getSession();
application = ActionContext.getContext().getApplication();
}
public String execute() {
request.put("r1", "r1");
session.put("s1", "s1");
application.put("a1", "a1");
return SUCCESS;
}
}
LoginAction2.java:
public class LoginAction2 extends ActionSupport implements RequestAware, SessionAware, ApplicationAware{
private static final long serialVersionUID = 6409381047458882347L;
private Map<String, Object> request;
private Map<String, Object> session;
private Map<String, Object> application;
//DI dependency injection
//IOC(inverse of control)
public void setRequest(Map<String, Object> request) {
this.request = request;
}
public void setSession(Map<String, Object> session) {
this.session = session;
}
public void setApplication(Map<String, Object> application) {
this.application = application;
}
public String execute() {
request.put("r1", "r1");
session.put("s1", "s1");
application.put("a1", "a1");
return SUCCESS;
}
}
LoginAction3.java:
public class LoginAction3 extends ActionSupport{
private static final long serialVersionUID = -1849003438117251182L;
private HttpServletRequest request;
private HttpSession session;
private ServletContext application;
public LoginAction3() {
request = ServletActionContext.getRequest();
session = request.getSession();
application = session.getServletContext();
}
public String execute() {
request.setAttribute("r1", "r1");
session.setAttribute("s1", "s1");
application.setAttribute("a1", "a1");
return SUCCESS;
}
}
LoginAction4.java:
public class LoginAction4 extends ActionSupport implements ServletRequestAware{
private static final long serialVersionUID = -9142255841666204739L;
private HttpServletRequest request;
private HttpSession session;
private ServletContext application;
public String execute() {
request.setAttribute("r1", "r1");
session.setAttribute("s1", "s1");
application.setAttribute("a1", "a1");
return SUCCESS;
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
this.session = request.getSession();
this.application = session.getServletContext();
}
}
4: user_login_success.jsp
<body>
User Login Success!
<br/>
<s:property value="#request.r1"/> | <%=request.getAttribute("r1") %> <br/>
<s:property value="#session.s1"/> | <%=session.getAttribute("s1") %> <br/>
<s:property value="#application.a1"/> | <%=application.getAttribute("a1") %> <br/>
<s:property value="#attr.a1"/><br/>
<s:property value="#attr.s1"/><br/>
<s:property value="#attr.r1"/><br/>
<s:debug />
</body>
5: 程序显示的结果
User Login Success!
r1 | r1
s1 | s1
a1 | a1
a1
s1
r1
6:总结
最常用的是第二种,即LoginAction2.java的内容,实现了相应的接口,当程序运行时,如果发现该类实现了这几个接口,如RequestAware接口,那么系统会直接把此时的request注入,有Spring的DI和IOC思想
相关文章推荐
- 在Struts2中访问Web页面元素request、response、session、application的四种方法
- Struts 2 访问session request application 对象的方式
- Struts2访问web元素(包括:request,session,application和HttpServletRequest,HttpServletSession, HttpServletContext)的4种方法
- Struts2访问web元素(包括:request,session,application)的4种方法
- Struts中访问或添加request/session/application属性 .
- Struts 2 访问session request application 对象的方式
- Struts2中request、response、session、application对象的访问方法
- Struts 2访问Servlet API 使用request,session,application
- Struts 2 访问session request application 对象的方式
- struts2访问或添加request/session/application属性
- STRUTS获取REQUEST,SESSSION,APPLICATION的三种方法
- 关于struts2中对 request /session/ application 的访问
- Struts中取得Request和Response、Session的方法
- struts2 action中获取request session application的方法
- struts2下velocity做视图如何访问request,session等内置对象,如:原来webwork的$req
- Struts 中获取session、request及response对象的方法(http://lieva.iteye.com/blog/1328513)
- Struts2访问request,session,application的四种方式
- [Struts2] 如何访问或添加request/session/application属性, 以及获取对象.
- Struts2访问request、session、application对象
- struts2中获得request,session.application的四种方法 在Struts2的Action中获得request response session几种方法