在Struts1.*中,要想访问request、response以及 session等Servlet对象是很方便的,因为它们一直是作为形参在各个方法之间进行传递的,而在Struts2中我们就很难看到它们的芳踪了,因 为我们获得表单中的值都是通过预先设置好了的get方法来得到的,那么如果有些参数我们必须通过request.getParametre或者 session.getAttribute来得到,那么应该怎么做呢?按照Max的教程上的说法,可以分为两种:IoC方式和非IoC方式,如何理解这两 种方式的区别呢?IoC是Spring里面的特征之一,字面意思是反转控制,说白了就是依赖注入,比方说类A依赖类B,那么就主动的给A注入一个类B的对 象,下面看一下这两种方法的具体实现。
1.非Ioc方式
这种方式主要是利用了com.opensymphony.xwork2.ActionContext类以及org.apache.struts2.ServletActionContext类,具体的方法如下所示。
获得request对象:
A.HttpServletRequest request = ServletActionContext.getRequest ();
B.ActionContext ct= ActionContext.getContext()
HttpServletRequest request=
(HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);
获得session对象:
在Struts2中底层的session都被封装成了Map类型,我们称之为SessionMap,而平常我们所说的session则是指HttpSession对象,具体的获得方法如下所示。
A.Map session=ActionContext.getSession();
B.Map session=(Map)ActionContext.getContext().get(ActionContext.SESSION);
得到这个SessionMap之后我们就可以对session进行读写了,如果我们想得到原始的HttpSession可以首先得到HttpServletRequest对象,然后通过request.getSession()来取得原始的HttpSession对象。一般情况下SessionMap已经可以完成所有的工作,我们不必再去碰底层的session了。
2.IoC方式
这种方式相对来说变化就比较少了,具体流程如下所示。
获得request对象:
第一步:让action实现ServletRequestAware接口
第二步:在action中声明一个HttpServletRequest类型的实例变量
第三步:在action中实现ServletRequestAware接口的setServletRequest方法,实现方式很简单,如下所示。
private HttpServletRequest request;
publicvoid setServletRequest(HttpServletRequest request) {
this.request = request;
}
获得Session对象(注意,此时的session是SessionMap类型):
第一步:让action实现SessionAware接口
第二步:在action中声明一个HttpServletRequest类型的实例变量
第三步:在action中实现SessionAware接口的setSession方法,实现方式很简单,如下所示。
private Map session;
publicvoid setSession(Map session) {
this. session = session;
}
分享到:
相关推荐
在Struts2中,虽然request、response和session被隐藏起来,但是提供了多种便捷的方式来获取这些对象,使得开发者可以在自定义的方法中灵活地使用它们。通过使用Struts2提供的接口、注解或ActionContext,开发者能够...
当用户访问网站并提交登录信息后,服务器验证成功,就会在服务器端创建一个Session对象,然后生成一个唯一的Session ID,并将其通过Cookie返回给客户端。之后,客户端每次发送请求时,都会将这个Session ID带在请求...
在Web开发中,Iframe(内联框架)常用于嵌入其他网页内容,但涉及到跨域访问时,尤其是在处理Cookie和Session时,会遇到一些挑战。本文主要探讨如何解决Iframe跨域访问Cookie和Session的问题。 首先,理解跨域访问...
当用户访问网站时,服务器为该用户创建一个唯一的SessionID,并将该ID通过Cookie发送到客户端,客户端在每次请求时都会附带这个SessionID。 - **应用场景**: - 登录状态的维护; - 用户个性化设置,如语言选择等...
每个阶段都有对应的内置对象,如page、request、response、session和application,开发者可以利用这些对象来操作页面和处理请求。 4. 请求转发与重定向 - 请求转发(Request Forwarding):发生在服务器端,使用`...
- **Python (Flask/Django)**:Flask中使用`session`对象,Django中使用`request.session`。 5. **最佳实践**: - 使用HTTPS确保通信安全。 - 不要在Session中存储敏感信息,如密码明文,而是存储其哈希值。 - ...
- `request.COOKIES`字典用于访问请求中携带的Cookie。 2. **Django中的Session** - Django的`session`框架使用Cookie来存储一个唯一的session_key,然后服务器根据这个key在内存或数据库中查找对应的session数据...
**Session** 和 **Cookie** 都是Web开发中不可或缺的技术,它们各自有着独特的用途和应用场景。理解它们之间的区别以及如何正确使用,对于构建稳定可靠的Web应用程序至关重要。开发者应该根据具体需求选择合适的方案...
这通常是全局性的,意味着无论哪个用户访问,都可以访问这些数据。然而,由于数据存储在服务器端,且所有写入操作需在 `Application_OnStart` 事件(在 global.asax 文件中)中完成,这可能导致性能问题。为避免并发...
如果需要,检查session中是否有用户信息,如果没有,使用`request.getRequestDispatcher()`重定向到登录页面。 3. **配置Filter**:在web.xml文件中配置Filter,指定需要过滤的URL模式。例如,`<filter-mapping>`...
pageContext对象提供了对请求范围、页面范围、会话范围和应用范围的访问。它可以用来获取或设置任何范围内的属性,并且提供了从请求中获取参数的方法。 2. **request对象**: request对象代表客户端的一个HTTP...
在Laravel中,会话通过`Session` Facade或者`request()->session()`助手方法访问。默认情况下,Laravel使用`CookieSessionHandler`处理会话,它将一个名为`XSRF-TOKEN`的cookie发送到客户端,用于存储会话ID。然后,...
HttpSession session = request.getSession(); ``` - **会话对象的生命周期:** - 会话对象通常生存于服务器端。 - 服务器会自动通过Cookie或URL重写与客户端建立关联。 - `getSession()`方法会在没有找到现有会话...
JSP提供了九种内置对象,它们分别是:out、request、response、session、application、config、page、pageContext 和 exception。这些对象无需实例化即可在JSP页面中使用,极大地简化了编程过程。 1. **out** - ...
会话(session)是在用户与服务器交互的过程中,一系列连续的请求和响应形成的连接。例如,当用户浏览一个电子商务网站并添加商品到购物车时,服务器需要识别这个用户,以便在后续请求中知道应该将哪些商品关联到...
总结,这个实验旨在让学生深入理解JSP内置对象的使用,特别是request、session和application对象,以及表单处理和页面跳转的技巧,这些都是开发动态网站的基础技能。通过实践,开发者可以更好地掌握这些概念,并应用...
通过将数据保存到`Session`中,可以在不同的页面之间轻松访问这些数据。 - **Cookie**:可以通过Cookie在客户端保存数据,这种方式适用于数据量较小的情况。 - **隐含表单**:可以通过表单的隐藏字段传递数据,但...
在JSP页面中,有九个内置的对象(也称为隐藏对象),它们是:`request`、`response`、`session`、`config`、`application`、`page`、`pageContext`、`out`、`exception`。这些对象提供了丰富的功能,方便开发者编写...
四个作用域按范围从小到大依次为:page、request、session和application。page只存在于当前JSP页面,request在一次请求中有效,session在整个会话期间有效,application在整个应用生命周期内有效。 十四、List、Set...
- PageContext提供了对JSP页面所有范围内的对象的访问,包括page、request、session和application作用域。 12. Ajax总结: Ajax(Asynchronous JavaScript and XML)实现了局部刷新,通过JavaScript异步发送...