Struts 2对Servlet API进行了封装,是业务层更加独立,如果需要调用Request、Response等Servlet API有两种途径

利用ServletActinContext的静态方法

Struts 2利用ServletActinContext来维护Servlet对象,ServletActinContext利用ThreadLocal来维护不同线程的Servlet对象,因此可以使用ServletActinContext来获得Servlet的各种对象

  1. import org.apache.struts2. ServletActinContext;
  2. public class LoginActin extends ActionSupport{
  3.  
  4. public String login(){
  5. HttpServletRequest request = ServletActinContext.getRequest();
  6. HttpServletResponse response = ServletActinContext.getResponse();
  7. HttpServletContext context = ServletActinContext.getServletContext();
  8. HttpSession session = request.getSession();
  9. ……
  10. }
  11.  
  12. }

利用相关的Aware接口

Struts 2在实例化一个Action实例时,如果发现它实现了相关的Aware接口,会把相应的资源通过Aware接口方法注射进去,Aware接口其实是一种拦截器

Servlet API常用对象application、request、response、session对应的Aware接口分别为ServletContextAware、ServletRequestAware、ServletResponseAware、SessionAware

  1. public class ServletAwareActionextends ActionSupport implementsServletContextAware,ServletRequestAware,ServletResponseAware,SessionAware{
  2.  
  3. private HttpServletRequest request ;
  4. private HttpServletResponse response;
  5. private HttpServletContext application;
  6. private HttpSession session ;
  7.  
  8. //相应的setter方法
  9. public void setServletRequest(HttpServletRequest request ){
  10. this.request = request;
  11. }
  12. public void setServletResponse(HttpServletResponse response ){
  13. this.reponse = reponse;
  14. }
  15. public void setServletContext(HttpServletContext application ){
  16. this. application = application;
  17. }
  18. public void setSession(Map sessionValues){
  19. this.session = sessionValues;
  20. }
  21. //然后可以在Action中直接使用这些对象
  22. public String execute(){
  23. request.getRemoteAddr();
  24. response.getContentType()
  25. session.get(“account”);
  26. return SUCCESS;
  27. }
  28. }

Struts 2之Servlet API的更多相关文章

  1. Struts 2访问Servlet API

    在servlet中可以通过servlet API来获取Session,在Struts中如何获取Session呢? 解析:将用户名放入session 两种方案 1. 与Servlet API解耦的访问方 ...

  2. Struts 2 访问Servlet API的方式

    与Servlet API解耦的访问方式 与Servlet API耦合的访问方式 (tips:耦合既依赖) 1.    与Servlet API解耦的访问方式 2.     与Servlet API耦合 ...

  3. java:struts框架2(方法的动态和静态调用,获取Servlet API三种方式(推荐IOC(控制反转)),拦截器,静态代理和动态代理(Spring AOP))

    1.方法的静态和动态调用: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCT ...

  4. Struts 2读书笔记-----Action访问Servlet API

    Action访问Servlet API Struts2中的Action并没有和任何Servlet API耦合,这样框架更具灵活性,更易测试. 对于Web应用的控制器而言,不访问ServletAPI是几 ...

  5. Struts 2中访问Servlet API的几种方法小结

    1.使用ActionContext Action运行期间所用到的数据都保存在ActionContext中,例如session.客户端提交的参数等,ActionContext是Action的一个上下文对 ...

  6. struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  7. struts2访问servlet API

    搭建环境: 引入jar包,src下建立struts.xml文件 项目配置文件web.xml. web.xml: <?xml version="1.0" encoding=&q ...

  8. 关于Struts2自动装配和访问Servlet API

    自动装配 1.根据属性的getter和setter获取值  index.jsp <s:form action="hello" method="POST"& ...

  9. Action访问Servlet API的三种方法

    一.为什么要访问Servlet API ? Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试.但是对于Web控制器 ...

随机推荐

  1. [BZOJ 3456]城市规划

    Description 题库链接( bzoj 权限题,可以去 cogs 交♂ 题库链接2 求含有 \(n\) 个点有标号的简单无向联通图的个数.方案数对 \(1004535809(479\times ...

  2. ●POJ 1873 The Fortified Forest

    题链: http://poj.org/problem?id=1873 题解: 计算几何,凸包 枚举被砍的树的集合.求出剩下点的凸包.然后判断即可. 代码: #include<cmath> ...

  3. Orz

    OR: 说实话,感觉Virtual Judge挺好使的,至少到现在,Uva都没注册成功过QAQ,估计是校园网的问题 不得不说现在课越来越多,而且对于我们这种学校ACM才开展两年的来说,时间真的好有限, ...

  4. bzoj 1974: [Sdoi2010]代码拍卖会

    Description 随着iPig在P++语言上的造诣日益提升,他形成了自己一套完整的代 码库.猪王国想参加POI的童鞋们都争先恐后问iPig索要代码库.iPi g不想把代码库给所有想要的小猪,只想 ...

  5. bzoj4011[HNOI2015]落忆枫音 dp+容斥(?)

    4011: [HNOI2015]落忆枫音 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1125  Solved: 603[Submit][Statu ...

  6. Win7删除文件夹提示找不到该项目无法删除

    在使用win7操作系统的过程中,有一些朋友会遇到这种情况,因为某种不明原因,硬盘里面某一个文件夹无法删除,表现为在删除的时候,系统提示找不到该项目,即找不到该文件夹,就像它变成了幽灵一样,看得到却摸不 ...

  7. Windows10下配置python的环境变量

    从官网下载Windows下的python版本,一路按照默认进行安装. 安装之后配置环境变量的步骤如下: 1,点"我的电脑",右键选"属性". 2,选择" ...

  8. Python中高阶函数讲解

    高阶函数讲解 1. 常规高阶函数 递归函数 格式:def func_name(variable): '''__doc__'''#函数的说明文档 if 条件表达式:#限制递归退出值 pass retur ...

  9. Linux下双网卡Firewalld的配置流程

    实验室拟态存储的项目需要通过LVS-NAT模式通过LVS服务器来区隔内外网的服务,所以安全防护的重心则落在了LVS服务器之上.笔者最终选择通过firewalld放行端口的方式来实现需求,由于firew ...

  10. 关于ajax的content-download时间过慢问题的解决方案与思考

    前言:   做前端架构很久很久了,经常到我这里都是些棘手的问题,之前没有养成很好的记录问题的习惯,以后会努力成文,积累. 于是今天就有个这篇文章.关于ajax的content-download时间过慢 ...