Struts2-访问Servlet API
2016-05-28 22:58
447 查看
一、ActionContext
服务器端保存数据的作用域为request、session、application,对应的Servlet API分别是HttpServletRequest、HttpSession、ServletContext。在Struts2中,我们可以使用ActionContext类获取以上对象ActionContext常用方法:
1、getContext():静态方法、获取当前ActionContext实例
2、getSession():返回一个模拟session作用域的Map对象
3、getApplication():返回一个模拟application作用域的Map对象
4、get(String key):传入参数”request”,可以返回一个模拟request作用域的Object类型对象
5、getParameters():返回一个Map对象,该对象中保存了浏览器上传的参数
使用示例(JavaBean方式):
登陆页面
<form action="servletLogin" method="post"> 用户名:<input type="text" name="user.loginname"/><br/> 用户密码:<input type="password" name="user.password" /><br/> <input type="submit" value="登陆" /> <input type="reset" value="重置" > </form> </body>
action配置
<action name="servletLogin" class="com.pb12.demo01.LoginAction" method="login"> <result>/jsp/12_使用ActionContext访问Servlet的API/result.jsp</result> </action>
action类
public class LoginAction extends ActionSupport { private User user; public String login() { //获取Session作用域对象 Map<String, Object> session = ActionContext.getContext().getSession(); //把用户登陆名存入session session.put("session_loginname", user.getLoginname()); //获取request作用域对象 Map<String, Object> request = (Map<String, Object>) ActionContext .getContext().get("request"); //将用户登录名放入request作用域 request.put("request_loginname", user.getLoginname()); //获取application对象 Map<String, Object> application = ActionContext.getContext().getApplication(); //将用户登录名放入application对象 application.put("application_loginname", user.getLoginname()); return SUCCESS; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
结果页面
<body> <!-- session作用域 --> session:<%=session.getAttribute("session_loginname") %><br/> <!-- request作用域 --> request:<%=request.getAttribute("request_loginname") %><br/> <!-- application作用域 --> application:<%=application.getAttribute("application_loginname") %> </body>
结果:
二、以IoC的方式实现
action类关键代码、其余代码同上public class LoginAction implements RequestAware, SessionAware, ApplicationAware { private Map<String, Object> request; private Map<String, Object> session; private Map<String, Object> application; private User user; @Override public void setApplication(Map<String, Object> arg0) { //注入appliction this.application = arg0; } @Override public void setSession(Map<String, Object> arg0) { //注入session this.session = arg0; } @Override public void setRequest(Map<String, Object> arg0) { //注入request this.request = arg0; } public String login() { //把用户登陆名存入session session.put("session_loginname", user.getLoginname()); //将用户登录名放入request作用域 request.put("request_loginname", user.getLoginname()); //将用户登录名放入application对象 application.put("application_loginname", user.getLoginname()); return "success"; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
基于此代码我们可以封装个BaseAction类用于继承,这样就不用每个Action类都写这些代码了
public class BaseAction extends ActionSupport implements RequestAware, SessionAware, ApplicationAware { //HttpServletRequest protected Map<String, Object> request; //HttpSession protected Map<String, Object> session; //application protected Map<String, Object> application; @Override public void setApplication(Map<String, Object> arg0) { this.application = arg0; } @Override public void setSession(Map<String, Object> arg0) { this.session = arg0; } @Override public void setRequest(Map<String, Object> arg0) { this.request = arg0; } }
三、ServletActionContext
Struts2提供了ServletActionContext来获取原始的Servlet API该对象提供了一些方法:
1、getRequest():获取HttpServletRequest对象
2、getResponse():获取HttpServletResponse对象
3、getServletContext():获取ServletContext对象
4、getPageContext():获取PageContext对象
相关文章推荐
- Struts - 标签库
- struts1.0于struts2.0的比较
- Struts2中关于namespace的学习心得
- Struts2----自定义action的学习心得
- HTTP Status 404 - There is no Action mapped for namespace [/] and action name [login!welcome] associ
- struts2
- SSH学习笔记---struts2 spring集成时action的class的值
- ssh--问题记录
- 文章标题 使用ajaxFileupload+struts2完成文件的上传以及回显到jsp的链接地址
- struts 学习笔记
- Struts2 的基本配置
- struts2框架架构流程
- struts2.0拦截器(实现未登录的用户不能访问系统的页面)(转)
- Struts2 面试题分析
- Struts2+jQuery+JSON实现异步交互
- 软件开发疑惑解答
- ajax ssh 整合
- 关于struts2框架学习
- struts2 @Action给方法注解
- struts2学习笔记