[转]Struts2.3 + Spring3.2 整合

首先是Struts2.3整合Spring3.2

1、新建一个web工程(这个就不说了)

2、添加Struts2.3

Struts开发所需的jar复制到工程的lib文件中。开发struts必须包如下:

 

3、创建action

声明:整个示例只有一个简单的用户登录。

本例中的action类名为 LoginAction,该类中的代码如下:

 

[java]  view plain copy
  1. package com.riyun.action;  
  2.   
  3. import com.opensymphony.xwork2.ActionSupport;  
  4. public class LoginAction extends ActionSupport{  
  5.       
  6.     private static final long serialVersionUID = 1L;  
  7.       
  8.           
  9.     private String userName;  
  10.     private String passWord;  
  11.       
  12.     public String getUserName() {  
  13.         return userName;  
  14.     }  
  15.     public String getPassWord() {  
  16.         return passWord;  
  17.     }  
  18.     public void setUserName(String userName) {  
  19.         this.userName = userName;  
  20.     }  
  21.     public void setPassWord(String passWord) {  
  22.         this.passWord = passWord;  
  23.     }  
  24.       
  25.       
  26.     public String   execute() throws Exception{  
  27.         if(userName.equals("riyun")&&passWord.equals("123")){  
  28.                return SUCCESS;  
  29.           }else{  
  30.                return ERROR;  
  31.             }  
[java]  view plain copy
  1. }  


至于该类为什么继承ActionSupport,相信网上讲述Struts1.XStruts2.X的文章已经很多了,这里就不罗嗦了。

4、修改项目中的index.jsp代码,修改后的index.jsp代码如下:

 

[html]  view plain copy
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <%@taglib prefix="s" uri="/struts-tags" %>  
  3. <%  
  4. String path = request.getContextPath();  
  5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  6. %>  
  7.   
  8. >  
  9. <html>  
  10.   <head>  
  11.     <base href="<%=basePath%>">  
  12.       
  13.     <title>My JSP 'index.jsp' starting pagetitle>  
  14.     <meta http-equiv="pragma" content="no-cache">  
  15.     <meta http-equiv="cache-control" content="no-cache">  
  16.     <meta http-equiv="expires" content="0">      
  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  18.     <meta http-equiv="description" content="This is my page">  
  19.       
  20.   head>  
  21.     
  22.   <body>  
  23.     <s:form action="login">  
  24.         <s:textfield name="userName" label="用户名" key="user">s:textfield>  
  25.         <s:password  name="passWord" label="密码" key="password">s:password>  
  26.         <s:submit key="login" value="提交">s:submit>  
  27.     s:form>  
  28.   body>  
  29. html>  


[html]  view plain copy
  1.   

新建两个success.jsperror.jsp页面。后面action处理结果跳转有用,如果登陆成功则跳转到success.jsp,反之则跳转到error.jsp

5 新建一个以struts.xml为名的xml文件

  文件中的代码如下:

 

[html]  view plain copy
  1. xml version="1.0" encoding="UTF-8" ?>  
  2.   
  3.       "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.       "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5.   <struts>  
  6.        
  7.        
  8.        
  9.      <package name="riyun" extends="struts-default">  
  10.         <action name="login" class="com.riyun.action.LoginAction">  
  11.               
  12.             <result name="success">/success.jspresult>  
  13.             <result name="error">/error.jspresult>  
  14.         action>  
  15.      package>  
  16.   struts>  


6、在web.xml中添加struts拦截器。

    Web.xml的代码如下:

 

[html]  view plain copy
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    
  4.   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  5.     
  6.       
  7.     <filter>  
  8.         <filter-name>struts2filter-name>  
  9.         <filter-class>  
  10.             org.apache.struts2.dispatcher.FilterDispatcher              
  11.         filter-class>  
  12.     filter>  
  13.       
  14.     <filter-mapping>  
  15.         <filter-name>struts2filter-name>  
  16.         <url-pattern>/*url-pattern>  
  17.     filter-mapping>  
  18.       
  19.       
  20.     <welcome-file-list>  
  21.         <welcome-file>index.jspwelcome-file>  
  22.     welcome-file-list>  
  23.       
  24.  web-app>  


至此Struts2.3整合成功,接下来继续整合Spring3.2

7、导入所需springjar包如下;

对于Springjar包没有研究过,所以我这里把spring所有的jar都复制到了lib目录中去了。另外还需要导入struts2-spring-plugin-2.3.4.1.jar包。

8、在web-inf目录中新建一个applicationContext.xml为名的xml文件(该文件与web.xml是在同一级目录)

applicationContext.xml文件中的代码如下:

 

[html]  view plain copy
  1. xml version="1.0" encoding="UTF-8"?>  
  2. "http://www.springframework.org/dtd/spring-beans.dtd">  
  3. <beans>  
  4.     <bean id="userDao" class="com.riyun.daoImpl.UserDaoImpl">  bean>    
  5.     <bean id="login" class="com.riyun.action.LoginAction">    
  6.         <property name="userDao" ref="userDao" />    
  7.     bean>    
  8. beans>  


 

9、修改struts.xml文件,修改后的struts.xml文件中的代码如下

[html]  view plain copy
  1. xml version="1.0" encoding="UTF-8" ?>  
  2.   
  3.       "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.       "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5.   <struts>  
  6.        
  7.        
  8.      <constant name="struts.objectFactory" value="spring">constant>    
  9.        
  10.      <package name="riyun" extends="struts-default">  
  11.         <action name="login" class="com.riyun.action.LoginAction">  
  12.               
  13.             <result name="success">/success.jspresult>  
  14.             <result name="error">/error.jspresult>  
  15.         action>  
  16.      package>  
  17.   struts>  


 

10、修改web.xml文件,修改后的web.xml文件中的代码如下:

 

[html]  view plain copy
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    
  4.   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  5.     
  6.       
  7.      <context-param>  
  8.          <param-name>contextConfigLocationparam-name>  
  9.            
  10.            
  11.         
  12.     <listener>    
  13.         <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>    
  14.     listener>    
  15.        
  16.     <filter>  
  17.         <filter-name>struts2filter-name>  
  18.         <filter-class>  
  19.             org.apache.struts2.dispatcher.FilterDispatcher              
  20.         filter-class>  
  21.     filter>  
  22.       
  23.     <filter-mapping>  
  24.         <filter-name>struts2filter-name>  
  25.         <url-pattern>/*url-pattern>  
  26.     filter-mapping>  
  27.       
  28.       
  29.     <welcome-file-list>  
  30.         <welcome-file>index.jspwelcome-file>  
  31.     welcome-file-list>  
  32.       
  33.  web-app>  


 ok,到此为此Struts2.3整合Spring3.2就可以了。那实际项目中不可能不跟数据库打交道。常见的dao层用的是hibernate。但其实还有一些跟hibernate功能相似而且相对于hibernate来说配置更简单的dao层应用可以供我们选择。这里我就选用了JDBC。利用JDBC作为dao层的应用,每个dao层都要继承JDBCSupport类。

11、添加dao层,添加UserDao接口、添加UserDaoImpl实现接口类

UserDao接口的代码如下:

[java]  view plain copy
  1. package com.riyun.dao;  
  2.   
  3. public interface UserDao {  
  4.       
  5.     /*用户登录 
  6.      * pram:userName,passWord 
  7.      * return:boolean 
  8.      */  
  9.     public boolean login(String userName,String passWord);  
  10.   
  11. }  


UserDaoImpl实现接口类的代码如下:

 

[java]  view plain copy
  1. package com.riyun.daoImpl;  
  2.   
  3. import java.util.Map;  
  4.   
  5.   
  6. import org.springframework.dao.EmptyResultDataAccessException;  
  7. import org.springframework.jdbc.core.support.JdbcDaoSupport;  
  8.   
  9. import com.riyun.dao.UserDao;  
  10.   
  11. public class UserDaoImpl extends JdbcDaoSupport implements UserDao{  
  12.   
  13.     //用户登录  
  14.     public boolean login(String userName, String passWord) {  
  15.         // TODO Auto-generated method stub  
  16.         String sql="select job,ename from emp where ename=?";  
  17.         Map map=this.getJdbcTemplate().queryForMap(sql, new Object[] {userName});  
  18.         try{  
  19.             String pass=(String) map.get("job");  
  20.             if(passWord.equals(pass)){            
  21.                 return true;  
  22.             }else{  
  23.                 return false;  
  24.             }  
  25.         }catch(EmptyResultDataAccessException e){  
  26.             e.printStackTrace();  
  27.             return false;  
  28.         }         
  29.     }  
  30. }  

12、修改LoginAction类的代码,修改后的代码如下:


 

[java]  view plain copy
  1. package com.riyun.action;  
  2.   
  3. import org.apache.log4j.Logger;  
  4.   
  5. import com.opensymphony.xwork2.ActionSupport;  
  6. import com.riyun.dao.UserDao;  
  7.   
  8. public class LoginAction extends ActionSupport{  
  9.       
  10.     private static final long serialVersionUID = 1L;  
  11.       
  12.           
  13.     private UserDao userDao;  
  14.     private String userName;  
  15.     private String passWord;  
  16.       
  17.     public UserDao getUserDao() {  
  18.         return userDao;  
  19.     }  
  20.     public void setUserDao(UserDao userDao) {  
  21.         this.userDao = userDao;  
  22.     }  
  23.   
  24.     public String getUserName() {  
  25.         return userName;  
  26.     }  
  27.     public String getPassWord() {  
  28.         return passWord;  
  29.     }  
  30.     public void setUserName(String userName) {  
  31.         this.userName = userName;  
  32.     }  
  33.     public void setPassWord(String passWord) {  
  34.         this.passWord = passWord;  
  35.     }  
  36.       
  37.       
  38.     public String   execute() throws Exception{  
  39.         if(userDao.login(userName, passWord)){  
  40.             return SUCCESS;  
  41.         }else{  
  42.             return ERROR;  
  43.         }  
  44.     }  
  45.       
  46. }  

13、修改applicationContext.xml文件,修改后的文件代码如下:

[html]  view plain copy
  1. xml version="1.0" encoding="UTF-8"?>  
  2. "http://www.springframework.org/dtd/spring-beans.dtd">  
  3. <beans>  
  4.     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  destroy-method="close" dependency-check="none">  
  5.             <property name="driverClass">  
  6.                 <value>oracle.jdbc.driver.OracleDrivervalue>  
  7.             property>  
  8.             <property name="jdbcUrl">  
  9.                 <value>jdbc:oracle:thin:@localhost:1521:orclvalue>  
  10.             property>  
  11.             <property name="user">  
  12.                 <value>scottvalue>  
  13.             property>  
  14.             <property name="password">  
  15.                 <value>123value>  
  16.             property>  
  17.             

你可能感兴趣的:([转]Struts2.3 + Spring3.2 整合)