Action访问Servlet API
访问Servlet API
1.通过ActionContent类访问Servlet API
ActionContext中访问Servlet API的几个常用的方法:
(1)Map getApplication():
返回模拟该应用的ServletContext实例,可以把这个Map实例就当做是ServletContext实例,首先它是Map同时他也是ServletContext实例;
(2)Map getParameters():
获取所有请求参数;
(3)Map getSession():
返回一个Map对象,该对象相当于HttpSession实例;
(4)setApplication(Map application):
传入一个Map实例,将该实例的key-value对转换成application属性中的属性名和属性值;
(5)setSession(Map session):
传入一个Map实例,将该实例的key-value对转换成session的属性名和值。
代码:
import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class Test_1Action extends ActionSupport{ //定义封装请求参数的成员变量 private String username; private String password; //setter、getter方法 public void setUsername(String username){ this.username = username; } public String getUsername(){ return this.username; } public void setPassword(String password){ this.password = password; } public String getPassword(){ return this.password; } //定义处理请求的execute方法 public String execute()throws Exception{ if(getUsername()!=null){ //使用ActionContext的静态方法getContext获取ActionContext的实例 ActionContext context = ActionContext.getContext(); //通过ActionContext实例设置application范围的属性 String name = (String)context.getApplication().get("name"); if(name==null){ //设置其为application范围的属性 context.getApplication().put("name", "jiagoushi_1"); } //通过ActionContext设置session范围的属性 context.getSession().put("username", username); //通过ActionContext设置request范围的属性 context.put("username", username); context.put("password", password); return SUCCESS; }else{ return ERROR; } } }
2.使用ServletActionContext工具类访问Servlet API
在ServletActionContext工具类中常用的几个方法(都是静态方法):
(1)PageContext getPageContext():
取得应用的PageContext对象;
(2)HttpServletRequest getRequest():
取得该应用的HttpServletRequest对象;
(3)HttpServletRequest getResponse():
取得该应用的HttpServletResponse对象;
(4)ServletContext getServletContext():
取得该应用的ServletContext对象。
代码:
import javax.servlet.http.Cookie; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class Test_1Action extends ActionSupport{ //定义封装请求参数的成员变量 private String username; private String password; //setter、getter方法 public void setUsername(String username){ this.username = username; } public String getUsername(){ return this.username; } public void setPassword(String password){ this.password = password; } public String getPassword(){ return this.password; } //定义处理请求的execute方法 public String execute()throws Exception{ if(getUsername()!=null){ //通过ServletActionContext获取并设置request ServletActionContext.getRequest().setAttribute("username", getUsername()); //通过ServletActionContext获取response并使用response添加Cookie Cookie cookie = new Cookie("user", getUsername()); cookie.setMaxAge(60*60); ServletActionContext.getResponse().addCookie(cookie); return SUCCESS; }else{ return ERROR; } } }
3.Action直接访问Servlet API
使用接口能够直接访问到Servlet API:
(1)ServletContextAware:
实现此接口的Action可直接访问Web应用的ServletContext实例;
(2)ServletRequestAware:
实现此接口的Action可直接访问Web应用的HttpServletRequest实例;
(3)ServletResponseAware:
实现此接口的Action可直接访问Web应用的HttpServletResponset实例;
代码:
import javax.servlet.ServletContext; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; import org.apache.struts2.util.ServletContextAware; import com.opensymphony.xwork2.ActionSupport; public class Test_1Action extends ActionSupport implements ServletContextAware,ServletRequestAware,ServletResponseAware{ //定义封装请求参数的成员变量 private String username; private String password; //用到的Web应用的实例 private ServletContext application; private HttpServletRequest request; private HttpServletResponse response; //setter、getter方法 public void setUsername(String username){ this.username = username; } public String getUsername(){ return this.username; } public void setPassword(String password){ this.password = password; } public String getPassword(){ return this.password; } //定义处理请求的execute方法 public String execute()throws Exception{ if(getUsername()!=null){ //直接使用Web应用的对象 //设置application范围的属性 if(application.getAttribute("user")==null){ application.setAttribute("user", "jiagoushi"); } //设置request范围的属性 request.setAttribute("username", getUsername()); request.setAttribute("password", getPassword()); //设置response范围的属性,并添加Cookie Cookie cookie = new Cookie("myCookie", getUsername()); cookie.setMaxAge(60*60); response.addCookie(cookie); return SUCCESS; }else{ return ERROR; } } //实现ServletContextAware接口必须实现的方法 @Override public void setServletContext(ServletContext application) { this.application = application; } //实现ServletRequestAware接口必须实现的方法 @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } //实现ServletResponseAware接口必须实现的方法 @Override public void setServletResponse(HttpServletResponse response) { this.response = response; } }
Action访问Servlet API的更多相关文章
- struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用
Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...
- struts2的action访问servlet API的三种方法
学IT技术,就是要学习... 今天无聊看看struts2,发现struts2的action访问servlet API的三种方法: 1.Struts2提供的ActionContext类 Object g ...
- Struts 2读书笔记-----Action访问Servlet API
Action访问Servlet API Struts2中的Action并没有和任何Servlet API耦合,这样框架更具灵活性,更易测试. 对于Web应用的控制器而言,不访问ServletAPI是几 ...
- Action访问Servlet API的三种方法
一.为什么要访问Servlet API ? Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试.但是对于Web控制器 ...
- 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用
Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...
- Struts2笔记--Action访问Servlet API
Web应用中通常需要访问的Servlet API就是HttpServletRequest.HttpSession和ServletContext,这三个接口分别代表JSP内置对象中的request.se ...
- Struts2学习笔记(五)——Action访问Servlet API
在Strut2中访问Servlet API有三种方式: 1.通过ActionContext访问Servlet API,推荐使用这种,但是这种方案它获取的不是真正的事Servlet API. 步骤: 1 ...
- 关于Struts2自动装配和访问Servlet API
自动装配 1.根据属性的getter和setter获取值 index.jsp <s:form action="hello" method="POST"& ...
- Action访问Servlet的API
Action访问Servlet的API_,主要访问如下: 1.>获取request对象 2.>获取请求参数 3.>获取response对象,可用于传递cookie 3.>获取作 ...
随机推荐
- Delphi中SQL批量插入记录
http://www.cnblogs.com/azhqiang/p/4050331.html 在进行数据库操作时, 我们经常会遇到批量向数据库中写入记录的情况. 在这里我提供3种操作方式: 1. ...
- smarty简单介绍
smarty简单介绍 示意图如下 简单介绍smarty.class.php类的大体内容,如下: <?php class Smarty //此类就是libs中的Smarty.class.php类 ...
- 安装Debian的正确方法
一.说明: Debian7.0.0的安装镜像文件有3个DVD,安装基本系统只用到第一个镜像文件,即DVD1 其它镜像文件是附带的软件包. 附Debian 7.0.0系统镜像下载地址: 32位:http ...
- 《OpenGL着色语言》理解点记录二
别人提到“OpenGL的处理管线”时,意味着什么? 准确的讲,应该是“OpenGL图形处理管线”,“管线”带有特定的顺序,在OpenGL中就是Graphics Processing Pipeline. ...
- Java笔试题解答和部分面试题
面试类 银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你 ...
- 解决Android SDK Manager更新下载速度慢
1.在Host文件加上 203.208.46.146 www.google.com 74.125.113.121 developer.android.com 203.208.46.146 dl.goo ...
- CasperJS基于PhantomJS抓取页面
CasperJS基于PhantomJS抓取页面 Casperjs是基于Phantomjs的,而Phantom JS是一个服务器端的 JavaScript API 的 WebKit. CasperJS是 ...
- 使用composer构建PHP框架怎么把Redis引入
选择 nrk/predis 作为 Redis 驱动,修改composer.json增加一个 require 项: "predis/predis": "*" 运行 ...
- 怎样用PHP制作验证码呢?
生成验证码无非就那么几个步骤,首先是获取一个随机字符串,然后创建一个布画,将生成的字符串写到布画上,我们还可以在布画上画线画雪花,现在帖一段生成验证码的代码. 源代码: <?phpsession ...
- 使用 Bootstrap Typeahead 组件
Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,功能很强大,但是,使用上并不太方便.这里我们将介绍一下这个组件的使用. 第一,简单使用 首先,最简单 ...