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控制器 ...
随机推荐
- 正则表达式 exec 获取字符串中的汉字
要求:仅获取attr中的 “编辑发起状态的执行人表单” ,路径C:\fakepath\是不固定的,可以是C:\fakepath\hhh\hhhh\ 解决: var attr = C:\fakepath ...
- DIV+CSS实现左侧带三角形的提示框
实现效果
- [Linux 性能检测工具]VMSTAT
VMSTAT NAME: Vmstat: 报告虚拟内存统计 语法 : vmstat [-a] [-n] [-t] [-S unit] [delay [ count]] ...
- Mongodb Manual阅读笔记:CH4 管理
4 管理 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔 ...
- ln
文件描述符是相对进程而言的,一个文件可以有多个文件描述符,但只有一个inode,inode一样就是同一个文件,文件名不同也是同一个 硬链接 两个文件是指向同一个存储区,inode号一样,并没有开辟新的 ...
- Java 注释说明
注释 什么是注释呢?就是标注解释的意思,主要用来对Java代码进行说明.Java中有三种注释方式 (1):// :注释单行语句 示例: //定义一个值为10的int变量 int a = 10; (2) ...
- 非常不错的点餐系统应用ios源码完整版
该源码是一款非常不错的点餐系统应用,应用源码齐全,运行起来非常不错,基本实现了点餐的一些常用的功能,而且界面设计地也很不错,是一个不错的ios应用学习的例子,喜欢的朋友可以下载学习看看,更多ios源码 ...
- DevOps Workshop 研发运维一体化第一场(微软亚太研发集团总部)
准备了近两周,写了大量的操作手册,设计了大量的动手实验场景,终于在中关村的微软大厦完成了两天的DevOps培训. 最初报名160人,按照之前的培训经验,一般能到一半就不错了,没想到这次现场登记人员就超 ...
- 各种隐藏 WebShell、创建、删除畸形目录、特殊文件名、黑帽SEO作弊(转自核大大)
其实这个问题,经常有朋友问我,我也都帮大家解决了…… 但是现在这些现象越来越严重,而且手法毒辣.隐蔽.变态,清除了又来了,删掉了又恢复了,最后直接找不到文件了,但是访问网站还在,急的各大管理员.站长抓 ...
- [No000022]他们说:得诺贝尔奖到底有多难?