- 浏览: 104500 次
- 性别:
- 来自: 成都
最新评论
-
王花蔡:
要加上 Ext.tip.QuickTipManager.in ...
EXTJS4中更改了ext:qtip的支持 -
王花蔡:
还是不行啊!
EXTJS4中更改了ext:qtip的支持 -
tmartin:
jackyrong 写道如果有个url ,是要保护的资源url ...
[转]spring基于url路径匹配用法讲解 -
jackyrong:
如果有个url ,是要保护的资源url,为/abc/abc.a ...
[转]spring基于url路径匹配用法讲解 -
wzwahl36:
<a href="http://redston ...
extjs如何操作panel的html
Action中取得request,session的四种方式
在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?
Struts2为我们提供了四种方式。
分别为
servlet 不相关的 非IoC 取得Request等对象的方式
servlet 不相关的 IoC 取得Request等对象的方式
servlet 相关的 非IoC 取得Request等对象的方式
servlet 相关的 IoC 取得Request等对象的方式
以下分别叙述。
首先请看struts.xml文件
文件内容:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
Struts2为我们提供了四种方式。
分别为
servlet 不相关的 非IoC 取得Request等对象的方式
servlet 不相关的 IoC 取得Request等对象的方式
servlet 相关的 非IoC 取得Request等对象的方式
servlet 相关的 IoC 取得Request等对象的方式
以下分别叙述。
首先请看struts.xml文件
文件内容:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="login" class="struts2.login.LoginAction">
<result name="success" >result.jsp</result>
</action>
<action name="login2" class="struts2.login.Login2Action">
<result name="success" >result.jsp</result>
</action>
<action name="login3" class="struts2.login.Login3Action">
<result name="success" >result.jsp</result>
</action>
<action name="login4" class="struts2.login.Login4Action">
<result name="success" >result.jsp</result>
</action>
</package>
</struts>
其中的LoginAction,Login2Action,Login3Action,Login4Action分别对应四种方式的Action。
文件名:result.jsp
文件内容:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
request 属性是 ${requestScope.attribute}<br>
session 属性是 ${sessionScope.attribute}<br>
application 属性是 ${applicationScope.attribute}<br>
</html>
文件名:getrequest.jsp
文件内容:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<a href="login.action">servlet 不相关的 非IoC 取得Request等对象的方式</a><br>
<a href="login2.action">servlet 不相关的 IoC 取得Request等对象的方式</a><br>
<a href="login3.action">servlet 相关的 非IoC 取得Request等对象的方式</a><br>
<a href="login4.action">servlet 相关的 IoC 取得Request等对象的方式</a><br>
</form>
</html>
然后分别叙述4种方式,
1,servlet 不相关的 非IoC 取得Request等对象的方式
这种方法先取得ActionContext,然后获取Map类型的request等对象
Action文件:
package struts2.login;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private ActionContext context;
private Map request;
private Map session;
private Map application;
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
this.context = ActionContext.getContext();
this.request = (Map)this.context.get("request");
this.session = this.context.getSession();
this.application = this.context.getApplication();
this.request.put("attribute", "request value servlet 不相关的 非IoC ");
this.session.put("attribute", "session value servlet 不相关的 非IoC ");
this.application.put("attribute", "application value servlet 不相关的 非IoC ");
return SUCCESS;
}
}
2,servlet 不相关的 IoC 取得Request等对象的方式
这种方法,是实现特定的接口,由container来设定request等对象。请注意如下代码示例中红色文字的部分。
Action文件:
package struts2.login;
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 Login2Action extends ActionSupport
implements RequestAware , SessionAware, ApplicationAware {
private Map request;
private Map session;
private Map application;
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
this.request.put("attribute", "request value servlet 不相关的 IoC ");
this.session.put("attribute", "session value servlet 不相关的 IoC ");
this.application.put("attribute", "application value servlet 不相关的 IoC ");
return SUCCESS;
}
@Override
public void setRequest(Map<String, Object> arg0) {
// TODO Auto-generated method stub
this.request = arg0;
}
@Override
public void setSession(Map<String, Object> arg0) {
// TODO Auto-generated method stub
this.session = arg0;
}
@Override
public void setApplication(Map<String, Object> arg0) {
// TODO Auto-generated method stub
this.application = arg0;
}
}
3,servlet 相关的 非IoC 取得Request等对象的方式
这种方法可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。
取出方法,请参看代码中的蓝字部分。
Action文件:
package struts2.login;
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 Login3Action extends ActionSupport{
private HttpServletRequest request;
private HttpSession session;
private ServletContext application;
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
this.request = ServletActionContext.getRequest();
this.session = this.request.getSession();
this.application = ServletActionContext.getServletContext();
this.request.setAttribute("attribute", "request value servlet 相关的 非IoC ");
this.session.setAttribute("attribute", "session value servlet 相关的 非IoC ");
this.application.setAttribute("attribute", "application value servlet 相关的 非IoC ");
return SUCCESS;
}
}
4,servlet 相关的 IoC 取得Request等对象的方式
这种方法也可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。
但是取出方法是通过接口进行实现,也就是由struts2的container来设定,请参看代码中的红字部分。
Action文件:
package struts2.login;
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 Login4Action extends ActionSupport
implements ServletRequestAware , ServletContextAware {
private HttpServletRequest request;
private HttpSession session;
private ServletContext application;
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
this.request.setAttribute("attribute", "request value servlet 相关的 IoC ");
this.session = this.request.getSession();
this.session.setAttribute("attribute", "session value servlet 相关的 IoC ");
this.application.setAttribute("attribute", "application value servlet 相关的 IoC ");
return SUCCESS;
}
@Override
public void setServletRequest(HttpServletRequest arg0) {
// TODO Auto-generated method stub
this.request = arg0;
}
@Override
public void setServletContext(ServletContext arg0) {
// TODO Auto-generated method stub
this.application = arg0;
}
}
好,把执行结果的图上来一看,一目了然,不知道你对action中取request等对象的这几种方式,了解了多少呢?
转自:http://www.cnblogs.com/lxJack/archive/2011/04/03/2004782.html
发表评论
-
tomcat 嵌入开发 org/apache/juli/logging/LogFactory
2013-01-31 19:46 1241项目中,在做一个系统管理平台,其中对tomcat做嵌入式开 ... -
MyEclipse properties editor 丢失键值
2013-01-18 17:41 1312”properties 键值 丢失“ 今天在读写prop ... -
No suitable driver
2012-10-08 14:32 1422异常: 14:30:04,371 WARN org. ... -
开发平台包括的内容
2012-09-01 14:07 1030此文来源于 stamen 在文章http://www ... -
ibatis中iterate的用法[转载]
2012-07-11 09:46 856PersonDaoImp如下: /** ... -
eclipse下tomcat出现did not find a matching property
2012-07-06 17:02 1896Software : apache-tomcat-6. ... -
j将自己的web项目部署到tomcat根目录
2012-07-05 15:03 4673****************************** ... -
请教一个路径问题,关于访问WEB-INF/xx.XML
2012-04-27 18:24 895在学习spring testContext的时候遇到一个路径问 ... -
Spring security 学习琐碎总结
2012-04-07 22:53 11941.循环验证,一直报Acces ... -
[转]spring基于url路径匹配用法讲解
2012-04-07 16:21 2705转自:http://blog.csdn.net/yan_dk/ ... -
不使用GrantedAuthority
2012-04-06 13:13 7296我在Spring 启动的时候将受保护的资源加载到servlet ... -
[转]facade层,service 层,domain层,dao 层设计
2012-04-05 10:11 1166转自:http://blog.163.com/chtx87_9 ... -
[转]web.xml中servlet, bean, filter, listenr 加载顺序
2012-04-04 16:48 1403http://www.open-china.net/blog/ ... -
[转载]Spring中bean的实例化顺序
2012-04-04 16:47 955http://guoliangqi.iteye.com/blo ... -
spring security reference documentation中关于 <http>配置的介绍
2012-03-29 21:59 1044转载于:http://lczluxx.blog.hexun.c ... -
Could not instantiate cache implementation异常处理
2012-03-29 20:46 1652引用: 今天遇到了一个很奇怪的问题 我照例增加了一套新功能 ... -
IBATIS:Could not set result class. 而类名包路径等正确
2012-03-25 18:09 1421检查下是不是resultClass写成resultMap,或者 ... -
Spring security2 例子(转)
2012-03-22 16:26 672之前一直按照《spring security 配置精讲》来做, ... -
struts2与spring整合
2012-03-18 22:23 0首先确保struts2-spring-plugin-x-x-x ... -
ibatis 无法 打印SQL到控制台,commons-logging-api.jar
2012-03-18 15:22 1200log4j.appender.stdout=org.apach ...
相关推荐
Struts2的拦截器机制也是获取request、response、session的一种方式。默认情况下,Struts2已经配置了一些拦截器,例如`servletConfig`拦截器,它可以提供对servlet API的访问,包括request、response、session等。 ...
在Struts2中,有四种主要的方式可以用来操作request、session和application上下文中的数据。这篇内容将深入探讨这四种方法,并结合源码和实用工具来帮助理解。 1. **ActionContext**: Struts2的核心组件...
#### 四、通过 Request/Session 传值示例解析 接下来,我们将通过具体的示例代码来理解如何使用 `request` 和 `session` 实现数据传递。 ##### 4.1 示例 1:使用 Request 和 Session 传递数据 **session1.jsp:** `...
在 Struts2 的 Action 类中,可以通过以下方式间接地访问到 Request、Session 和 Application: ```java // 使用 ActionContext 来获取 ActionContext context = ActionContext.getContext(); Map request = (Map)...
除了实现特定接口的方式,STRUTS2还提供了另一种更加通用的方式来访问`session`和`request`,那就是使用`ActionContext`。`ActionContext`是STRUTS2内部用于存储当前请求上下文信息的一个容器,通过它可以直接获取到...
在Struts2中,访问request、session和application对象是进行数据共享和传递的重要手段。这篇学习笔记主要探讨了如何在Struts2框架下有效地利用这三种域对象。 首先,request对象代表一次HTTP请求,它存储的数据仅...
jsp可以通过多种方式获取action传来的session,下面将详细介绍几种方法。 一、使用Struts标签获取session 使用Struts标签可以直接获取session,例如:<s:property value="#session.sessionid"/>。这种方法简单易用...
在"struts2-web"这个压缩包文件中,可能包含了一个或多个示例项目,演示了如何在Struts2的Action类中实现对application、session和request域的访问。开发者可以运行这些示例,通过观察控制台输出或页面显示,了解...
request.setAttribute() 方法设置的变量只能在当前请求中生效,而 session.setAttribute() 方法设置的变量则可以在整个会话中生效。 与 JavaScript 的区别 JavaScript 和 JSP 是两种不同的编程语言,JavaScript ...
### jsp中session使用方法详解 #### 一、引言 在Web开发中,会话管理是一项非常重要的功能,特别是对于需要保持用户状态的应用程序来说更是如此。在Java Web开发中,`HttpSession`接口提供了在多页面请求之间保存...
在Struts2框架中,理解并正确使用request、response、session和application范围对于有效地管理数据和状态至关重要。这些范围帮助我们在Web应用程序中实现逻辑和数据流的分离,提高代码的可维护性和可扩展性。通过...
在Struts2中,虽然request、response和session被隐藏起来,但是提供了多种便捷的方式来获取这些对象,使得开发者可以在自定义的方法中灵活地使用它们。通过使用Struts2提供的接口、注解或ActionContext,开发者能够...
当表单使用`POST`方式提交时,数据位于请求体中,`request`对象的`getParameter()`和`getParameterValues()`仍然适用。例如,有以下HTML表单: ```html <form action="process.jsp" method="post"> ``` 在`...
4. **删除值**:`pull`方法用于取出并删除Session中的值,如`Session::pull('user','default')`。 5. **获取所有值**:`all`方法返回Session中的所有数据,如`Session::all()`。 6. **存在性检查**:`has`方法可以...
根据给定文件的内容,我们将逐一介绍Struts2中Action获取属性范围的四种方式: 1. **Servlet不相关的非IoC方式** - **原理**: 这种方式通过`ActionContext`来获取`request`等范围对象。由于没有使用依赖注入(IoC)...
在探讨`request.getParameter()`与`request.getAttribute()`的区别之前,我们首先需要理解这两个方法的基本概念以及它们在Java Web开发中的作用。 ### `request.getParameter()` `request.getParameter()`是...
如果session中存储的是一个Bean对象,比如`User`,那么可以这样访问Bean的属性: ```jsp ${sessionScope.bean.beanProperty} ``` 关于session的生命周期,默认情况下,session会在用户浏览器关闭或静默30分钟后...
这段代码首先尝试从Session中获取名为`s`的属性,如果该属性不存在,则输出相应的信息,表明Session可能已经过期。 #### 五、总结 综上所述,处理Session的有效期主要涉及以下几个方面:在`web.xml`中配置全局有效...
在本篇文章中,我们将深入探讨`request.getParameter()`和`request.setAttribute()`以及`request.getAttribute()`的区别,并提供相关示例来帮助理解它们的用法。 **一、request.getParameter() 和 request....
FormBean 的生命周期有 Session、Request、Page、Application 四种。我们一般最长使用的是 Request 和 Session。每次 FormBean 都会根据 HTML 表单提交的属性来进行匹配。而往往所根据的 HTML 表单是由 JSP 变换过去...