myeclipse搭建SSH2(struts2+spring+hibernate)整合框架平台

spring | 2019-09-13 10:02:39

目的:搭建java SSH2(struts2+spring+hibernate)经典框架,供以后的项目直接使用。本例让spring管理struts2和hibernate的事务。贴出详细的xml配置。

1.新建web项目
    1)打开myeclipse,我的myeclipse10
    2)菜单【file】-【new】-【web project】
    3)填写项目名称“ssh“,然后点击finish完成。

1.jpg


2.先添加整合Spring
    1)右键点击项目选择【myeclipse】-【add spring capabilites】

2.jpg


    2)选择如图spring 3.1 core Libraries,spring 3.1 persistence Libraries,spring 3.1 web Libraries包,并且还要选择把jar包复制到web中lib下(避免把项目发给别人或上传到svn后,别人导入项目没有你的环境)。点击next。

3.jpg


    3)接下来把spring 配置文件放到web-inf中,最好放在这里面。

4.jpg

点击finish就完成spring的配置了。

3.添加hibernate整合
    1)右键点击项目选择【myeclipse】-【add hibernate capabilites】,同样将jar复制到web下。然后点击next。

5.jpg

    

    2)选择spring配置文件将hibernate交给spring管理。点击next.

6.jpg

 

    3)选择已存在的spring文件。点击next。

7.jpg


    4)这里需要选择你新建的JDBC连接,如果没有新建的话去 DB Browser(Windows→Show View→Other→MyEclipse Database→DB Browser)里面新建。点击next.

8.jpg


    5)不创建SessionFactory,因为前边这个已经被SprIng整合进去了

9.jpg

点击finish完成hibernate的配置。


3.添加struts2整合
  1)右键点击项目选择【myeclipse】-【add struts capabilites】,选择struts2.1。然后点击next。

10.jpg


    2)选择struts2 jar包。

11.jpg

点击Finish完成了整个ssh2框架的搭建。搭建好的项目目录如下:

12.jpg

4.xml配置。
    1)web.xml(注意添加了spring的listener)

<?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_3_0.xsd" version="3.0">
  <display-name></display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
                  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
          </filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.action</url-pattern>
  </filter-mapping>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
</web-app>


    2)struts.xml(注意我这里的配置是action输出json,并且我是交给了spring管理action的,bean是和spring中对应的)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
        
        <constant name="struts.objectFactory" value="spring" />
        <constant name="struts.multipart.maxSize" value="1000000000"/>
        
        <package name="action" namespace="/" extends="struts-default,json-default">  
                <action name="userAction" class="userAction"><result type="json"><param name="root">json</param></result></action>
        </package>
        
</struts>

    3)applicationContext.xml
        a.这里我配置了事物回滚,一个action一个事物
        b.action的bean要配置scope="prototype",spring默认不是多线程,而action是多线程的。
        c.配置里面的bean都是by name,不要奇怪为啥没有ref

<?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:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:p="http://www.springframework.org/schema/p"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"
        default-autowire="byName">
        <!-- 数据库配置 -->
        <bean id="dataSource"
                class="org.apache.commons.dbcp.BasicDataSource">
                <property name="driverClassName"
                        value="com.mysql.jdbc.Driver">
                </property>
                <property name="url" value="jdbc:mysql://localhost:3306/ckd_ios?characterEncoding=utf-8"></property>
                <property name="username" value="root"></property>
                <property name="password" value=""></property>
        </bean>
        <bean id="sessionFactory"
                class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                <property name="dataSource">
                        <ref bean="dataSource" />
                </property>
                <property name="hibernateProperties">
                        <props>
                                <prop key="hibernate.dialect">
                                        org.hibernate.dialect.MySQLDialect
                                </prop>
                                <prop key="hibernate.hbm2ddl.auto">validate</prop>
                        </props>
                </property>
                <property name="mappingResources">
                        <list>
                                <!--配置dao也要在这里配置一下-->
                                <value>dao/user/User.hbm.xml</value>
                        </list>
                </property>
        </bean>
        <!--配置事物回滚-->
        <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
                <property name="sessionFactory">
                        <ref bean="sessionFactory" />
                </property>
        </bean>
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
                <tx:attributes>
                        <tx:method name="*" propagation="REQUIRED" />
                </tx:attributes>
        </tx:advice>
        <aop:config>
                <aop:pointcut id="allDaoMethod" expression="execution(* service.*.*(..))" />
                <aop:advisor advice-ref="txAdvice" pointcut-ref="allDaoMethod" />
        </aop:config>
        
        
        <!-- action -->
        <bean id="userAction" class="action.UserAction" scope="prototype" />
        
        <!-- services -->
        <bean id="userService" class="service.UserService" />
        
        <!-- dao -->
        <bean id="userDAO" class="dao.user.UserDAO">
                <property name="sessionFactory">
                        <ref bean="sessionFactory" />
                </property>
        </bean>
        
        
</beans>


   4)log4j配置

#日志文件输出
# Root logger option
log4j.rootLogger=INFO,console,dailyFile
##Daily log:
log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyFile.File=../logs/ckdLog/ckd.log
log4j.appender.dailyFile.Append=true
log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout  
log4j.appender.dailyFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n
log4j.appender.dailyFile.Threshold=INFO
log4j.appender.dailyFile.DatePattern='.'yyyy-MM-dd 
#控制台输出
# Direct log messages to console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=INFO
log4j.appender.console.ImmediateFlush=false
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %-5p %c{1}\:%L - %m%n

登录后即可回复 登录 | 注册
    
关注编程学问公众号