博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2学习第五课 通过和ServletAPI耦合的方式获取WEB资源
阅读量:4883 次
发布时间:2019-06-11

本文共 4065 字,大约阅读时间需要 13 分钟。

与Servlet耦合的访问方式

直接访问Servlet API将使Action与环境Servlet环境耦合在一起,测试时需要有Servlet容器,不便对Action的单元测试。

直接获取HttpServletRequest对象:

servletActionContext.getRequest()

获取HttpSession:ServletActionContext.getRequest().getSession()

直接获取ServletContext对象:

servletActionContext.getServletContext()

通过实现ServletRequestAware,ServletContextAware等接口的方式。

看代码:

package logan.struts2.study;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;public class TestServletActionContextAction {        public String execute(){        HttpServletRequest request = ServletActionContext.getRequest();        HttpSession session = request.getSession();        ServletContext servletContext = ServletActionContext.getServletContext();                System.out.println("execute...");                return "success";    }}
/test-actionContext.jsp
/test-aware.jsp
/success.jsp

success.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"    pageEncoding="ISO-8859-1"%>
Insert title here

index.jsp

<%@page import="java.util.Date"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"    pageEncoding="ISO-8859-1"%>
Insert title here Test ActionContext
Test Aware
testServletActionContextAction <% if(application.getAttribute("date") == null){ application.setAttribute("date", new Date()); } %>

访问网页:http://localhost:8080/Struts2-3/index.jsp

下面看第二种方式:

看代码:

package logan.struts2.study;import javax.servlet.ServletContext;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;public class TestServletAwareAction implements ServletRequestAware,ServletContextAware,ServletResponseAware{    @Override    public void setServletResponse(HttpServletResponse response) {        // TODO Auto-generated method stub        System.out.println(response);            }    @Override    public void setServletContext(ServletContext context) {        // TODO Auto-generated method stub        System.out.println(context);            }    @Override    public void setServletRequest(HttpServletRequest request) {        // TODO Auto-generated method stub        System.out.println(request);            }        public String execute(){        return "success";    }}

struts.xml

/test-actionContext.jsp
/test-aware.jsp
/success.jsp
/success.jsp

index.jsp

<%@page import="java.util.Date"%><%@ page language="java" contentType="text/html; charset=ISO-8859-1"    pageEncoding="ISO-8859-1"%>
Insert title here Test ActionContext
Test Aware
testServletActionContextAction
estServletAware <% if(application.getAttribute("date") == null){ application.setAttribute("date", new Date()); } %>

运行输出结果:

org.apache.struts2.dispatcher.StrutsRequestWrapper@68614863org.apache.catalina.connector.ResponseFacade@1f70cda2org.apache.catalina.core.ApplicationContextFacade@428669b6

通过实现ServletXXXAware接口的方式可以有Struts2注入

需要的Servlet相关的对象

ServletRequestAware:注入HttpServletRequest对象(比较常用)

ServletContextAware:注入ServletContext对象(比较常用)

ServletReponseAware:注入HttpServletResponse对象

转载于:https://www.cnblogs.com/LoganChen/p/6972744.html

你可能感兴趣的文章
JComboBox实现当前所选项功能和JFrame窗口释放资源的dispose()方法
查看>>
tp 引入phpexcel 进行单表格的导入,在线浏览
查看>>
jsp基础速成精华讲解
查看>>
URL to Blob
查看>>
bzoj 3643: Phi的反函数
查看>>
BizTalk Server 2009 Beta初体验
查看>>
HTML中解决双击会选中文本的问题
查看>>
3.单例模式-singleton
查看>>
说说Vue.js的v-for
查看>>
Java第四次作业
查看>>
屏幕录像软件 (Desktop Screen Recorder)
查看>>
【codevs1069】关押罪犯
查看>>
iOS 设计模式之单例
查看>>
POJ 1664 放苹果
查看>>
Pthon3各平台的安装
查看>>
python编程快速上手之第11章实践项目参考答案(11.11.3)
查看>>
JS 之CLASS类应用
查看>>
一个tga工具
查看>>
64bit CPU 知识 (IA32,IA64,EM64T,AMD64)
查看>>
结构体 枚举
查看>>