Struts2中传统Servlet API类型被处理成Map类型
访问更方便
不依赖传统Servlet API类型——解耦合
关于ActionContext
所在包com.opensymphony.xwork2
ActionContext被称为Action上下文或Action环境
ActionContext提供每个Action运行时与之相关的所有信息
访问Servlet API
ActionContext类提供getContext()方法获得实例
通过ActionContext类的实例可获得Map类型的请求、会话 等
通过put()和get()方法在Map类型的对象中存取数据
示例:
package cn.web.action; import java.util.Map; import cn.web.entity.User; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class LoginJavabeanAction extends ActionSupport { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String execute() throws Exception { if(user==null){ return "login"; } System.out.println(user.getLoginName()); if("admin".equals(user.getLoginName())){ //关于ActionContext //获取session Map<String,Object> session = ActionContext.getContext().getSession(); session.put("userSession", user); //获取application,示例设置一个计数 Map<String,Object> application = ActionContext.getContext().getApplication(); if(application.get("num") == null){ application.put("num", 1); }else{ Integer num = (Integer) application.get("num"); application.put("num", num+1); } //获取request,注意获取方式 Map<String,Object> request = (Map<String, Object>) ActionContext.getContext().get("request"); request.put("address", "中国"); //获取parameter,请求的参数只能获得,不能增加 Map<String,Object> parameters = ActionContext.getContext().getParameters(); //注意parameters.get()与 request.getParameterValues()类似 //获得如checkbox类(名字相同,但值有多个)的数据。 //接收 对象 的数组 String[] name = (String[]) parameters.get("user.loginName"); System.out.println("user.loginName为:"+name[0]); //禁止这样操作,增加参数 parameters.put("access", "通过"); /* 在页面中获取保存数据提倡的方式 (#作用域) <s:property value="#request.loginAccess"/> */ return "admin"; }else if("comm".equals(user.getLoginName())){ return "comm"; }else{ return "login"; } } }
------------------------------------------------------------------------------------
获得Servlet API对象的方式
一、通过ActionContext获得
如上面的示例就是这样
自己获得request: ac.get("request")
自己获得session: ac.getContext.getSession()
二、实现接口
让“别人(如struts容器)”为你提供Servlet API的对象
通过实现相应接口获得Servlet API对象
获得parameter需要实现ParameterAware接口
获得request需要实现RequestAware接口
获得session需要实现SessionAware接口
获得application需要实现ApplicationAware接口
( LoginAtion 是交给Struts容器管理的,
当LoginAtion实现了上面的接口,Struts容器会往这些接口预定义的方法里注入它需要的相应的值,
是由servletConfig拦截器,将源于Servlet API的各种对象注入到Action 的。
从而也就能使用 servletApi 的对象了
)
public class LoginAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware { Map<String,Object> request; Map<String,Object> session; Map<String,Object> application; //这样就获得了request,session以及application(servletApi的对象), //然后就可以在execute()方法里使用servletApi的对象了 /* 省略部分代码 */ @Override public void setApplication(Map<String, Object> request) { this.request = request; } @Override public void setSession(Map<String, Object> session) { this.session = session; } @Override public void setRequest(Map<String, Object> application) { this.application = application; } /* 省略部分代码 */ }
相关推荐
2、使用struts2提供的ActionContext类直接获取Servlet API。 在同一个项目中,如果既用到servlet又用了struts框架,运行项目时可能无法正常使用servlet,解决办法如下: 该类是定义了一个过滤器,当既用到struts2...
详解Struts2中Action访问Servlet API的几种方法 在通常的web开发中Request和Response对象比较常见,但在Struts2框架中由于Action能与JSP页面进行数据交互,所以通常都不会用到这两个对象。如果想在Struts2程序中用到...
3 Servlet依赖方面的对比:Struts 1 Action依赖于Servlet API,因为Struts 1 Action的execute方法中有HttpServletRequest和HttpServletResponse方法。Struts 2 Action不再依赖于Servlet API,从而允许Action脱离Web...
本文将详细解释 Spring、Struts2、Hibernate 面试题中的知识点,涵盖了 MVC 模式、Struts1.2 和 Struts2.0 的区别、单例模式、Servlet 依赖、可测试性、项目中使用 SSH 的原因、Struts 和 Spring 的继承关系、实现...
Struts2 是一个非常优秀的MVC框架,基于Model2 设计模型 由传统Struts1和WebWork两个经典框架发展而来 Struts2框架=Struts2+XWork Strust2 核心功能 允许POJO(Plain Old Java Objects,简单javabean对象,没有继承,...
作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...
中文参考手册,spring3.1_帮助文档_英文,Struts 1.3.8 API,Struts 2 Core 2.0.6 API ,StrutsAPI 1.2.7,Tomcat5.5_Servlet_Jsp_API文档,Validator,VBScript_使用手册,XDoclet 1.2.3 API,XML指南,网页设计_...
Struts 2 标签库(文档手册) Tags-API-CLSW-JSP <%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-...
在Struts2中,操作Servlet API 的BaseAction 包括获取Request对象、获取Session对象、获取ServletContext对象、获取Response对象
书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。书中...
java_ee_api_中英文对照版.chm jBPM 4.4 API.chm jdk 1.7_api_doc.CHM JDK_API_1_6_zh_CN.CHM jquery1.7 中文手册.chm JQuery_1.4_API.CHM jQuery文档.chm JSP API.chm Jsp帮助文档.chm JSP语法.chm Linux基础命令...
Struts2不在建议我们使用原生的servletAPI来获取参数,这样做的目的是事项Struts2的action与servlet进行解耦,可以在日后更加方便的对action类进行测试。 Struts2获取参数的三种办法: (1)属性驱动方式 (2)...
│ Servlet API[China].chm │ Servlet-API.chm │ servlet.chm │ Spring-Reference_zh_CN.chm │ spring2.5.5_API.chm │ Spring3.0.2-RELEASE-API.chm │ Struts2.chm │ struts2中文教程.chm │ struts2标签.chm...
8.6.1 实现与ServletAPI的交互 86.2 域模型DomainModel 86.3 驱动模型ModelDriven 8.7 实战检验 8.7.1 Struts2处理表单数据 8.7.2 使用M印类型的request、session、application 8.8 疑难解惑 8.8.1 Struts Prepare ...
Struts2 Struts2核心控制流程、Ognl、Action、Interceptor、Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用技巧(输入验证、消息国际化、文件上传和下载、防止重复提交等)。 熟练掌握Struts2核心...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》重点讲解了Struts 2、Speing和HIbernate框架的基础知识和高级技术,如Sruts 2中的*、类型转换、国际化和标签等,HIbe rna{e的会话、0/R映射和...
struts1.2 Action依赖于Servlet API,因为当一个Action被调用时HttpServletRequest和HttpServletResponse被传递给execut方法。 struts2.0 Action不依赖于容器,允许Action脱离容器单独测试。如果需要,Struts2 Action...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》重点讲解了Struts 2、Speing和HIbernate框架的基础知识和高级技术,如Sruts 2中的*、类型转换、国际化和标签等,HIbe rna{e的会话、0/R映射和...