struts2 访问Web元素的4种方法
完整代码 :Struts12AccessWebElement.rar
第一种也是最常用的一种方法实现这几个接口
RequestAware,SessionAware,ApplicationAware
struts以依赖注入方式把request,session和application赋上值,看一下完整的代码
- package com.pengli.struts.parampack;
- 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 MyWinAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
- static int actionCount=0;
- private Map<String, Object> my_Request;
- private Map<String, Object> session;
- private Map<String, Object> application;
- public String add()
- {
- AddKey();
- return "add";
- }
- @Override
- public void setRequest(Map<String, Object> arg0) {
- // TODO Auto-generated method stub
- my_Request=arg0;
- }
- @Override
- public void setApplication(Map<String, Object> arg0) {
- // TODO Auto-generated method stub
- application=arg0;
- }
- @Override
- public void setSession(Map<String, Object> arg0) {
- // TODO Auto-generated method stub
- session = arg0;
- }
- private void AddKey()
- {
- ++actionCount;
- my_Request.put("a1", "Two"+actionCount);
- ++actionCount;
- session.put("a2", "Two"+actionCount);
- ++actionCount;
- application.put("a3", "Two"+actionCount);
- }
- }
第二种方式是实现ServletRequestAware接口
得到request接口后,再根据 request的方法去得到session和application
- package com.pengli.struts.parampack;
- 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 MyWinAction3 extends ActionSupport implements ServletRequestAware {
- private HttpServletRequest request;
- private HttpSession session;
- private ServletContext application;
- public String add() {
- setAttribute();
- return "add";
- }
- @Override
- public void setServletRequest(HttpServletRequest arg0) {
- // TODO Auto-generated method stub
- request=arg0;
- session=request.getSession();
- application=session.getServletContext();
- }
- private void setAttribute() {
- request.setAttribute("a1", "ThreeA1");
- session.setAttribute("a2", "ThreeA2");
- application.setAttribute("a3", "ThreeA3");
- }
- }
第三种方式和第二种有点像,是用ServletActionContext得到request再得到sesion和application
- package com.pengli.struts.parampack;
- 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 MyWinAction4 extends ActionSupport{
- private HttpServletRequest request;
- private HttpSession session;
- private ServletContext application;
- public String add(){
- getInfo();
- setAttribute();
- return "add";
- }
- private void getInfo()
- {
- request = ServletActionContext.getRequest();
- session = request.getSession();
- application = session.getServletContext();
- }
- private void setAttribute()
- {
- request.setAttribute("a1", "FourA1");
- session.setAttribute("a2", "FourA2");
- application.setAttribute("a3", "FourA3");
- }
- }
最后一种方法是通过ActionContext得到相应的参数
- package com.pengli.struts.parampack;
- import java.util.Map;
- import com.opensymphony.xwork2.ActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class MyWiAction extends ActionSupport {
- private UserModel user;
- public String add1()
- {
- if(user == null)
- {
- this.addFieldError("user", "user object is null");
- return ERROR;
- }
- if(user.getName()== null||user.getAge() == null)
- {
- this.addFieldError("name", "name is null");
- this.addFieldError("age", "age is null");
- return ERROR;
- }
- System.out.println(user.getAge());
- System.out.println(user.getName());
- return "add1";
- }
- static int actionCount=0;
- private Map request1;
- private Map session1;
- private Map application1;
- public String add()
- {
- request1 = (Map)ActionContext.getContext().get("request");
- session1=ActionContext.getContext().getSession();
- application1 = ActionContext.getContext().getApplication();
- AddKey();
- return "add";
- }
- @Override
- public String execute() throws Exception {
- // TODO Auto-generated method stub
- return super.execute();
- }
- public String add2()
- {
- return "add2";
- }
- public String add3()
- {
- return "add3";
- }
- private void AddKey()
- {
- ++actionCount;
- request1.put("a1", "a1haha"+actionCount);
- ++actionCount;
- session1.put("a2", "a2haha"+actionCount);
- ++actionCount;
- application1.put("a3", "a3haha"+actionCount);
- }
- public String edit()
- {
- return "edit";
- }
- public UserModel getUser() {
- return user;
- }
- public void setUser(UserModel user) {
- this.user = user;
- }
- }
再看一下web页面如何访问这些元素
- <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <%@ taglib uri="/struts-tags" prefix="s" %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>My JSP 'Oneaddok.jsp' starting page</title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- <!--
- <link rel="stylesheet" type="text/css" href="styles.css">
- -->
- </head>
- <body>
- This is my JSP page. <br>
- <s:property value="#request.a1" />|<%= request.getAttribute("a1") %> <br/>
- <s:property value="#session.a2" />|<%= session.getAttribute("a2") %> <br/>
- <s:property value="#application.a3" />|<%= application.getAttribute("a3") %> <br/>
- </body>
- </html>
再看一下struts.xml
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
- "http://struts.apache.org/dtds/struts-2.3.dtd">
- <struts>
- <!-- Add packages here -->
- <constant name="struts.devMode" value="true" />
- <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
- <package name="default1" namespace="/" extends="struts-default">
- <action name="One*1" class="com.pengli.struts.parampack.MyWiAction" method="{1}">
- <result name ="{1}">
- /Oneaddok.jsp
- </result>
- <result name="error">
- /errorpage.jsp
- </result>
- </action>
- <action name="One*2" class="com.pengli.struts.parampack.MyWinAction2" method="{1}">
- <result name ="{1}">
- /Oneaddok.jsp
- </result>
- <result name="error">
- /errorpage.jsp
- </result>
- </action>
- <action name="One*3" class="com.pengli.struts.parampack.MyWinAction3" method="{1}">
- <result name ="{1}">
- /Oneaddok.jsp
- </result>
- <result name="error">
- /errorpage.jsp
- </result>
- </action>
- <action name="One*4" class="com.pengli.struts.parampack.MyWinAction4" method="{1}">
- <result name ="{1}">
- /Oneaddok.jsp
- </result>
- <result name="error">
- /errorpage.jsp
- </result>
- </action>
- </package>
- </struts>
完整代码 :Struts12AccessWebElement.rar
struts2 访问Web元素的4种方法的更多相关文章
- Struts2 访问web元素
访问web元素的四种方法(耦合,依赖注入).(耦合,非依赖注入).(非耦合,依赖注入).(非耦合,非依赖注入) 耦合:可以得到HttpServletResponse,HttpServletReques ...
- Struts2中访问web元素的四种方式
Struts2中访问web元素的四种方式如下: 通过ActionContext来访问Map类型的request.session.application对象. 通过实现RequestAware.Sess ...
- Struts2访问web元素的各种方法
1.通过RequestAware,SessionAware,ApplicationAware获取: 在Struts2中不能直接访问Request,Session,Application元素,但是可以使 ...
- struts2获取web元素的方式和方法
获取web资源的方式按是否与servlet耦合可分为两种,再细分按照依赖方式又有两种即 依赖容器 和 依赖注入 什么是依赖容器 就是依赖 ActionContext或者ServletActionC ...
- Struts2学习---简单的数据校验、访问Web元素
1.简单的数据校验 在action里面我们已经给出了一个数据校验: public String execute() { if(user.getUsername().equals("usern ...
- Struts2之web元素访问与模板包含与默认Action使用
上一篇为大家介绍了如何使用Action进行参数接收,以及简单的表单验证,本篇为大家介绍一下关于Action访问web元素的三种方式(request.session.application):模板包含( ...
- struts2的action访问servlet API的三种方法
学IT技术,就是要学习... 今天无聊看看struts2,发现struts2的action访问servlet API的三种方法: 1.Struts2提供的ActionContext类 Object g ...
- Tomcat系列(11)——Tomcat 部署web应用的4种方法
核心内容 1.在Tomcat中有四种部署Web应用的方式,分别是: (1)利用Tomcat自动部署(项目直接拷贝OR WAR包拷贝 到webapps下) (2)利用控制台进行部署(tomcat的man ...
- Action访问Servlet API的三种方法
一.为什么要访问Servlet API ? Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试.但是对于Web控制器 ...
随机推荐
- 定义返回Block的函数
鉴于Block与函数的相似性,先从返回函数指针的函数入手 返回函数指针的函数 int fun1(int arg){ return arg + 1;}int fun2(int arg){ return ...
- CSS之旅——第二站 如何更深入的理解各种选择器
上篇我们说了为什么要使用css,这篇我们就从选择器说起,大家都知道浏览器会把远端过来的html解析成dom模型,有了dom模型,html就变成 了xml格式,否则的话就是一堆“杂乱无章”的string ...
- 用批处理来自动化项目编译及部署(附Demo)
阅读目录 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 介绍 详细 处理 结论 Demo下载 介绍 一个项目从立项开始,可能就已经根据公司的配置模板将 ...
- cookie工具类,解决servlet3.0以前不能添加httpOnly属性的问题
最近在解决XSS注入的问题,由于使用的servlet版本是2.5,不支持httpOnly的属性,故做了个工具类来实现cookie的httpOnly的功能.全类如下: /** * cookie工具类,解 ...
- /proc/interrupts 统计2.6.38.8与3.10.25差异
eth4进,eth5出 linux-3.10.25 67: 2 3 2 3 PCI-MSI-edge eth468: ...
- vlan协议及端口类型
一.VLAN协议 1.协议的应用 802.1Q协议,即Virtual Bridged Local Area Networks协议,主要规定了VLAN的实现. 2.协议结构 每一个支持802.1Q协议的 ...
- 2014 UESTC暑前集训数据结构专题解题报告
A.Islands 这种联通块的问题一看就知道是并查集的思想. 做法:从高水位到低水位依序进行操作,这样每次都有新的块浮出水面,可以在前面的基础上进行合并集合的操作.给每个位置分配一个数字,方便合并集 ...
- android代码优化----ListView中自定义adapter的封装(ListView的模板写法)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- struts2初体验
一:什么是struts2? Struts 2是一个MVC框架,以WebWork框架的设计思想为核心,吸收了Struts 1的部分优点 Struts 2拥有更加广阔的前景,自身功能强大,还对其他框架下开 ...
- hibernate save,update,saveorupdate方法有什么区别
save肯定是添加的时候用,update修改时候用,saveorupdate是添加或修改,如果真是这样save和update的存在就没意义了,我们直接saveorupdate就行了. save在添加用 ...