用maven整合struts+spring+hibernate之三 加入框架支持

来源:互联网 发布:dota2 数据bld 编辑:程序博客网 时间:2024/06/03 21:24

创建完web工程之后,一般我们就可以开始开发了。所以,这一节我们需要为这个web工程加入j2ee框架的支持。 


这里其实不太好分清楚先加哪后加哪,因为系统框架是需要整体运行的,相互的关系很紧密,比如我只加入struts2.那么在运行时会报错。因为struts2缺省是用spring来做容器的。(当然也可以修改,但这里不是不作讨论)。 

一、依赖包 
  1. <dependency>  
  2.       <groupId>org.apache.struts</groupId>  
  3.       <artifactId>struts2-core</artifactId>  
  4.       <version>2.0.9</version>  
  5.     </dependency>  
  6.     <dependency>  
  7.       <groupId>org.apache.struts</groupId>  
  8.       <artifactId>struts2-codebehind-plugin</artifactId>  
  9.       <version>2.0.9</version>  
  10.     </dependency>  
  11.     <dependency>  
  12.       <groupId>org.apache.struts</groupId>  
  13.       <artifactId>struts2-spring-plugin</artifactId>  
  14.       <version>2.0.9</version>  
  15.     </dependency>  
  16.     <dependency>  
  17.       <groupId>org.springframework</groupId>  
  18.       <artifactId>spring</artifactId>  
  19.       <version>2.5</version>  
  20.     </dependency>  
  21.     <dependency>  
  22.       <groupId>org.springframework</groupId>  
  23.       <artifactId>spring-hibernate3</artifactId>  
  24.       <version>2.0.6</version>  
  25.     </dependency>  
  26.     <dependency>  
  27.       <groupId>org.hibernate</groupId>  
  28.       <artifactId>hibernate</artifactId>  
  29.       <version>3.2.5.ga</version>  
  30.     </dependency>  
  31.     <dependency>  
  32.       <groupId>javax.persistence</groupId>  
  33.       <artifactId>persistence-api</artifactId>  
  34.       <version>1.0</version>  
  35.     </dependency>  
  36.     <dependency>  
  37.       <groupId>mysql</groupId>  
  38.       <artifactId>mysql-connector-java</artifactId>  
  39.       <version>5.0.5</version>  
  40.     </dependency>  
  41.     <dependency>  
  42.       <groupId>org.hibernate</groupId>  
  43.       <artifactId>hibernate-annotations</artifactId>  
  44.       <version>3.3.0.ga</version>  
  45.     </dependency>  
  46.     <dependency>  
  47.       <groupId>org.hibernate</groupId>  
  48.       <artifactId>hibernate-commons-annotations</artifactId>  
  49.       <version>3.3.0.ga</version>  
  50.     </dependency>  


以上不止加入struts支持,也加入了spring和hibernate及jpa的支持。其实这些只是主包,还有不少依赖包会自动加入到maven的仓库里去的。 

二、配置struts 
下面配置struts2,涉及到几个文件 
1、在web.xml加入以下内容: 
  1. <filter>  
  2.     <filter-name>struts2</filter-name>  
  3.     <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
  4. </filter>  
  5.   
  6. <filter-mapping>  
  7.     <filter-name>struts2</filter-name>  
  8.     <url-pattern>/*</url-pattern>  
  9. </filter-mapping>  


2、增加struts.xml文件 
这个文件主要配置struts的action及拦截器等,可以有多个(命名为struts-*.xml) 
位置在src\main\resources下,内容大致如下: 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  3.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  4.   
  5. <struts>  
  6.     <!-- Constants -->  
  7.     <constant name="struts.devMode" value="false"/>  
  8.     <constant name="struts.i18n.encoding" value="UTF-8"/>  
  9.     <constant name="struts.action.extension" value="html"/>  
  10.     <constant name="struts.objectFactory" value="spring"/>  
  11.     <constant name="struts.custom.i18n.resources" value="ApplicationResources,errors"/>  
  12.     <constant name="struts.multipart.maxSize" value="2097152"/>  
  13.     <constant name="struts.ui.theme" value="css_xhtml"/>  
  14.     <constant name="struts.codebehind.pathPrefix" value="/WEB-INF/pages/"/>  
  15.     <constant name="struts.enable.SlashesInActionNames" value="true"/>  
  16.   
  17.     <!-- Configuration for the default package. -->  
  18.     <package name="default" extends="struts-default">  
  19.         <interceptors>  
  20.             <!-- Copied from struts-default.xml and changed validation exclude methods -->  
  21.             <interceptor-stack name="defaultStack">  
  22.                 <interceptor-ref name="exception"/>  
  23.                 <interceptor-ref name="alias"/>  
  24.                 <interceptor-ref name="servlet-config"/>  
  25.                 <interceptor-ref name="prepare"/>  
  26.                 <interceptor-ref name="i18n"/>  
  27.                 <interceptor-ref name="chain"/>  
  28.                 <interceptor-ref name="debugging"/>  
  29.                 <interceptor-ref name="profiling"/>  
  30.                 <interceptor-ref name="scoped-model-driven"/>  
  31.                 <interceptor-ref name="model-driven"/>  
  32.                 <interceptor-ref name="fileUpload"/>  
  33.                 <interceptor-ref name="checkbox"/>  
  34.                 <interceptor-ref name="static-params"/>  
  35.                 <interceptor-ref name="params">  
  36.                     <param name="excludeParams">dojo\..*</param>  
  37.                 </interceptor-ref>  
  38.                 <interceptor-ref name="conversionError"/>  
  39.                 <interceptor-ref name="validation">  
  40.                     <param name="excludeMethods">cancel,execute,delete,edit,list</param>  
  41.                 </interceptor-ref>  
  42.                 <interceptor-ref name="workflow">  
  43.                     <param name="excludeMethods">input,back,cancel,browse</param>  
  44.                 </interceptor-ref>  
  45.             </interceptor-stack>  
  46.             <interceptor-stack name="fileUploadStack">  
  47.                 <interceptor-ref name="fileUpload"/>  
  48.                 <interceptor-ref name="defaultStack"/>  
  49.             </interceptor-stack>  
  50.         </interceptors>  
  51.   
  52.         <global-results>  
  53.             <result name="mainMenu" type="redirect-action">mainMenu</result>  
  54.             <result name="dataAccessFailure">/WEB-INF/pages/dataAccessFailure.jsp</result>  
  55.         </global-results>  
  56.   
  57.         <global-exception-mappings>  
  58.             <exception-mapping exception="org.springframework.dao.DataAccessException" result="dataAccessFailure"/>  
  59.         </global-exception-mappings>  
  60.     <action name="addUser" class="userAction" method="save">  
  61.             <result name="success">/WEB-INF/pages/user/list.jsp</result>  
  62.             <result name="input">/WEB-INF/pages/user/form.jsp</result>  
  63.         </action>  
  64.         <action name="toAddUser">  
  65.             <result>/WEB-INF/pages/user/form.jsp</result>  
  66.         </action>  
  67.         <!-- Add additional actions here -->  
  68.     </package>  
  69.   
  70. </struts>  


3、添加国际化支持 
也就是加几个资源文件主要是: 
ApplicationResources.properties 
ApplicationResources_zh_CN.properties 
这个就不我说了,文件位置在src\main\resources下 

4、添加action 
以用户为例UserAction.java: 

  1. package net.apex.framework.web.action;  
  2.   
  3. import net.apex.framework.model.User;  
  4. import com.opensymphony.xwork2.ActionSupport;  
  5.   
  6. /** 
  7.  * @author Administrator 
  8.  * 
  9.  */  
  10. public class UserAction extends ActionSupport {  
  11.     private User user;  
  12.   
  13.     public User getUser() {  
  14.         return user;  
  15.     }  
  16.   
  17.   
  18.     public void setUser(User user) {  
  19.         this.user = user;  
  20.     }  
  21.   
  22.     public String save(){  
  23.         System.out.println(user.getName());  
  24.         return SUCCESS;  
  25.     }  
  26.       
  27. }  

struts配置完毕 

三、配置spring 
1、web.xml 
加入以下代码: 
  1. <!--配置spring上下文(可选)-->  
  2. <context-param>  
  3.   <param-name>contextConfigLocation</param-name>  
  4.   <param-value>/WEB-INF/applicationContext*.xml</param-value>  
  5. </context-param>  
  6.   
  7. <!--加入spring支持-->  
  8. <listener>  
  9.   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  10. </listener>  


2、添加ApplicationContext.xml 
这个也可以有多个,内容大致如下: 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xmlns:tx="http://www.springframework.org/schema/tx"  
  6.     xsi:schemaLocation="  
  7.     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
  8.     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd  
  9.     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">  
  10.   
  11.     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  12.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
  13.         <property name="url" value="jdbc:mysql://localhost/test" />  
  14.         <property name="username" value="root" />  
  15.         <property name="password" value="1234" />  
  16.     </bean>  
  17.   
  18.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
  19.         <property name="dataSource" ref="dataSource"/>  
  20.         <property name="configLocation" value="classpath:hibernate.cfg.xml"/>  
  21.         <property name="hibernateProperties">  
  22.             <props>  
  23.                 <prop key="hibernate.dialect">${hibernate.dialect}</prop>  
  24.                 <prop key="hibernate.cache.use_second_level_cache">false</prop>  
  25.                 <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>  
  26.                 <prop key="show_sql">true</prop>  
  27.             </props>  
  28.                         <!-- Turn batching off for better error messages under PostgreSQL -->  
  29.             <!-- hibernate.jdbc.batch_size=0 -->  
  30.         </property>  
  31.     </bean>  
  32.   
  33.     <bean id="userAction" scope="prototype" class="net.apex.framework.web.action.UserAction"></bean>  
  34. </beans>  

这样struts、spring和hibernate框架都加入到我们的工程里了。 
在工程里添加一个jsp页面让它调用UserAction就可以跑起来了。。。
原创粉丝点击