博客
关于我
强烈建议你试试无所不能的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

你可能感兴趣的文章
[BZOJ1878][SDOI2009]HH的项链
查看>>
试用期三个月的状态
查看>>
linux内核启动流程[转]
查看>>
扯在前面的话
查看>>
创建odoo数据库时出现错误原因
查看>>
Scrum Meeting day 1
查看>>
windows程序内部运行机制
查看>>
Eclipse 3.6版本正式发布 扩展诸多平台特性
查看>>
微信小程序如何引入外部字体库iconfont的图标
查看>>
hdu 1698(线段树)
查看>>
集合遍历
查看>>
JVM--常见的虚拟机回收算法
查看>>
Linux备忘录:创建IDEA快捷方式
查看>>
CI 的一些方法
查看>>
oracle忽略大小写
查看>>
EST
查看>>
redhat6.7 yum网络源配置
查看>>
百度网络监控实战:NetRadar横空出世(下)
查看>>
javascript往textarea追加内容
查看>>
WeX5触发事件
查看>>