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

你可能感兴趣的文章
有效防止SQL注入漏洞
查看>>
Linux chown命令
查看>>
十、I/O流——4-输入、输出流体系
查看>>
十二、网络编程——4-基于UDP协议的网络编程
查看>>
异常处理与调试6 - 零基础入门学习Delphi55(完)
查看>>
if语句三种形式
查看>>
正则表达式之字符串验证
查看>>
codeblocks如何支持_tmain?可移植代码的编码推荐
查看>>
省市联动 填坑
查看>>
canvas写的一个小时钟demo
查看>>
原来今天是冬至
查看>>
又混了一天班
查看>>
九度oj 1006
查看>>
HDU6400-2018ACM暑假多校联合训练1004-Parentheses Matrix-构造
查看>>
最短路问题专题
查看>>
《Redis复制与可扩展集群搭建》看后感
查看>>
Jquery Mobile总结
查看>>
223. Rectangle Area
查看>>
spring boot + velocity中文乱码解决方式
查看>>
读罢泪两行,人生成长必须面对的10个残酷事实
查看>>