Action的搭建及application、request、Session的运用 多种方法
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
添加测试的web资源
<%
application.setAttribute("app1", "测试的application") ;
application.setAttribute("app12", "测试的application2") ;
session.setAttribute("ses1", "测试的Session") ; request.setAttribute("req1", "测试的request") ; %>
<br>
<a href="testAction.action?user=tom" >测试Action类访问web资源</a>
<br><br><br>
<a href="testActionAware.action?user=tom&user=rose" >以Aware方式测试Action类访问web资源</a>
<br><br><br>
<a href="testServletAction.action?user=tom" >访问原生web资源</a>
<br><br><br>
<a href="testServletAware.action?user=tom" >以接口方式访问原生web资源</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
显示application的属性
<br>
app1=${app1 }
<br>
app12=${app12 }
<br>
appx=${applicationScope.appx } <br><br> 显示Session的属性
<br><br> ses1=${ses1 }
<br><br>
ses2=${ses2 } <br><br>
req1=${req1 }
<br><br>
req2=${req2 }
<br><br>
<%
String user = request.getParameter("user") ;
Object haha = session.getAttribute("ses1") ;
out.print("user = "+user) ;
out.print("<br><br> ") ;
out.print("haha = "+haha.toString()) ;
String ww = request.getParameter("ww") ;
%>
<br>
<%out.print("ww= "+ww) ; %>
</body>
</html>
Struts
<?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> <!-- 设置过滤的扩展名 -->
<constant name="struts.action.extension" value="do,action,,"></constant> <!-- 定义包 -->
<package name="index" extends="struts-default" namespace=""> <action name="testAction" class="com.hanqi.action.TestAction" method="testWeb"> <result type="redirect">test1.jsp</result> </action> <!-- 解耦的接口方式 -->
<action name="testActionAware" class="com.hanqi.TestActionAware" method="testAware"> <result >test1.jsp</result> </action> <!-- 以ServletActionContext方式 -->
<action name="testServletAction" class="com.hanqi.action.TestServletAction"
method="testServletAction"> <result >test1.jsp</result> </action> <action name="testServletAware" class="com.hanqi.action.TestServletActionAware"
method="testServletAware"> <result >test1.jsp</result> </action> </package> </struts>
package com.hanqi.action; 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; public class TestServletActionAware
implements ServletRequestAware, ServletContextAware { private ServletContext sc ;
private HttpServletRequest hsr ;
private HttpSession hs ; @Override
public void setServletContext(ServletContext arg0) {
// TODO 自动生成的方法存根
sc = arg0 ;
} @Override
public void setServletRequest(HttpServletRequest arg0) {
// TODO 自动生成的方法存根 hsr = arg0 ; hs = arg0.getSession() ; } public String testServletAware()
{
System.out.println("app1 = " + sc.getAttribute("app1")); sc.setAttribute("appx", "新的app"); System.out.println("ses1 = " + hs.getAttribute("ses1")); hs.setAttribute("ses2", "新的ses2"); hsr.setAttribute("req2", "新的req2"); System.out.println("user = " +hsr.getParameter("user")); return "success" ;
} }
package com.hanqi.action; import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; public class TestServletAction
{ public String testServletAction()
{
//访问原生的web资源 //1得到ServletContext,相当于application
ServletContext sc = ServletActionContext.getServletContext(); System.out.println("app1 = " + sc.getAttribute("app1")); sc.setAttribute("appx", "原生方式放入的内容"); //2访问Session
HttpServletRequest hsr = ServletActionContext.getRequest() ; HttpSession hs = hsr.getSession() ; System.out.println("ses1 = " + hs.getAttribute("ses1")); hs.setAttribute("ses2", "原生方式放入的Session"); //3访问request
System.out.println("req1 = " + hsr.getAttribute("req1")); hsr.setAttribute("req2", "原生方式放入的request"); //4访问parameter
System.out.println("user1 = " +hsr.getParameter("user") );
System.out.println("user2 = " +hsr.getParameter("user") ); return "success" ;
}
}
package com.hanqi.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; //解耦方式
public class TestAction
{ // public String testWeb()
{
System.out.println("hah"); //单例
//Action实例的上下文对象
ActionContext ac = ActionContext.getContext() ; //1获取application资源
Map<String, Object> mapApp = ac.getApplication() ; System.out.println("app1 = " + mapApp.get("app1")); System.out.println("app12 = " + mapApp.get("app12")); //放入新的键值对
mapApp.put("appx", "新放入的application") ; //2.获取Session的资源
Map<String, Object> mapses = ac.getSession() ; System.out.println("ses1=" + mapses.get("ses1")); //放入新的键值对
mapses.put("ses2", "新放入的session") ; //移除
mapses.remove("ses1") ; //3获取request资源
Map<String, Object> mapreq = (Map<String, Object>) ac.get("request"); System.out.println("req1 = " + mapreq.get("req1")); //放入新的键值对
mapreq.put("req2", "新放入的request") ; //4直接获取传递的参数
Map<String, Object> mappar = ac.getParameters() ; //参数值被封装成String数组
String[ ] array = (String[ ])mappar.get("user") ; for(String s : array)
{
System.out.println("user = " + s);
} //放入
mappar.put("ww", new String[ ]{("qweqeq")}) ; return "success" ;
} }
package com.hanqi; import java.util.Map; import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.ParameterAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware; public class TestActionAware implements ApplicationAware , SessionAware, RequestAware, ParameterAware{ private Map<String, Object> mapApp ;
private Map<String, Object> mapses ;
private Map<String, Object> mapreq ;
private Map<String, String[ ]> mappar ; //实现ApplicationAware接口的方法
//提供给Struts2进行调用 , 放入Application的数据集合
@Override
public void setApplication(Map<String, Object> arg0) {
// TODO 自动生成的方法存根 //接收
mapApp = arg0 ; } public String testAware()
{ //1访问application
System.out.println("app1 = " + mapApp.get("app1")); mapApp.put("app12", "以Aware方式放入的application") ; //2访问Session
//System.out.println("ses1 = " + mapses.get("ses1")); mapses.put("ses2", "以Aware方式放入的Session") ; //3访问request
System.out.println("req1 = " + mapreq.get("req1")); mapreq.put("req2", "以Aware方式放入的request") ; //4 访问Parameter
String[ ] str = mappar.get("user") ;
for(String t : str)
{
System.out.println("user = " + t);
}
return "success" ;
} @Override
public void setSession(Map<String, Object> arg0) {
// TODO 自动生成的方法存根 mapses = arg0 ; } @Override
public void setRequest(Map<String, Object> arg0) {
// TODO 自动生成的方法存根
mapreq = arg0 ;
} @Override
public void setParameters(Map<String, String[]> arg0) {
// TODO 自动生成的方法存根
mappar = arg0 ;
} }
Action的搭建及application、request、Session的运用 多种方法的更多相关文章
- Struts2初学 Struts2在Action获取内置对象request,session,application(即ServletContext)
truts2在Action中如何访问request,session,application(即ServletContext)对象???? 方式一:与Servlet API解耦的方式 可以使用 ...
- ASP.net Application及Session 的start end 方法总结
经过几天的摸索,试验,今天终于可以将Application及Session对象的Start和End方法做下总结了. Application_start: 第一个访问网站的用户会触发该方法. 通常会在该 ...
- 搭建USB摄像头转RTSP服务器的多种方法
USB摄像头与网络摄像头相比,可选择范围广.种类多.成本低,但是实际使用时需要通过rtsp流来访问,起到直播的效果,因此在摄像头采集终端上构建rtsp流媒体服务器,将USB摄像头数据转化为rtsp,可 ...
- Struts2中的数据处理的三种方式对比(Action中三种作用域request,session,application对象)
1:在Action中如何获得作用域(request,session,application)对象: 取得Map(键值对映射集)类型的requet,session,application; 对数据操作的 ...
- struts2 action中获取request session application的方法
共四种方式: 其中前两种得到的是Map<String,Object> 后两种得到的才是真正的request对象 而Map就是把request对象中的属性取出做成了键值对而已. [方法一] ...
- struts2中访问和添加Application、session以及request属性
一.访问或添加Application.session.request属性 <一>方式一 HelloWorldAction类中添加如下代码 //此方法适用于仅对Application.ses ...
- Struts2里如何取得request,session,application
第一种:取得MAP类型的request,session,application在java文件里写 package com.xjtu.st; import java.util.Map; import c ...
- request, session, application辨析(待更新)
作用域 request < session < application 分析 1. request 只在一次请求中有效,当请求发送变化时,信息将失效. 2. session 在当前一次会话 ...
- request,session,application
JSP 的3个内置对象request,session,application,其实都有一个作用域,这些对象内部有一个Map成员用于存放数据,比如session对象的setAttribute(key,v ...
随机推荐
- NOIP201405生活大爆炸版石头剪刀布
NOIP201405生活大爆炸版石头剪刀布 试题描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生活大爆炸>第二季第 8 集中出现了 ...
- oracle的面试问题
1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windo ...
- URL 中#号,? ,&的作用 (摘抄整理 链接为学习地址)
1. 一峰的网络日志:http://www.ruanyifeng.com/blog/2011/03/url_hash.html get: 1.页面滚动到指定页面的指定位置 (eg: http://ww ...
- netsh修改IP及DNS
netsh interface ip show addresses 显示当前IP netsh interface ip show dns 显示当前DNS netsh interf ...
- linux下共享内存mmap和DMA(直接访问内存)的使用 【转】
转自:http://blog.chinaunix.net/uid-7374279-id-4413316.html 介绍Linux内存管理和内存映射的奥秘.同时讲述设备驱动程序是如何使用“直接内存访问” ...
- 文本框textarea实时提示还可以输入多少文字
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...
- PHP使用PHPExcel删除Excel单元格指定列的方法是怎样
有一个系统仅公司内部和外部经销商使用,在一个导出功能中公司内部员工跟外部经销商导出的列是不一样的(某些数据是不能提供给经销商的)因为导出的数据都是一样的(某些列外数据外部没有)因此并没有单独处理,而是 ...
- iOS开发- 蓝牙后台接收数据(BLE4.0)
最近在做一个蓝牙相关的项目, 需要在应用进入后台, 或者手机属于锁屏状态的情况下, 仍然保持蓝牙连接, 并且能正常接收数据. 本来以后会很麻烦, 但是学习了下..发现就2步而已.简单的不能再简单了. ...
- POJ 1260:Pearls(DP)
http://poj.org/problem?id=1260 Pearls Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8 ...
- opencv通过dll调用matlab函数,图片作为参数
[blog 项目实战派]opencv通过dll调用matlab函数,图片作为参数 前文介绍了如何“csharp通过dll调用opencv函数,图片作为参数”.而在实 ...