Spring整合Struts2

获取Session两种方式

1ActionContext:在Struts2中代表当前Struts2中环境相关信息

能够获取所有的相关信息

Map类型的session不依赖于Servlet API

HttpSession Servlet API耦合性低

就可以进行与容器无关的测试

Servlet不能进行离线测试(Junit测试)

离线:脱离web容器单独使用,比如进行Junit测试

在底层struts2容器会将Map session中的信息同步到HttpSession

ActionContext ctx=ActionContext.getContext();

Map<String, Object> session=ctx.getSession();

session.put("loginName","Jack");

 

(2)也可以使用Struts注入Session到实现SessionAware接口

Action对象中

 

定义一个Action的抽象父类,在封装Session的公共的方法子类

只需继承抽象父类就可以获得这些公共方法

/*

 * 所有控制器的基类,

 * 用于封装常用的session,request等,用于提供给子类进行复用

 * ActionSupport是struts2提供了Action基础类用于复用公共代码的类

 * */

public abstract class BaseAction extends ActionSupportimplements SessionAware,ApplicationAware,RequestAware{

private Map<String, Object>session;

protected Map<String, Object>application;

protected Map<String, Object>request;

public void setSession(Map<String, Object>session) {

this.session=session;

}

public void setApplication(Map<String, Object>session){

this.session=session;

}

public void setRequest(Map<String, Object>request){

this.request=request;

}

}public class LoginAction2implements SessionAware{

private Map<String, Object>session;

public void setSession(Map<String, Object>session) {

this.session=session;

}

 

SpringStruts2整合

1:利用Spring管理Action对象

2Spring管理Action,同时可以为控制层注入业务层

最终将控制层和业务层整合

插件 Struts2-Spring

1)导包:Pom.xml配置文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>cn.tedu</groupId>

  <artifactId>struts-day02</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>war</packaging>

  <dependencies>

  <dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-core</artifactId>

    <version>2.3.24</version>

</dependency>

 <dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-spring-plugin</artifactId>

    <version>2.3.34</version>

</dependency>

  </dependencies>

</project>

 

2)可以界面配置listener

 <!-- 用于在web容器启动期间初始化Spring容器 -->

  <listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

  </listener>

  <context-param>

  <param-name>contextConfigLocation</param-name>

  <param-value>classpath:conf/spring-*.xml</param-value>

  </context-param>

 

3)引入spring-web.xml

保持Spring的配置文件的版本和Spring的版本一致

启动注解驱动

<context:component-scan base-package="cn.tedu.web"/>

(4)web包下写一个Action

@Controller//作用仅仅是告诉Spring这是一个bean组件

@Scope("prototype")//为了线程安全

public class WebAction extends BaseAction{

public String execute(){

System.out.println("WEB Action");

return SUCCESS;

}

(5)配置struts.xml文件

<!-- 使用有Spring管理的Action组件

在配置Action期间将class属性引用Bean ID即可

 -->

<action name="web" class="webAction">

<result name="success">/WEB-INF/success.jsp</result>

</action>

*****

一个请求一个Action

Spring管理,一定要加@scopeprototype

不然会造成并发问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值