Eclipse 下Struts 2.1.6+ 和spring 2.5.5 整合

 

在eclipse 环境下集成Struts 2.1.6 和 Spring 2.5.5

在使用Struts+spring框架以来,一直头疼于复杂的配置,spring用了注解以后减少好多配置,Struts2.1.6以后可以使用类似于spring注解的形式来减少配置文件,下面就具体搭建步骤做个详细的说明。

一:struts的搭建

1,  新建web 项目

 

我们起名sspring 运行环境选择tomcat 6

2,添加sturts jar包:将Struts2.1.6的下载包解压后得到的lib目录,在lib目录下,找到以面的jar包:

xwork-2.1.2.jar

struts2-core-2.1.6.jar

struts2-convention-plugin-2.1.6.jar

ognl-2.6.11.jar

freemarker-2.3.13.jar

commons-loggin-1.0.4.jar

commons-fileupload-1.2.1.jar

把这些包放进项目的lib目录下,同时,建议也把JSTL的核心jar包也放到lib目录,这些JSTL的包主要有:

jstl.jar

standard.jar

3,  改配置文件web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd

http://java.sun.com/jstl/core_rt"

id="WebApp_ID" version="2.5">

  <display-name>sspring</display-name>

 

   <filter> 

        <filter-name>struts2</filter-name> 

        <filter-class> 

          org.apache.struts2.dispatcher.FilterDispatcher 

        </filter-class> 

    </filter> 

    <filter-mapping> 

        <filter-name>struts2</filter-name> 

        <url-pattern>/*</url-pattern> 

    </filter-mapping>

</web-app>

注意红色字段 是用来配置jstl的需要添加

4,  在WEB-INF下建立content目录并且新建new.jsp

5,  在src下建立com.struts目录

在该目录下建立FirstAction 类

 

生成的类如下

 

import javax.servlet.http.HttpServletRequest;

 

import org.apache.struts2.ServletActionContext;

import org.apache.struts2.convention.annotation.Result;

import org.apache.struts2.convention.annotation.Results;

 

import com.opensymphony.xwork2.ActionSupport;

@Results({

    @Result(name="suc",location="new.jsp",type="dispatcher"),

    })

public class FirstAction extends ActionSupport {

    @Override

    public String execute() throws Exception{

      

       HttpServletRequest request=ServletActionContext.getRequest();

       request.setAttribute("list","测试");

      

       return "suc";

    }

}

//

@Results({

    @Result(name="suc",location="new.jsp",type="dispatcher")

    })

相当于structs.xml 下的

<action name="first"  class="com.structs.FirstAction">
 <result name="suc " >

     /new.jsp
 </result>
  </action>      

改new.jsp页面

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>测试</title>

</head>

<body>

${list}

</body>

</html>

6,  右击项目run as

在ie中输入http://localhost:8080/sspring/first生成页面如下:

证明stucts正常工作

 

Ps

1.在struts2.1.6+版本后,加入struts2-convention-plugin-2.1.6.jar以后不使用struts.xml来配置文件转向,而通过类似于注解的形式来进行转向如

@Results({

    @Result(name="suc",location="new.jsp",type="dispatcher"),

@Result(name="err",location="err.jsp",type="dispatcher")

    })

2.采用零配置,系统默认location="new.jsp"会找到WEB-INF/content文件下的new.jsp文件 所以需要在WEB-INF目录下新建content文件夹。具体使用说明可参见http://developer.51cto.com/art/200907/137821.htm

 

二,集成spring

在这里我们要做连接数据库测,除了添加spring的jar包外还要增加连接数据库的jar:

其中struts2-spring-plugin-2.1.6.jar 使用多次一直有问题 就换成了2.1.2版本。

1,  修改web-xml 添加

<context-param>

<param-name>contextConfigLocation</param-name>             <param-value>/WEB-INF/applicationContext*.xml,classpath*:applicationContext*.xml</param-value>

</context-param>

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

</listener>

注意要在原来<filter>  <filter-name>struts2</filter-name>上添加,否则肯呢高spring的xml检测不到。

2,  添加applicationContext.xml

在WEB-INF文件夹下添加applicationContext.xml文件,如图

具体内容如下

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:context="http://www.springframework.org/schema/context"

    xmlns:aop="http://www.springframework.org/schema/aop"

    xmlns:tx="http://www.springframework.org/schema/tx"

    xsi:schemaLocation="    

    http://www.springframework.org/schema/beans     

    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd     

    http://www.springframework.org/schema/context     

    http://www.springframework.org/schema/context/spring-context-2.5.xsd    

    http://www.springframework.org/schema/aop    

    http://www.springframework.org/schema/aop/spring-aop-2.5.xsd    

    http://www.springframework.org/schema/tx    

    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"

    default-lazy-init="true">

    <context:annotation-config />

    <!-- 扫描注解类.符合如下条件的类都将被spring初始化,扫描的目录限于base-package的定义 -->

    <context:component-scan base-package="/">

        <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>

        <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>

    </context:component-scan>

   

   

         

    <bean id="dataSource"

       class="org.apache.commons.dbcp.BasicDataSource">

       <property name="driverClassName"

           value="com.microsoft.jdbc.sqlserver.SQLServerDriver">

       </property>

       <property name="url"

           value="jdbc:microsoft:sqlserver://10.57.17.142:1433;databaseName=CMCC_CRM">

       </property>

       <property name="username" value="sa"></property>

       <property name="password" value="sa"></property>

       <!-- 连接池启动时的初始值,一般两三条就够了-->

       <property name="initialSize" value="2"></property>

       <!-- 连接池的最大值 -->

       <property name="maxActive" value="20"></property>

       <!-- 最大空闲值,当经过一个高峰时间后,连接池可以慢慢将用不到的连接释放一部分,一直减少到maxIdle为止 -->

       <property name="maxIdle" value="5"></property>

       <!-- 最小空闲值,当空闲的连接数小于阀值时,连接池就会预申请一些连接,以免峰值到时来不及申请-->

       <property name="minIdle" value="2"></property>

 

 

    </bean>

   

</beans>

 

3,  由于我们是采用低配置,高注解的方式,我们没有配置struts.xml文件 我们不用把struts让spring托管。

4,  新建文件夹和相关类,如下图:

其中dao文件夹下的是具体的实现类 Idao是相关接口;service是业务类,Iservice是业务类的接口。

5,  具体实现过程

新建LoginAction

import com.opensymphony.xwork2.ActionSupport;

@Results({

    @Result(name="suc",location="jsp/suc.jsp",type="dispatcher"),

    @Result(name="err",location="jsp/err.jsp",type="dispatcher")

    })

public class LoginAction extends ActionSupport {

    @Override

    public String execute() throws Exception{

      

       HttpServletRequest request=ServletActionContext.getRequest();

       System.out.println(request.getParameter("username")+"========");

       request.setAttribute("list","测试");

      

       return "suc";

    }

}

新建suc.jsp err.jsp

修改new.jsp

<form action=login method="post">

<input type=text id=username name=username >

<input type=password id=pass name=pass>

<input type=submit value="提交">

</form>

 

对ISSDao修改,添加

boolean isUser(String username,String password);

SSDao修改

@Repository

public class SSDao extends JdbcDaoSupportimplements  ISSDao {

    @Autowired

    public SSDao(@Qualifier("dataSource")DataSource dataSource) {

        setDataSource(dataSource);

    }

   

    @Override

    public boolean isUser(String username,String password){

       int recordcount=0;

       String sql = "select * from [user] where username='"+username+"' and password='"+password+"'";

       recordcount=this.getJdbcTemplate().queryForList(sql).size();

       if(recordcount>0){

           return true;

       }else

        return false;

    }

 

}

@Repository必须添加 被spring初始化

@Autowired

    public SSDao(@Qualifier("dataSource")DataSource dataSource) {

        setDataSource(dataSource);

}

这是调用spring配置的连接池

 

对ISSService修改

public boolean isUser(String username, String password);

对SSSerivice修改

@Service

public class SSService implements ISSService{

    @Autowired

    private ISSDao issDao;

    public boolean isUser(String username,String password){

      

       return issDao.isUser(username, password);

    }

 

}

@ Service必须添加 被spring初始化

 

修改action

@Results({

    @Result(name="suc",location="jsp/suc.jsp",type="dispatcher"),

    @Result(name="err",location="jsp/err.jsp",type="dispatcher")

    })

public class LoginAction extends ActionSupport {

    @Autowired

     private ISSService issService;

   

    @Override

    public String execute() throws Exception{

       HttpServletRequest request=ServletActionContext.getRequest();

       String username=request.getParameter("username").trim();

       String password=request.getParameter("pass").trim();

       if(issService.isUser(username, password)==true){

           return "suc";

       }else

           return "err";

                 

    }

}

Ok,基本操作已经完成,我们测试一下是否可以运行

输入http://localhost:8080/sspring/first

输入正确用户名密码

输入不正确

测试结果证实ss构架已经可以正常运行

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值