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

你可能感兴趣的文章
Spark学习笔记(一)
查看>>
虫食算
查看>>
10.从远程仓库中抓取与拉取
查看>>
在可编辑datagrid中,使用my97日期控件
查看>>
每日一小练——按字典顺序列出全部排列
查看>>
The 16th tip of DB Query Analyzer
查看>>
ftoa浮点型转换成字符串
查看>>
rabbitMQ学习(六)
查看>>
迅为4412开发板学习之win8下基础软件的安装和学习
查看>>
初识web2py
查看>>
script & scriptreplay
查看>>
Docker最全教程——从理论到实战(二)
查看>>
HDU4109-instruction agreement(差分约束-最长路+建立源点,汇点)
查看>>
Promise 练习
查看>>
用户登陆--判断输入密码错误3次后冻结该账号
查看>>
无监督学习:Deep Generative Mode(深度生成模型)
查看>>
搭建本地pip源
查看>>
学习进度条
查看>>
UserControl关闭
查看>>
ASP.NET浏览器定义文件及IE兼容模式
查看>>