Struts2学习(五)访问web元素总结
2015-08-23 13:49
471 查看
struts2访问web元素(request、session、application)有4中方法,下面来介绍下这4种方法。前两种是取得Map类型request,session,application,后两种是真实类型 HttpServletRequest, HttpSession, ServletContext的引用。其中map类型中第二种方法是最常用的,其他三种知道就行一般不会用到。
当然,通过这些方法取得web元素,基本上只会用到session,大家知道request请求的参数可以通过属性自动接收,这是struts2的自己的特点。
第一种方式:
依赖于struts2容器,自己取值package com.bjsxt.struts2.user.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class LoginAction1 extends ActionSupport { 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; } }
第二种方式:
使用DI(依赖注入)IOC(控制反转)的思想自动获取,不用自己初始化,继承借口即可,元素会被自动初始化赋值。package com.bjsxt.struts2.user.action; import java.util.Map; import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.RequestAware; import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware, ApplicationAware { private Map<String, Object> request; private Map<String, Object> session; private Map<String, Object> application; //DI dependency injection //IoC inverse of control public String execute() { request.put("r1", "r1"); session.put("s1", "s1"); application.put("a1", "a1"); return SUCCESS; } @Override public void setRequest(Map<String, Object> request) { this.request = request; } @Override public void setSession(Map<String, Object> session) { this.session = session; } @Override public void setApplication(Map<String, Object> application) { this.application = application; } }
第三种方式:
package com.bjsxt.struts2.user.action; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class LoginAction3 extends ActionSupport { 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; } }
第四种方式:
package com.bjsxt.struts2.user.action; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.interceptor.ServletRequestAware; import com.opensymphony.xwork2.ActionSupport; public class LoginAction4 extends ActionSupport implements ServletRequestAware { 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; } @Override public void setServletRequest(HttpServletRequest request) { this.request = request; this.session = request.getSession(); this.application = session.getServletContext(); } }
当然,通过这些方法取得web元素,基本上只会用到session,大家知道request请求的参数可以通过属性自动接收,这是struts2的自己的特点。
相关文章推荐
- Maven下的SpringMVC MyBatis
- struts入门案例
- Java Map接口练习(Map和List及排序)
- spring配置文件-spring-config.xml
- java设计模式学习 ----- 工厂方法模式(Factory Method)
- java设计模式——工厂模式
- 阿里java笔试题像素处理问题
- 【Eclipse】安装subclipse的Eclipse插件
- Struts(20)拦截器
- java设计模式学习 ----- 单例模式(Singleton)
- Struts学习之值栈的理解
- MyEclipse中文乱码问题
- 关于Myeclipse导入ExtJS出错的问题解决:
- 更改myeclipse中的@author
- JAVA2游戏编程——Button(1)
- Struts学习之自定义结果集
- java对文件新建,删除,复制,剪切,重命名
- java线程池的使用,实现大量数据的更新操作
- 阿里巴巴2015秋季笔试研发工程师JAVA
- Struts学习之集成Ajax