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控制器 ...
随机推荐
- 使用vs2010生成SQL Server 随机数据
前几天做测试数据,偶然发现vs2010中有一个生成随机数据的功能,记录下来,方便以后使用,确实非常的好用灵活快捷. 为了简单扼要的说明,下面我用一个实例来说明如何快捷使用: 在VS2010创建数据库项 ...
- 使用For XML PATH 会影响Cross Apply 返回
昨天在写语句的时候,遇到了一个现象,其实就是使用 Cross Apply做一个拼接字符串的而已.比如 CREATE TABLE GoodsCatalog (ID INT, Name )) CREATE ...
- JS实现别踩白块小游戏
最近有朋友找我用JS帮忙仿做一个别踩白块的小游戏程序,但他给的源代码较麻烦,而且没有注释,理解起来很无力,我就以自己的想法自己做了这个小游戏,主要是应用JS对DOM和数组的操作. 程序思路:如图:将游 ...
- 使用SQL语句创建SQL数据脚本(应对万网主机部分不支持导出备份数据)
1.查询待导出表Ad中的数据. SELECT * FROM [DB_Temp].[dbo].[Ad] 2.编写存储过程. --将表数据生成SQL脚本的存储过程 CREATE PROCEDURE dbo ...
- 设置输入域(input/textarea)中文本光标的位置
以前记录了一篇 将光标定位于输入框最右侧的实现方式 ,实现光标定位在文本的最末.这种需求往往在修改现有的文本.有时可能还需要把光标定位在首位,或者中间某个位置,这就需要实现一个更通用的方法. 这个方法 ...
- Python 变量类型
Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...
- Configure Ocserv on CentOS 6
Configure Ocserv on CentOS 6 Table of Contents 1. Install ocserv 2. Configure ocserv 3. How to host ...
- vim linux SecureCRT vim颜色的设置
解决方法: 1.首先按照环境一的方法检查一下,如果环境一的情况不在进行第二步. 2.修改终端TERM这个环境变量: 1)export命令 临时生效 # echo $TERM xterm #如果结果 ...
- 加快FineReport报表设计的几个心得体会
加快FineReport报表设计的几个心得体会 一.从远程服务器大批量取数进行表样设计时,最好按“列顺序”取一个“空的SQL语句”,这样可提高设计速度.否则每次设计时模板均要从远程读取数据,速度相当慢 ...
- OpenCV 之 边缘检测
上一篇 <OpenCV 之 图像平滑> 中,提到的图像平滑,从信号处理的角度来看,实际上是一种“低通滤波器”. 本篇中,数字图像的边缘,因为通常都是像素值变化剧烈的区域 (“高频”),故可 ...