在Struts2的Action中获得request response session几种方法
在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式。分别为servlet 不相关的 非IoC 取得Request等对象的方式servlet 不相关的 IoC 取得Request等对象的方式servlet 相关的 非IoC 取得Request等对象的方式servlet 相关的 IoC 取得Request等对象的方式以下分别叙述。首先请看struts.xml文件文件内容:
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <package name="default" extends="struts-default">
- <action name="login" class="struts2.login.LoginAction">
- <result name="success" >result.jsp</result>
- </action>
- <action name="login2" class="struts2.login.Login2Action">
- <result name="success" >result.jsp</result>
- </action>
- <action name="login3" class="struts2.login.Login3Action">
- <result name="success" >result.jsp</result>
- </action>
- <action name="login4" class="struts2.login.Login4Action">
- <result name="success" >result.jsp</result>
- </action>
- </package>
- </struts>
其中的LoginAction,Login2Action,Login3Action,Login4Action分别对应四种方式的Action。
文件名:result.jsp 文件内容:
- <%@ page contentType="text/html; charset=gb2312" %>
- <%@ taglib uri="/struts-tags" prefix="s"%>
- <html>
- request 属性是 ${requestScope.attribute}<br>
- session 属性是 ${sessionScope.attribute}<br>
- application 属性是 ${applicationScope.attribute}<br>
- </html>
文件名:getrequest.jsp 文件内容:
- <%@ page contentType="text/html; charset=gb2312" %>
- <%@ taglib uri="/struts-tags" prefix="s"%>
- <html>
- <a href="login.action">servlet 不相关的 非IoC 取得Request等对象的方式</a><br>
- <a href="login2.action">servlet 不相关的 IoC 取得Request等对象的方式</a><br>
- <a href="login3.action">servlet 相关的 非IoC 取得Request等对象的方式</a><br>
- <a href="login4.action">servlet 相关的 IoC 取得Request等对象的方式</a><br>
- </form>
- </html>
然后分别叙述4种方式, 1,servlet 不相关的 非IoC 取得Request等对象的方式 这种方法先取得ActionContext,然后获取Map类型的request等对象
Action文件:
- package struts2.login;
- import java.util.Map;
- import com.opensymphony.xwork2.ActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class LoginAction extends ActionSupport{
- private ActionContext context;
- private Map request;
- private Map session;
- private Map application;
- @Override
- public String execute() throws Exception {
- // TODO Auto-generated method stub
- this.context = ActionContext.getContext();
- this.request = (Map)this.context.get("request");
- this.session = this.context.getSession();
- this.application = this.context.getApplication();
- this.request.put("attribute", "request value servlet 不相关的 非IoC ");
- this.session.put("attribute", "session value servlet 不相关的 非IoC ");
- this.application.put("attribute", "application value servlet 不相关的非IoC ");
- return SUCCESS;
- }
- }
2,servlet 不相关的 IoC 取得Request等对象的方式 这种方法,是实现特定的接口,由container来设定request等对象。请注意如下代码示例中红色文字的部分。
Action文件:
- package struts2.login;
- import java.util.Map;
- import org.apache.struts2.interceptor.ApplicationAware;
- import org.apache.struts2.interceptor.RequestAware;
- import org.apache.struts2.interceptor.SessionAware;
- import com.opensymphony.xwork2.ActionSupport;
- public class Login2Action extends ActionSupport
- implements RequestAware , SessionAware, ApplicationAware{
- private Map request;
- private Map session;
- private Map application;
- @Override
- public String execute() throws Exception {
- // TODO Auto-generated method stub
- this.request.put("attribute", "request value servlet 不相关的 IoC ");
- this.session.put("attribute", "session value servlet 不相关的 IoC ");
- this.application.put("attribute", "application value servlet 不相关的 IoC ");
- return SUCCESS;
- }
- @Override
- public void setRequest(Map<String, Object> arg0) {
- // TODO Auto-generated method stub
- this.request = arg0;
- }
- @Override
- public void setSession(Map<String, Object> arg0) {
- // TODO Auto-generated method stub
- this.session = arg0;
- }
- @Override
- public void setApplication(Map<String, Object> arg0) {
- // TODO Auto-generated method stub
- this.application = arg0;
- }
- }
3,servlet 相关的 非IoC 取得Request等对象的方式 这种方法可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。 取出方法,请参看代码中的蓝字部分。
Action文件:
- package struts2.login;
- import javax.servlet.ServletContext;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- import org.apache.struts2.ServletActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class Login3Action extends ActionSupport{
- private HttpServletRequest request;
- private HttpSession session;
- private ServletContext application;
- @Override
- public String execute() throws Exception {
- // TODO Auto-generated method stub
- this.request = ServletActionContext.getRequest();
- this.session = this.request.getSession();
- this.application = ServletActionContext.getServletContext();
- this.request.setAttribute("attribute", "request value servlet 相关的非IoC ");
- this.session.setAttribute("attribute", "session value servlet 相关的非IoC ");
- this.application.setAttribute("attribute", "application value servlet 相关的 非IoC ");
- return SUCCESS;
- }
- }
4,servlet 相关的 IoC 取得Request等对象的方式
这种方法也可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。 但是取出方法是通过接口进行实现,也就是由struts2的container来设定,请参看代码中的红字部分。
Action文件:
- package struts2.login;
- import javax.servlet.ServletContext;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- import org.apache.struts2.interceptor.ServletRequestAware;
- import org.apache.struts2.util.ServletContextAware;
- import com.opensymphony.xwork2.ActionSupport;
- public class Login4Action extends ActionSupport
- implements ServletRequestAware , ServletContextAware{
- private HttpServletRequest request;
- private HttpSession session;
- private ServletContext application;
- @Override
- public String execute() throws Exception {
- // TODO Auto-generated method stub
- this.request.setAttribute("attribute", "request value servlet 相关的 IoC ");
- this.session = this.request.getSession();
- this.session.setAttribute("attribute", "session value servlet 相关的 IoC ");
- this.application.setAttribute("attribute", "application value servlet 相关的 IoC ");
- return SUCCESS;
- }
- @Override
- public void setServletRequest(HttpServletRequest arg0) {
- // TODO Auto-generated method stub
- this.request = arg0;
- }
- @Override
- public void setServletContext(ServletContext arg0) {
- // TODO Auto-generated method stub
- this.application = arg0;
- }
- }
在Struts2的Action中获得request response session几种方法的更多相关文章
- struts2的action中获得request response session 对象
在struts2中有两种方式可以得到这些对象 1.非IoC方式 要获得上述对象,关键Struts 2中com.opensymphony.xwork2.ActionContext类.我们可以通过它的静态 ...
- struts2在action中获取request、session、application,并传递数据
假设仅仅是通过request.session.application传递数据,则不须要获取对应的对象也能够传递数据,代码例如以下: ScopeAction.java: package com.ithe ...
- Struts2的Action中获取request对象的几种方式?
通过ActionContext.getSession获取 通过ServletActionContext.getRequest()获取 通过SessionAware接口注入 通过ServletReque ...
- Struts2 的Action中取得请求参数值的几种方法
先看GetRequestParameterAction类代码: Java代码 public class GetRequestParameterAction extends ActionSupport ...
- 在Struts2的Action中取得请求参数值的几种方法
先看GetRequestParameterAction类代码: public class GetRequestParameterAction extends ActionSupport { priva ...
- Struts2 在Action中获取request、session、servletContext的三种方法
首页message.jsp: <body> ${requestScope.req }<br/> ${applicationScope.app }<br/> ${se ...
- Action中取得request,session的四种方式
Action中取得request,session的四种方式 在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象 ...
- 在struts2的action中操作域对象(request、session)
在struts2的Action中,操作域对象一共有三种方式: 1.ActionContext(与servelt API无关联): //相当于request ActionContext.getConte ...
- struts2 中属性驱动(其实就是struts2 action 中处理 request 的参数【old 方式servlet api 封装数据到javabean中(or beanutils)】),这里属性驱动是新方式
1.属性驱动 a\ 一般的set public class UserAction extends ActionSupport { private String username; private S ...
随机推荐
- Ajax中post后台.net MVC中Controller的路径问题。
今天使用ajax的post方法,去访问mvc的controller,url的传值是 "//ProductCatalog/PostShareInfo",发现无论如何都访问不到. 我实 ...
- 【Alpha】阶段第十次Scrum Meeting
[Alpha]阶段第十次Scrum Meeting 工作情况 团队成员 今日已完成任务 明日待完成任务 刘峻辰 登出接口 编写后端说明文档 赵智源 编写脚本实现测试的持续集成 前测试点页面跳转逻辑测试 ...
- oracle 语句之对数据库的表名就行模糊查询,对查询结果进行遍历,依次获取每个表名结果中的每个字段(存储过程)
语句的执行环境是plsql的sql窗口, 语句的目的是从整个数据库中的所有表判断 不等于某个字段的记录数 . 代码如下: declare s_sql clob:=''; -- 声明一个变量,该变量用于 ...
- C#窗体随机四则运算 (第四次作业)
---恢复内容开始--- 增量内容:1)处理用户的错误输入,比如输入字母或符号等,处理除法运算中分母为0的情况,处理结果为负数的情况,保证是小学水平不出现负数,比如不能出现5-8=-3这种情况:2)用 ...
- Beta Scrum Day 2 — 听说
听说
- 2017 Summary
几门课 基础电路与电子学 知道了一些二极管三极管的基本基本很基本的那种物理知识吧,但是毕竟我是从电信转专业过来的,所以说我内心就是逃避模电这样的课的.上课基本没听,后面只是死命复习了一周,考的还可以. ...
- jquery ajax 跨域问题
前言:关于跨域CORS 1.没有跨域时,ajax默认是带cookie的 2.跨域时,两种解决方案: 1)服务器端在filter中配置 详情:http://blog.csdn.net/wzl002/ar ...
- iOS- 什么是GitHub?关于它的自我介绍「初识 GitHub」
1 前言 我一直认为 GitHub 是程序员必备技能,程序员应该没有不知道 GitHub 的才对,我当初接触 GitHub 也大概工作了一年多才开始学习使用,我读者里很多是初学者,而且还有很多是在校大 ...
- 前端基础(http协议相关篇)
网络协议篇: 1.http请求过程 DNS解析——tcp三次握手——建立tcp连接后发起http请求——服务器响应http请求 ——浏览器得到资源——浏览器渲染 2.http报文 通用首部:可以出现在 ...
- ubuntu下安装lamp环境
使用普通用户来安装lamp环境: 1.安装apache: sudo apt-get install apache2