利用Spring获得Request和Session
来源:互联网 发布:e站app 显示网络错误 编辑:程序博客网 时间:2024/05/19 18:43
应用场景: 目前项目需要把struts2替换为 spring mvc ,原先页面是用s标签实现的,现在要去掉s标签。 s标签有方法
<s:property value="@com..ConvertUtils@tgetName("aaa")"/>现在把s标签替换掉,利用tld 的方式直接调用方法。
tdl 标签
<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <description>JSTL 1.1 core library</description> <display-name>JSTL core</display-name> <tlib-version>1.1</tlib-version> <short-name>hkrtpos</short-name> <uri>/hkrtpos</uri> <tag> <name>token</name> <tag-class>cn.hkrt.base.taglib.TokenTag</tag-class> <body-content>empty</body-content> </tag> <tag> <name>staticp</name> <tag-class>cn.hkrt.base.taglib.StaticTag</tag-class> <body-content>empty</body-content> <attribute><name>className</name><required>true</required></attribute><attribute><name>staticPropertyName</name><required>true</required></attribute> </tag> <tag> <name>staticm</name> <tag-class>cn.hkrt.base.taglib.StaticTag</tag-class> <body-content>empty</body-content> <attribute><name>className</name><required>true</required></attribute><attribute><name>staticMethodName</name><required>true</required></attribute><attribute><name>param1</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>param2</name><required>false</required><rtexprvalue>true</rtexprvalue></attribute> </tag> </taglib>
页面实现:
<hkrtpos:staticm className="com.hkrt.app.offlinepos.util.ConvertUtils" staticMethodName="hideCardNo" param1="33339999999944443"/>
在调用时需要根据传递的KEY获取session中的值。
sturts2中
ActionContext actionContext = ActionContext.getContext(); Map session = actionContext.getSession();
获取session
修改为此方法后不能获取session了
利用:HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); 获取session
在web.xml中添加
- <listener>
- <listener-class>
- org.springframework.web.context.request.RequestContextListener
- </listener-class>
- </listener>
二、使用方法:
1、方法一:通过代码实现
2、方法二:通过注解实现:
- @Autowired
- private HttpServletRequest request;
Request作用域
<bean id="loginAction" class="com.foo.LoginAction" scope="request"/>
针对每次HTTP请求,Spring容器会根据loginAction bean定义创建一个全新的LoginAction bean实例,且该loginAction bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态,而其他请求中根据loginAction bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。当处理请求结束,request作用域的bean实例将被销毁。
Session作用域
<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>
针对某个HTTP Session,Spring容器会根据userPreferences bean定义创建一个全新的userPreferences bean实例,且该userPreferences bean仅在当前HTTP Session内有效。与request作用域一样,你可以根据需要放心的更改所创建实例的内部状态,而别的HTTP Session中根据userPreferences创建的实例,将不会看到这些特定于某个HTTP Session的状态变化。当HTTP Session最终被废弃的时候,在该HTTP Session作用域内的bean也会被废弃掉。
global session作用域
<bean id="userPreferences" class="com.foo.UserPreferences" scope="globalSession"/>
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。
请注意,假如你在编写一个标准的基于Servlet的web应用,并且定义了一个或多个具有global session作用域的bean,系统会使用标准的HTTP Session作用域,并且不会引起任何错误
二、为什么需要额外的配置RequestContextFilter
也许会有一个疑问,已经通过ContextLoaderListener(或ContextLoaderServlet)将Web容器与Spring容器整合,为什么这里还要用额外的RequestContextListener以支持Bean的另外3个作用域,原因是ContextLoaderListener实现ServletContextListener监听器接口,而ServletContextListener只负责监听Web容器的启动和关闭的事件。RequestContextFilter实现ServletRequestListener监听器接口,该监听器监听HTTP请求事件,Web服务器接收的每次请求都会通知该监听器。通过配置RequestContextFilter,Spring容器与Web容器结合的更加密切。
三、作用域依赖问题
如果将Web相关作用域的Bean注入到singleton或prototype的Bean中,这种情况下,需要spring AOP
<bean name="car" class="com.demo.Car" scope="request">
<aop:scoped-proxy/>
</bean>
<bean id="boss" class="com.demo.Boss" >
<properrty name="car" ref="car" />
</bean>
- 利用Spring随时随地获得Request和Session
- 利用Spring随时随地获得Request和Session
- 利用Spring随时随地获得Request和Session
- 利用Spring获得Request和Session
- 利用Spring随时随地获得Request和Session
- [Java][web]利用Spring随时随地获得Request和Session
- struts2获得session和request
- STRUTS2获得session和request
- STRUTS2获得session和request
- STRUTS2获得session和request
- STRUTS2获得session和request
- STRUTS2获得session和request
- struts2获得request和session
- STRUTS2获得session和request
- STRUTS2获得session和request
- Strust2获得session和request
- STRUTS2获得session和request
- STRUTS2获得session和request
- 什么是计量与支付
- Arduino 基本设置 + timer
- javaScript 知识点
- 【贪心】洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
- 正则分析法获得url参数
- 利用Spring获得Request和Session
- EasyIndictor 一款简单易用的android导航栏
- c++之静态函数和静态方法
- 刷清橙OJ--A1001.01序列
- easyui 增加统计行
- 学习笔记: 源码 net.cpp 浅析
- 【贪心】洛谷 P1209 [USACO1.3]修理牛棚 Barn Repair
- 内存溢出怎么加内存java.lang.OutOfMemoryError:GC over head limit exceeded
- python---简单的接口测试实例