struts2中将action与servlet解耦合,故我们在action中的excute方法中无法直接使用request、session以及 application对象,为了操作这些对象,我们必须编写另外一些代码,现将在action中访问scope对象的方式总结如下,共四种。
方式一: 与Servlet解耦合的非IOC方式
特点:获取的scope对象与容器无关,通过ActionContext获取
import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; /** * @author waitingfortime * */ public class test2Action extends ActionSupport { private String username; ActionContext context; Map request; Map session; Map application; public String execute() throws Exception { context=ActionContext.getContext();//从ActionContext中获得上下文对象,并从该对象中一次获得scope对象 request=(Map) context.get("request"); session=context.getSession(); application=context.getApplication(); request.put("req", "requst属性"); session.put("ses", "sesion属性"); application.put("app", "application属性"); return SUCCESS; } }
在jsp页面中有2种方式获得scope对象的值
${requestScope.req} ${sessionScope.ses} ${applicationScope.app} <h4>以下使用scope.getAttribute的形式来接受</h4> request: <%=request.getAttribute( "req" ) %><br>
session: <%=session.getAttribute( "ses" ) %><br>
application:<%=application.getAttribute( "app" ) %><br>
|
分析:通过ActionContext的getContext静态方法得到ActionContext对象,然后 ActionContext对象调用get方法来获取一个存储在request范围中的对象。我们使用el或通过 request.getAttribute这样的方式均可以获取对象值,这说明了这些Map request对象实际是存储在request范围内的对象。
方式二、与Servlet解耦合的IOC方式
public class test3Action extends ActionSupport implements RequestAware,SessionAware,ApplicationAware { private String username; Map request; Map session; Map application; public String execute() throws Exception { request.put("req", "requst属性"); session.put("ses", "sesion属性"); application.put("app", "application属性"); return SUCCESS; } public void setRequest(Map<String, Object> request) { this.request=request; } public void setSession(Map<String, Object> session) { this.session=session; } public void setApplication(Map<String, Object> application) { this.application=application; } ...省略username的get/set方法 }
在方式二中它是通过实现接口,在重写接口中的方法中完成对Map requset的赋值,所以称之IOC方式。
方式三、与Servlet耦合的非IOC方式
import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; /** * @author waitingfortime */ public class test2Action extends ActionSupport { private String username; HttpServletRequest request; HttpSession session; ServletContext application; public String execute() throws Exception { request = ServletActionContext.getRequest(); session = request.getSession(); application = ServletActionContext.getServletContext(); request.setAttribute("req", "requst属性"); session.setAttribute("ses", "sesion属性"); application.setAttribute("app", "application属性"); return SUCCESS; }
此方法获取的纯粹的Scope对象,它与容器相关,这些Scope对象操作更强。
方式四、与Servlet耦合的IOC方式
public class Login4Action extends ActionSupport implements ServletRequestAware,ServletContextAware{ private String username; ActionContext context; HttpServletRequest request; HttpSession session; ServletContext application; public String execute() throws Exception { context=ActionContext.getContext(); session=request.getSession(); request.setAttribute("req", "requst属性"); session.setAttribute("ses", "sesion属性"); application.setAttribute("app", "application属性"); return SUCCESS; } public void setServletRequest(HttpServletRequest request) { System.out.println("测试:"+request); this.request=request; } public void setServletContext(ServletContext application) { System.out.println("测试:"+application); this.application=application; } ...省略username的get/set方法 }
方式四则是实现了接口,来通过依赖注入得到对象。
相关推荐
三、在Action获取Scope对象 19 方式一、与Servlet解耦合的非IOC方式 20 方式二、与Servlet解耦合的IOC方式 21 方式三、与Servlet耦合的非IOC方式 21 方式四、与Servlet耦合的IOC方式 22 四、OGNL与ValueStack(VS) 22...
同加载struts方式类似,选择Myeclipse后在弹出的二级菜单中选择Add spring in action in action Capabilities…后提示如下图所示: 选择所需要的spring in action in action包,然后默认下一步,直到完成。 到此...
scope="request" input="/index.jsp"> <forward name="success" path="/success.jsp"></forward> </action> </action-mappings> <message-resources parameter=...
type="com.yourcompany.struts.action.Test2Action" /> <action attribute="test3Form" input="/test3.jsp" name="test3Form" path="/test3" scope="request" type=...
”1.0” encoding=”ISO-8859-1”?> <!DOCTYPE struts-config PUBLIC "-//Apache Software ...scope="" validate="" input="" / > </action-mappings> <message-resources / > <plug-in /> </struts-config>
3.在下在的struts2的解压包中的lib文件夹下,复制commons-logging-1.0.4.jar,freemarker-2.3.8.jar,ognl-2.6.11.jar,tiles-core-2.0.4.jar,xwork-2.0.5.jar,在MyEclipse中右击lib粘贴。 4.新建一个JSP页面。...
struts2的入门开发,环境配置− <struts-config> <data-sources/> − <form-beans> <form-bean name="loginForm" type="test.form.LoginForm"/> </form-beans> <global-exceptions/> <global-forwards/> − <action-...
使用Struts的Action来对数据库进行增、删、改、查四项操作 <br/>1、数据库MySQL,创建数据库 Pagination MySQL.sql用来创建表结构 <br/>连接方式有两种,一种直接JDBC,一种通过连接池,代码中有说明...
这个属于与Spring整合的问题,Spring容器在初始化对象的时候会根据bean的scope配置来考虑是重新建立一个对象,还是继续使用原来的对象,拿struts2的action的bean来说,如果scope这个参数没有配置,默认就是单例,即...
采用整合插件注入方式使用Spring容器中的Service或DAO. (默认按名称匹配规则) 4.配置信息的改造 Service和DAO需要交给Spring容器. struts.xml不需要改变,因为引入struts-spring-plugin.jar后,Action创建会交给...
Struts的工作原理,如下图2所示: <br/> 控制:通过图2大家可以看到有一个XML文件Struts-config.xml,与之相关联的是Controller,在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet...
这个属于与Spring整合的问题,Spring容器在初始化对象的时候会根据bean的scope配置来考虑是重新建立一个对象,还是继续使用原来的对象,拿struts2的action的bean来说,如果scope这个参数没有配置,默认就是单例,即...
DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <data-sources /> <form-beans > ...
此外lazy="true"说明地返回整个Tfile对象时,并不返回fileContent这个字段的数据,只有在显式调用tfile.getFileContent()方法时才真正从数据库中获取fileContent的数据。这是Hibernate3引入的新特性,对于包含重量...
2.6.2. Struts的强项........................................................................................................58 Struts in Action 中文版 Lastest Revised:10/14/2005 10:27:00 AM ...
一,集成 Spring 与 Hibernate 1,配置SessionFactory 1,配置 ---------------------- applicationContext.xml ------------------------ ... 2,在struts.xml中配置action时,在class属性中写bean的名称
Figure 4 displays the Web adaptation of MVC, also commonly known as MVC Model 2 or MVC 2. The ActionServlet class Do you remember the days of function mappings? You would map some input event to a...
1、数据库MySQL,连接方式有两种,一种直接JDBC,一种通过连接池,代码中有说明 用户root 密码password 不同的进行相应的改变。 <br/>Tomcat数据库连接池配置: Server.xml 增加如下内容:...
parameter="" //指定Actgion的配置参数,在Action类的execute()方法中,可以调用ActionMapping对象的getParameter()方法来读取该配置参数。(相当于初始化赋值) >>> prefix=""// 指定填充当前 Action 关联 FormBean...
2. 深入STRUTS 架构..................................................................................37 2.1. 随便谈谈.......................................................................................