Struts2访问Servlet API的三种方式
来源:互联网 发布:淘宝代理利润 编辑:程序博客网 时间:2024/05/21 06:37
1.利用ServletActionContext的静态方法(非IOC方式)
Struts2利用ServletActionContext类来维护Servlet对象,将Servlet对象放置在ServletActionContext中,虽然是通过静态方法获取,但仍然能够保证获取当前用户,当前线程的request,response,因为是利用ThreadLocal来维护当前线程的Servlet对象。
Action类:
public class LoginAction extends ActionSupport{ private static final long serialVersionUID = 1L; private String userName; private String userPassword; public String execute(){ HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); HttpSession session = request.getSession(); ServletContext context = ServletActionContext.getServletContext(); session.setAttribute("sess", "session"); request.setAttribute("req", "request"); context.setAttribute("app", "application"); return "success"; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPassword() { return userPassword; } public void setUserPassword(String userPassword) { this.userPassword = userPassword; } }
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts> <package name="main" extends="struts-default" namespace="/"> <global-results> <result name="login">/login.jsp</result> </global-results> <action name="loginAction" class="com.sbw.action.LoginAction"> <result name="success">/success.jsp</result> </action> </package></struts>
login.jsp
<body> <s:form action="loginAction"> <s:textfield name="user.userName" label="用户名"/> <s:password name="user.userPassword" label="密码"/> <s:submit value="登录"/> </s:form> </body>
success.jsp
<body> request:<s:property value="#request.req"/><br/> session:<s:property value="#session.sess"/><br/> application:<s:property value="#application.app"/><br/> </body>
结果:
2.利用ActionContext的静态方法(非IOC方式)
Struts2框架提供ActionContext类来访问Servlet API
Action类:
public class LoginAction extends ActionSupport{ private static final long serialVersionUID = 1L; private String userName; private String userPassword; public String execute(){ ActionContext context = ActionContext.getContext(); context.put("req","application"); context.getApplication().put("app","application"); context.getSession().put("sess","session"); return "success"; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPassword() { return userPassword; } public void setUserPassword(String userPassword) { this.userPassword = userPassword; } }
struts.xml、login.jsp、success.jsp 与方式一相同
结果:
3.相关Aware接口(IOC方式)
Struts2提供了Aware接口,实现了相关Aware接口的action能够感知相应的资源,Struts在实例化一个action时,如果发现它实现了相应的Aware接口,就会把相应的资源通过Aware接口方法注射进去,Servlet对象application,session,response,request对应的Aware接口分别为ServletContextAware,SessionAware,ServletResponseAware,ServletRequestAware。
Action类:
public class LoginAction extends ActionSupport implements ServletContextAware, ServletRequestAware,ServletResponseAware,SessionAware{ private static final long serialVersionUID = 1L; private String userName; private String userPassword; private ServletContext application; private HttpServletRequest request; private HttpServletResponse response; private Map<String, Object> session; public String execute(){ session.put("sess", "session"); request.setAttribute("req", "request"); application.setAttribute("app", "application"); return "success"; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPassword() { return userPassword; } public void setUserPassword(String userPassword) { this.userPassword = userPassword; } @Override public void setServletContext(ServletContext application) { // TODO Auto-generated method stub this.application = application; } @Override public void setServletRequest(HttpServletRequest request) { // TODO Auto-generated method stub this.request = request; } @Override public void setServletResponse(HttpServletResponse response) { // TODO Auto-generated method stub this.response = response; } @Override public void setSession(Map<String, Object> sessionValues) { // TODO Auto-generated method stub this.session = sessionValues; }}
struts.xml、login.jsp、success.jsp 与方式一相同
结果:
0 0
- Struts2访问Servlet API的三种方式
- Struts2访问Servlet API的三种方式
- Struts2访问Servlet API的三种方式
- Struts2访问Servlet API的三种方式
- Struts2访问Servlet的三种方式
- 【Struts2进阶】Struts2的Action访问Servlet API 的 三种方式
- struts2中,action访问servlet api的两种方式
- Struts2 访问 Servlet API 的四种方式
- Struts2中访问Servlet API的几种方式
- Struts2访问Servlet API的3种方式
- Struts2中Action访问Servlet API的三种方法
- Struts2中Action访问Servlet API的三种方法
- Struts2 访问 Servlet API 的三种方法
- Struts2中Action访问Servlet API的三种方法
- Struts2中Action访问Servlet API的三种方法
- Struts2中Action访问Servlet API的三种方法
- 关于struts2访问servlet API的三种方法详解
- struts2的servlet的API的三种方式
- dialog背景的层次
- Python-分发工具初探之-setuptools
- 继续xxx定律
- Codeforces 300A Array 【模拟】
- 程序员的自我修养——装载与进程
- Struts2访问Servlet API的三种方式
- String笔试题
- Python点滴(一)
- 关于lambda
- java枚举使用详解
- PHP学习笔记-PHP语言基础2
- 利用center(中点)来移动按钮
- 227. Basic Calculator II-基础计算器
- 在Android子线程中初始化handler后,为什么该子线程也能更新UI?