Struts2.3.16+Spring3.2.8+Hibernate4.2.10全注解配置

  • 1 数据库配置

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=mysql

  • 2 log4j.xml
log4j.rootLogger=debug, stdout
log4j.logger.java.sql.Connection=info, stdout
log4j.logger.java.sql.Statement=debug, stdout
log4j.logger.java.sql.PreparedStatement=debug, stdout

log4j.logger.org.hibernate=error
log4j.logger.org.hibernate.SQL=debug
log4j.logger.org.hibernate.tool.hbm2ddl=debug

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p %d{yyyy-MM-dd HH:mm:ss} %c:%L - %m%n
log4j.category.org.springframework = ON

  • 3  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 >  com.lin </ groupId  >
        < artifactId >  com.lin.ssh.demo </ artifactId  >
        < version >  0.0.1-SNAPSHOT </ version  >
        < packaging >  jar </ packaging  >


        < properties >

              < checkstyle.config.location >  config/maven_checks.xml </ checkstyle.config.location  >

              < spring.version >  3.2.8.RELEASE </ spring.version  >
              < struts2.version >  2.3.16.1 </ struts2.version  >
              < hibernate.version >  4.2.10.Final </ hibernate.version  >
              < mybatis.version >  3.2.6 </ mybatis.version  >
              < mysql.version >  5.1.29 </ mysql.version  >


              < servlet-api.version >  2.5 </ servlet-api.version  >
              < jsp-api.version >  2.2 </ jsp-api.version  >
              < jstl.version >  1.2 </ jstl.version  >

              < fastjson.version >  1.1.39 </ fastjson.version  >

              < commons-dbcp2.version >  2.0 </ commons-dbcp2.version  >
              < commons-pool2.version >  2.2 </ commons-pool2.version  >
              < commons-logging.version >  1.1.3 </ commons-logging.version  >
              < commons-io.version >  1.3.2 </ commons-io.version  >
              < commons-lang3.version >  3.3.1 </ commons-lang3.version  >
              < commons-fileupload.version >  1.2.1 </ commons-fileupload.version  >

              < log4j.version >  1.2.17 </ log4j.version  >
              < slf4j.version >  1.7.6 </ slf4j.version  >
              < dom4j.version >  1.6.1 </ dom4j.version  >
              < jfreechart.version >  1.0.17 </ jfreechart.version  >
              < shiro.version >  1.2.3 </ shiro.version  >

              < aspectjweaver.version >  1.7.4 </ aspectjweaver.version  >
              < bonecp.version >  0.8.0.RELEASE </ bonecp.version  >
              < druid.version >  1.0.6 </ druid.version  >
              < c3p0.version >  0.9.2.1 </ c3p0.version  >
              < testng.version >  6.8.8 </ testng.version  >
              < junit.version >  4.11 </ junit.version  >
              < freemarker.version >  2.3.20 </ freemarker.version  >
              < velocity.version >  1.7 </ velocity.version  >
              < tapestry.version >  5.3.7 </ tapestry.version  >

              < asm.version >  4.2 </ asm.version  >
              < cglib.version >  3.1 </ cglib.version  >

              <!-- Plugin 的属性定义 -->
              < project.build.sourceEncoding >  UTF-8 </ project.build.sourceEncoding  >
              < jdk.version >  1.6 </ jdk.version  >
        </ properties >


        < name >  com.lin.ssh.demo </ name  >
        < url >  http://maven.apache.org </ url  >



        < dependencies >
              <!-- struts2 -->
              < dependency >
                    < groupId >  org.apache.struts </ groupId  >
                    < artifactId >  struts2-core </ artifactId  >
                    < version >  ${struts2.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.struts </ groupId  >
                    < artifactId >  struts2-spring-plugin  </ artifactId >
                    < version >  ${struts2.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.struts </ groupId  >
                    < artifactId >  struts2-json- plugin </  artifactId >
                    < version >  ${struts2.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.struts </ groupId  >
                    < artifactId >  struts2-dwr- plugin </  artifactId >
                    < version >  ${struts2.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.struts </ groupId  >
                    < artifactId >  struts2-rest-plugin  </ artifactId >
                    < version >  ${struts2.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.struts </ groupId  >
                    < artifactId >  struts2-javatemplates -plugin </ artifactId  >
                    < version >  ${struts2.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.struts </ groupId  >
                    < artifactId >  struts2-jfreechart -plugin </ artifactId  >
                    < version >  ${struts2.version} </ version  >
              </ dependency >


              < dependency >
                    < groupId >  org.apache.struts </ groupId  >
                    < artifactId >  struts2-convention-plugin  </ artifactId >
                    < version >  ${struts2.version} </ version  >
              </ dependency >


              <!-- hibernate -->

              < dependency >
                    < groupId >  org.hibernate </ groupId  >
                    < artifactId >  hibernate-core  </ artifactId >
                    < version >  ${hibernate.version} </ version  >
                    <!-- 因为struts2 中也有 javassist,所以要排除 -->
                    < exclusions >
                          < exclusion >
                                < groupId >  javassist </ groupId  >
                                < artifactId >  javassist </ artifactId  >
                          </ exclusion >
                    </ exclusions >
              </ dependency >



              <!-- mybaits -->
              < dependency >
                    < groupId >  org.mybatis </ groupId  >
                    < artifactId >  mybatis </ artifactId  >
                    < version >  ${mybatis.version} </ version  >
              </ dependency >

              <!-- JDBC驱动 -->
              < dependency >
                    < groupId >  mysql </ groupId  >
                    < artifactId >  mysql-connector-java  </ artifactId >
                    < version >  ${mysql.version} </ version  >
              </ dependency >


              <!-- spring相关 -->
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-core </ artifactId  >
                    < version >  ${spring.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-beans </ artifactId  >
                    < version >  ${spring.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-context </ artifactId  >
                    < version >  ${spring.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-jdbc  </ artifactId >
                    < version >  ${spring.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-web </ artifactId  >
                    < version >  ${spring.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-webmvc  </ artifactId >
                    < version >  ${spring.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-aop  </ artifactId >
                    < version >  ${spring.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-tx  </ artifactId >
                    < version >  ${spring.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-orm  </ artifactId >
                    < version >  ${spring.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-context-support </ artifactId  >
                    < version >  ${spring.version} </ version  >
              </ dependency >

              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-jms  </ artifactId >
                    < version >  ${spring.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.springframework.security </ groupId  >
                    < artifactId >  spring-security-core </ artifactId  >
                    < version >  3.2.4.RELEASE </ version  >
              </ dependency >




              <!-- 日志库 -->
              < dependency >
                    < groupId >  commons-logging </ groupId  >
                    < artifactId >  commons-logging </ artifactId  >
                    < version >  ${commons-logging.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  log4j </ groupId  >
                    < artifactId >  log4j </ artifactId  >
                    < version >  ${log4j.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.slf4j </ groupId  >
                    < artifactId >  slf4j-log4j12 </ artifactId  >
                    < version >  ${slf4j.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.slf4j </ groupId  >
                    < artifactId >  slf4j-api  </ artifactId >
                    < version >  ${slf4j.version} </ version  >
              </ dependency >


              <!-- 依赖的WEB类库 TOMCAT环境注释
            <dependency>
                  <groupId>javax.servlet</groupId>
                  <artifactId>javax.servlet- api</artifactId>
                  <version>3.1.0</version>
            </dependency>

            <dependency>
                  <groupId>javax.servlet</groupId>
                  <artifactId> servlet-api </artifactId>
                  <version>${ servlet-api.version}</version>
            </dependency>-->

              <!--⑤ 依赖的测试类库-->
              < dependency >
                    < groupId >  org.springframework </ groupId  >
                    < artifactId >  spring-test </ artifactId  >
                    < version >  ${spring.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  junit </ groupId  >
                    < artifactId >  junit </ artifactId  >
                    < version >  ${junit.version} </ version  >
                    < scope >  test </ scope  >
              </ dependency >
              < dependency >
                    < groupId >  org.testng </ groupId  >
                    < artifactId >  testng </ artifactId  >
                    < version >  ${testng.version} </ version  >
              </ dependency >

              <!-- 连接池 -->
              < dependency >
                    < groupId >  com.alibaba </ groupId  >
                    < artifactId >  druid </ artifactId  >
                    < version >  ${druid.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  com.jolbox </ groupId  >
                    < artifactId >  bonecp-spring  </ artifactId >
                    < version >  ${bonecp.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  com.jolbox </ groupId  >
                    < artifactId >  bonecp </ artifactId  >
                    < version >  ${bonecp.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  com.mchange </ groupId  >
                    < artifactId >  c3p0 </ artifactId  >
                    < version >  ${c3p0.version} </ version  >
              </ dependency >


              <!-- shiro -->
              < dependency >
                    < groupId >  org.apache.shiro </ groupId  >
                    < artifactId >  shiro-core  </ artifactId >
                    < version >  ${shiro.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.shiro </ groupId  >
                    < artifactId >  shiro-web  </ artifactId >
                    < version >  ${shiro.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.shiro </ groupId  >
                    < artifactId >  shiro-spring  </ artifactId >
                    < version >  ${shiro.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.shiro </ groupId  >
                    < artifactId >  shiro-ehcache </ artifactId >
                    < version >  ${shiro.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.shiro </ groupId  >
                    < artifactId >  shiro-aspectj </ artifactId >
                    < version >  ${shiro.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.shiro </ groupId  >
                    < artifactId >  shiro-quartz  </ artifactId >
                    < version >  ${shiro.version} </ version  >
              </ dependency >


              <!-- 模板技术 -->
              < dependency >
                    < groupId >  org.freemarker </ groupId  >
                    < artifactId >  freemarker </ artifactId  >
                    < version >  ${freemarker.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.velocity </ groupId  >
                    < artifactId >  velocity </ artifactId  >
                    < version >  ${velocity.version} </ version  >
              </ dependency >
            

              <!-- 依赖的公共类库-->
              < dependency >
                    < groupId >  org.apache.commons </ groupId  >
                    < artifactId >  commons-dbcp2 </ artifactId  >
                    < version >  ${commons-dbcp2.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.commons </ groupId  >
                    < artifactId >  commons-pool2 </ artifactId  >
                    < version >  ${commons-pool2.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.commons </ groupId  >
                    < artifactId >  commons-io  </ artifactId >
                    < version >  ${commons-io.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.commons </ groupId  >
                    < artifactId >  commons-lang3 </ artifactId  >
                    < version >  ${commons-lang3.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.commons </ groupId  >
                    < artifactId >  commons-proxy  </ artifactId >
                    < version >  1.0 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.commons </ groupId  >
                    < artifactId >  commons-jexl  </ artifactId >
                    < version >  2.1.1 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.commons </ groupId  >
                    < artifactId >  commons-exec  </ artifactId >
                    < version >  1.2 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.commons </ groupId  >
                    < artifactId >  commons-compress </ artifactId  >
                    < version >  1.8 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.commons </ groupId  >
                    < artifactId >  commons-daemon </ artifactId  >
                    < version >  1.0.9 </ version  >
              </ dependency >

              < dependency >
                    < groupId >  org.apache.commons </ groupId  >
                    < artifactId >  commons-math </ artifactId  >
                    < version >  2.2 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.commons </ groupId  >
                    < artifactId >  commons-collections4 </ artifactId  >
                    < version >  4.0 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.kuali.commons </ groupId  >
                    < artifactId >  commons-beanutils  </ artifactId >
                    < version >  1.8.3-kuali-4  </ version >
              </ dependency >
              < dependency >
                    < groupId >  commons-dbutils  </ groupId >
                    < artifactId >  commons-dbutils  </ artifactId >
                    < version >  1.5 </ version  >
              </ dependency >

              <!-- 缓存 -->
              < dependency >
                    < groupId >  net.sf.ehcache </ groupId  >
                    < artifactId >  ehcache </ artifactId  >
                    < version >  2.8.1 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  com.googlecode.xmemcached </ groupId  >
                    < artifactId >  xmemcached </ artifactId  >
                    < version >  1.4.3 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  opensymphony </ groupId  >
                    < artifactId >  oscache </ artifactId  >
                    < version >  2.4.1 </ version  >
              </ dependency >

              <!-- cglib asm -->
              < dependency >
                    < groupId >  cglib </ groupId  >
                    < artifactId >  cglib-nodep </ artifactId >
                    < version >  ${cglib.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  cglib </ groupId  >
                    < artifactId >  cglib </ artifactId  >
                    < version >  ${cglib.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.ow2.asm  </ groupId >
                    < artifactId >  asm </ artifactId  >
                    < version >  ${asm.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.ow2.asm  </ groupId >
                    < artifactId >  asm-commons  </ artifactId >
                    < version >  ${asm.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.ow2.asm  </ groupId >
                    < artifactId >  asm-util </ artifactId >
                    < version >  ${asm.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.ow2.asm  </ groupId >
                    < artifactId >  asm-all </ artifactId  >
                    < version >  ${asm.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.ow2.asm  </ groupId >
                    < artifactId >  asm-analysis  </ artifactId >
                    < version >  ${asm.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.ow2.asm  </ groupId >
                    < artifactId >  asm-tree </ artifactId  >
                    < version >  ${asm.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.ow2.asm  </ groupId >
                    < artifactId >  asm-debug-all  </ artifactId >
                    < version >  ${asm.version} </ version  >
              </ dependency >


              <!-- 其他 -->
              < dependency >
                    < groupId >  com.alibaba </ groupId  >
                    < artifactId >  fastjson </ artifactId  >
                    < version >  ${fastjson.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.aspectj </ groupId  >
                    < artifactId >  aspectjweaver </ artifactId  >
                    < version >  ${aspectjweaver.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  dom4j </ groupId  >
                    < artifactId >  dom4j </ artifactId  >
                    < version >  ${dom4j.version} </ version  >
              </ dependency >
              < dependency >
                    < groupId >  com.belerweb </ groupId  >
                    < artifactId >  pinyin4j </ artifactId  >
                    < version >  2.5.0 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  com.darwinsys </ groupId  >
                    < artifactId >  hirondelle-date4j  </ artifactId >
                    < version >  1.5.1 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  net.sourceforge.htmlunit </ groupId  >
                    < artifactId >  htmlunit </ artifactId  >
                    < version >  2.14 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  net.sourceforge.jwebunit </ groupId  >
                    < artifactId >  jwebunit-htmlunit-plugin </ artifactId  >
                    < version >  3.2 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  net.sourceforge.javacsv </ groupId  >
                    < artifactId >  javacsv </ artifactId  >
                    < version >  2.0 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.jsoup </ groupId  >
                    < artifactId >  jsoup </ artifactId  >
                    < version >  1.7.3 </ version  >
              </ dependency >



              < dependency >
                    < groupId >  org.apache.commons </ groupId  >
                    < artifactId >  commons-email </ artifactId  >
                    < version >  1.3.2 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  commons-beanutils  </ groupId >
                    < artifactId >  commons-beanutils  </ artifactId >
                    < version >  1.9.2 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  commons-collections </ groupId  >
                    < artifactId >  commons-collections </ artifactId  >
                    < version >  3.2.1 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  commons-configuration </ groupId  >
                    < artifactId >  commons-configuration </ artifactId  >
                    < version >  1.10 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  commons-dbcp  </ groupId >
                    < artifactId >  commons-dbcp  </ artifactId >
                    < version >  1.4 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  commons-fileupload  </ groupId >
                    < artifactId >  commons-fileupload </ artifactId  >
                    < version >  1.3.1 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.httpcomponents </ groupId  >
                    < artifactId >  httpclient </ artifactId  >
                    < version >  4.3.4 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  commons-validator </ groupId  >
                    < artifactId >  commons-validator </ artifactId  >
                    < version >  1.4.0 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  joda-time </ groupId  >
                    < artifactId >  joda-time </ artifactId  >
                    < version >  2.2 </ version  >
              </ dependency >


              < dependency >
                    < groupId >  javax.activation </ groupId  >
                    < artifactId >  activation </ artifactId  >
                    < version >  1.0.2 </ version  >
                    < scope >  provided </ scope  >
              </ dependency >



              < dependency >
                    < groupId >  javax.xml </ groupId  >
                    < artifactId >  jaxrpc-api </ artifactId  >
                    < version >  1.1 </ version  >
                    < scope >  provided </ scope  >
              </ dependency >


              < dependency >
                    < groupId >  javax.mail </ groupId  >
                    < artifactId >  mail </ artifactId  >
                    < version >  1.3.1 </ version  >
                    < scope >  provided </ scope  >
              </ dependency >
              < dependency >
                    < groupId >  javax.xml </ groupId  >
                    < artifactId >  namespace </ artifactId  >
                    < version >  1.0.1 </ version  >
                    < scope >  provided </ scope  >
              </ dependency >
              < dependency >
                    < groupId >  xerces </ groupId  >
                    < artifactId >  xmlParserAPIs </ artifactId  >
                    < version >  2.6.2 </ version  >
                    < scope >  provided </ scope  >
              </ dependency >
              < dependency >
                    < groupId >  xml-apis </ groupId  >
                    < artifactId >  xml-apis </ artifactId  >
                    < version >  1.4.01 </ version  >
              </ dependency >
              < dependency >
                    < groupId >  org.apache.openejb </ groupId  >
                    < artifactId >  javaee-api </ artifactId  >
                    < version >  5.0-1 </ version  >
                    < scope >  provided </ scope  >
              </ dependency >
              < dependency >
                    < groupId >  javax.faces </ groupId  >
                    < artifactId >  jsf-api </ artifactId  >
                    < version >  1.2_04 </ version  >
                    < scope >  provided </ scope  >
              </ dependency >
              < dependency >
                    < groupId >  javax.servlet </ groupId  >
                    < artifactId >  jstl </ artifactId  >
                    < version >  1.2 </ version  >
                    < scope >  compile </ scope  >
              </ dependency >
              <!-- 
            <dependency>
                  <groupId>javax.servlet.jsp</groupId>
                  <artifactId>jsp-api</artifactId>
                  <version>2.1</version>
                  <scope>compile</scope>
            </dependency>
            -->
              < dependency >
                    < groupId >  javax.faces </ groupId  >
                    < artifactId >  jsf-impl </ artifactId  >
                    < version >  1.2_04 </ version  >
                    < scope >  provided </ scope  >
              </ dependency >
        </ dependencies >

</ project >


  • 4 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:tx = "http://www.springframework.org/schema/tx"
        xmlns:aop = "http://www.springframework.org/schema/aop"  xmlns:context = "http://www.springframework.org/schema/context"
        xsi:schemaLocation = "http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd"
        default-autowire = "byName"  >

        < context:property-placeholder  location = "classpath*:conf/jdbc.properties"  />
        < context:component-scan  base-package = "com.lin.ssh.demo.dao"  />
        < context:component-scan  base-package = "com.lin.ssh.demo.service"  />
        < context:component-scan  base-package = "com.lin.ssh.demo.service.impl"  />

        <!-- 配置系统的数据源 -->
        < bean  id =  "dataSource"  class = "com.alibaba.druid.pool.DruidDataSource"
              init-method = "init"  destroy-method =  "close" >
              < property  name = "driverClassName"  value = "${jdbc.driver}"  />
              < property  name = "url"  value = "${jdbc.url}"  />
              < property  name = "username"  value = "${jdbc.username}"  />
              < property  name = "password"  value = "${jdbc.password}"  />
              < property  name = "filters"  value = "stat"  />
              < property  name = "maxActive"  value = "10"  />
              < property  name = "initialSize"  value = "1"  />
              < property  name = "maxWait"  value = "60000"  />
              < property  name = "minIdle"  value = "1"  />
              < property  name = "timeBetweenEvictionRunsMillis"  value = "60000"  />
              < property  name = "minEvictableIdleTimeMillis"  value = "300000"  />
              < property  name = "validationQuery"  value = "SELECT 'x'"  />
              < property  name = "testWhileIdle"  value = "true"  />
              < property  name = "testOnBorrow"  value = "false"  />
              < property  name = "testOnReturn"  value = "false"  />
              < property  name = "poolPreparedStatements"  value = "true"  />
              < property  name = "maxPoolPreparedStatementPerConnectionSize"
                    value = "50"  />
              < property  name = "maxOpenPreparedStatements"  value = "100"  />
        </ bean >

        <!-- 配置hibernate session工厂 -->
        < bean  id =  "sessionFactory"
              class = "org.springframework.orm.hibernate4.LocalSessionFactoryBean"  >
              < property  name = "dataSource"  ref = "dataSource"  />
              < property  name = "hibernateProperties"  >
                    < props >
                          < prop  key = "hibernate.dialect"  > org.hibernate.dialect.MySQL5InnoDBDialect </ prop  >
                          < prop  key = "hibernate.current_session_context_class"  > org.springframework.orm.hibernate4.SpringSessionContext
                          </ prop >
                          < prop  key = "hibernate.show_sql"  > true </  prop >
                          < prop  key = "hibernate.format_sql"  > true </  prop >
                          < prop  key = "hibernate.hbm2ddl.auto"  > update </  prop >
                    </ props >
              </ property >

              <!-- 自动扫描注解方式配置的 hibernate类文件 -->
              < property  name = "packagesToScan"  >
                    < list >
                          < value >  com.lin.ssh.demo.model </ value  >
                    </ list >
              </ property >

              <!-- 自动扫描hbm方式配置的hibernate 文件和.hbm文件 -->
              <!--
                  <property name="mappingDirectoryLocations"> <list>
                  <value>classpath:sy/ hbm</value> </list> </property>
            -->
        </ bean >



        < bean  id =  "transactionManager"
              class = "org.springframework.orm.hibernate4.HibernateTransactionManager"  >
              < property  name = "sessionFactory"  ref = "sessionFactory"  />
        </ bean >


        < tx:advice  id =  "txAdvice"  transaction-manager  = "transactionManager" >
              < tx:attributes >
                    < tx:method  name = "select*"  read-only =  "true"  />
                    < tx:method  name = "get*"  read-only =  "true"  />
                    < tx:method  name = "load*"  read-only =  "true"  />
                    < tx:method  name = "find*"  read-only =  "true"  />
                    < tx:method  name = "query*"  read-only =  "true"  />
                    < tx:method  name = "read*"  read-only =  "true"  />
                    < tx:method  name = "sync*"  />
                    < tx:method  name = "*"  propagation =  "REQUIRED"  rollback-for = "Exception"  />
              </ tx:attributes >
        </ tx:advice >

        < aop:config  proxy-target-class = "true"  >

              < aop:pointcut  expression = "this(com.lin.ssh.demo.service.IBaseService)"
                    id =  "transactionPointcut"  />
              < aop:advisor  advice-ref = "txAdvice"  pointcut-ref = "transactionPointcut"  />
        </ aop:config >
</ beans >

  • 5 Struts2配置
<? xml  version = "1.0"  encoding =  "UTF-8"  ?>
<! DOCTYPE  struts  PUBLIC
     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     "http://struts.apache.org/dtds/struts-2.3.dtd"  >
< struts >
        <!-- 开发模式 -->
        < constant  name = "struts.devMode"  value = "true"  />
        <!-- Web运用编码 -->
        < constant  name = "struts.i18n.encoding"  value = "UTF-8"  />
        <!--搜索视图资源的路径-->
        < constant  name = "struts.convention.result.path"  value = "/pages"  />
        <!--搜索Action资源的包路径-->
        < constant  name = "struts.convention.package.locators"  value = "web,action"  />
        <!-- Action扩展名 -->
        < constant  name = "struts.action.extension"  value = "action,do,htm"  />
        <!-- Action后缀名 -->
        < constant  name = "struts.convention.action.suffix"  value = "Action"  />


        <!-- 指定由spring负责action的创建   -->
        < constant  name = "struts.objectFactory"  value = "spring"  />
        <!--
            指定spring框架的装配模式,装配方式有: name, type, auto, and constructor (name
            是默认装配模式)
      -->
        < constant  name = "struts.objectFactory.spring.autoWire"  value = "name"  />

        <!-- 该属性指定整合spring时,是否对bean进行缓存,值为true or false,默认为true -->
        < constant  name = "struts.objectFactory.spring.useClassCache"  value = "true"  />
      
        <!-- struts配置文件修改后,是否重新加载,开发模式下用 true,生产环境改成false -->
        < constant  name = "struts.configuration.xml.reload"  value = "true"  />

        < constant  name = "struts.serve.static.browserCache"  value = "false"  />
 

        <!-- 该属性指定处理 MIME-type multipart/form-data,文件上传 -->
        < constant  name = "struts.multipart.parser"  value = "cos"  />
        < constant  name = "struts.multipart.parser"  value = "pell"  />
        < constant  name = "struts.multipart.parser"  value = "jakarta"  />

        <!-- 指定上传文件时的临时目录,默认使用 javax.servlet.context.tempdir -->
        < constant  name = "struts.multipart.saveDir"  value = "/tmpuploadfiles"  />

        <!-- 配置文件上传大小上限,现今最大上限为50MB -->
        < constant  name = "struts.multipart.maxSize"  value = "500971520"  />

        <!-- 被 FilterDispatcher使用指定浏览器是否缓存静态内容,测试阶段设置为false,发布阶段设置为true. -->
        < constant  name = "struts.serve.static.browserCache"  value = "true"  />

        <!-- 设置是否支持动态方法调用,true为支持,false不支持. -->
        < constant  name = "struts.enable.DynamicMethodInvocation"  value = "true"  />

        <!-- 设置是否可以在action中使用斜线,默认为false不可以,想使用需设置为true. -->
        < constant  name = "struts.enable.SlashesInActionNames"  value = "true"  />

        <!-- 是否允许使用表达式语法,默认为true. -->
        < constant  name = "struts.tag.altSyntax"  value = "true"  />

        <!-- 设置是否每次请求,都重新加载资源文件,默认值为false. -->
        < constant  name = "struts.i18n.reload"  value = "false"  />

        < package  name = "demoPackage"  extends = "struts-default"  namespace = "/demo"  >
              < global-results >
                    < result  name = "success"  > /pages/index.jsp </  result >
                    < result  name = "login"  > /index.jsp </  result >
                    < result  name = "error"  > /error.jsp </  result >
              </ global-results >
        </ package >

</ struts >
  

  • 6 web.xml

<? xml  version = "1.0"  encoding =  "UTF-8" ?>
< web-app  version = "2.5"  xmlns = "http://java.sun.com/xml/ns/javaee"
        xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  >

        < context-param >
              < param-name > log4jConfigLocation </ param-name >
              < param-value > classpath:conf/log4j.properties </ param-value >
        </ context-param >

        < context-param >
              < param-name > contextConfigLocation </ param-name  >
              < param-value > classpath:conf/applictionContext.xml </ param-value >
        </ context-param >
        < listener >
              < listener-class >  org.springframework.web.util.Log4jConfigListener </ listener-class  >
        </ listener >
        < listener >
              < listener-class >  org.springframework.web.context.ContextLoaderListener  </ listener-class >
        </ listener >
        < listener >
              < listener-class >  org.springframework.web.context.request.RequestContextListener  </ listener-class >
        </ listener >
        < listener >
              < listener-class >  org.springframework.web.util.IntrospectorCleanupListener  </ listener-class >
        </ listener >

        < filter >
              < filter-name >  encodingFilter </ filter-name >
              < filter-class >  org.springframework.web.filter.CharacterEncodingFilter  </ filter-class >
              < init-param >
                    < param-name >  encoding </ param-name >
                    < param-value >  UTF-8 </ param-value >
              </ init-param >
        </ filter >
        < filter-mapping >
              < filter-name > encodingFilter </ filter-name >
              < url-pattern > /* </ url-pattern >
        </ filter-mapping >
        < 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 >  /* </  url-pattern >
        </ filter-mapping >


        < welcome-file-list >
              < welcome-file >  login.html </ welcome-file  >
        </ welcome-file-list >
</ web-app >
  • 7 UserAction
 
package com.lin.ssh.demo.web.action;

import java.util.List;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.lin.ssh.demo.model.UserBean;
import com.lin.ssh.demo.service.IUserService;
import com.opensymphony.xwork2.ActionSupport;

//@ParentPackage("demoPackage")
@Namespace("/demo")
@Component
@Scope("prototype")
@Action("userAction")
public class UserAction extends ActionSupport {

     private IUserService userService;
     private UserBean user;
     private List<UserBean> userList;

     /**
     * http://127.0.0.1:8080/ssh/demo/regUser!index.do
     * @return
     */
     @Action(value = "regUser", results = {
               @Result(name = "success", location = "/pages/login.jsp"),
               @Result(name = "input", location = "/pages/error.jsp") })
     public String index() {
          System.out.println("----reg page----");
          return SUCCESS;
     }

     @Action(value = "saveUser", results = {
               @Result(name = "list", location = "/pages/list.jsp"),
               @Result(name = "input", location = "/pages/error.jsp"),
               @Result(name = "success", location = "/pages/index.jsp")})
     public String save() {
          System.out.println("----save----");
          System.out.println("===="+user);
          try {
               userService.saveUser(user);
          } catch (Exception e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
          }
          return SUCCESS;
     }

     /**
     * http://127.0.0.1:8080/ssh/demo/userAction!list.do
     */
     public void list() {
          System.out.println("----list----");
          System.out.println(user);
          try {
               userList = userService.queryUserAll();
               System.out.println("userList ==" + userList.get(0).toString());
          } catch (Exception e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
          }
          // return SUCCESS;
     }

     public List<UserBean> getUserList() {
          return userList;
     }

     public void setUserList(List<UserBean> userList) {
          this.userList = userList;
     }

     public IUserService getUserService() {
          return userService;
     }

     @Autowired
     public void setUserService(IUserService userService) {
          this.userService = userService;
     }

     public UserBean getUser() {
          return user;
     }

     public void setUser(UserBean user) {
          this.user = user;
     }

}
  • 8 UserDAO

package com.lin.ssh.demo.dao;

import java.util.List;

import com.lin.ssh.demo.model.UserBean;

public interface IUserDAO {
     public void save(UserBean entity) throws Exception;

     public List<UserBean> find(Class<UserBean> clazz) throws Exception;
}


package com.lin.ssh.demo.dao;

import java.util.List;

import org.springframework.stereotype.Repository;

import com.lin.ssh.demo.model.UserBean;

@Repository("userDao")
public class UserDAO extends DaoSupport implements IUserDAO {

     /**
     * 保存对象
     *
     * @param entity
     * @throws Exception
     */
     @Override
     public void save(UserBean entity) throws Exception {
          super.save(entity);

     }

     @Override
     public List<UserBean> find(Class clazz) throws Exception {
          return super.findAll(clazz);
     }
}


package com.lin.ssh.demo.dao;

import static org.hibernate.criterion.Restrictions.eq;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * 
 * @author linhz
 * 
 */
public class DaoSupport {

private SessionFactory sessionFactory;

@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}

protected Session getSession() {
return sessionFactory.getCurrentSession();
}

protected void save(Object obj) {
getSession().save(obj);
}

protected <T> T get(Class<T> clazz, int id) {
return (T) getSession().get(clazz, id);
}

protected <T> List<T> findByProperty(Class<T> clazz, String property,
Object value) {
return getSession().createCriteria(clazz).add(eq(property, value))
.list();
}

protected <T> List<T> findAll(Class<T> clazz) {
return getSession().createCriteria(clazz).list();
}

protected void update(Object obj) {
getSession().update(obj);
}

protected void delete(Class clazz, int id) {
getSession().delete(get(clazz, id));
}

protected void delete(Object obj) {
getSession().delete(obj);
}

}


  • 9 Model POJO
package  com.lin.ssh.demo.model;

import  javax.persistence.Column;
import  javax.persistence.Entity;
import  javax.persistence.GeneratedValue;
import  javax.persistence.Id;
import  javax.persistence.Table;
import  static  javax.persistence.GenerationType. IDENTITY ;

@Entity
@Table(name = "tb_demo", schema = "test")
public  class  UserBean  implements  java.io.Serializable {
     @Id
     @GeneratedValue (strategy =  IDENTITY )
     @Column (name =  "id" , unique =  true , nullable =  false )
     private  Long  id ;
     @Column (name =  "username" , length = 32)
     private  String  username ;
     @Column (name =  "password" , length = 16)
     private  String  password ;
     public  UserBean() {
    }
     public  UserBean(String username, String password) {
         this . username  = username;
         this . password  = password;
    }
     public  Long getId() {
         return  id  ;
    }
     public  void  setId(Long id) {
         this . id  = id;
    }
     public  String getUsername() {
         return  username  ;
    }
     public  void  setUsername(String username) {
         this . username  = username;
    }
     public  String getPassword() {
         return  password  ;
    }
     public  void  setPassword(String password) {
         this . password  = password;
    }
     @Override
     public  String toString() {
         return  "User{"  +
                 "id="  +  id  +
                 ", username='"  +  username  +  '\''  +
                 ", password='"  +  password  +  '\''  +
                 '}' ;
    }
}
  • 10 UserService
package  com.lin.ssh.demo.service;

public  interface  IBaseService {

}

package  com.lin.ssh.demo.service;

import  java.util.List;

import  com.lin.ssh.demo.model.UserBean;

public  interface  IUserService  extends  IBaseService {
        public  void  saveUser(UserBean user)  throws  Exception;

        public  List<UserBean> queryUserAll()  throws  Exception;
}


package com.lin.ssh.demo.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.lin.ssh.demo.dao.UserDAO;
import com.lin.ssh.demo.model.UserBean;
import com.lin.ssh.demo.service.IUserService;

@Service("userService")
public class UserServiceImpl implements IUserService {

     @Resource
     private UserDAO userDao;

     public void saveUser(UserBean user) throws Exception {
          userDao.save(user);
     }

     public List<UserBean> queryUserAll() throws Exception {
          return userDao.find(UserBean.class);
     }

}
 
  • 11 测试页面 index.jsp
<%@  page  contentType =  "text/html;charset=UTF-8"  language =  "java" %>
<%
      String path = request.getContextPath();
      String contextPath = request.getScheme() +  "://"
                  + request.getServerName() +  ":"  + request.getServerPort()
                  + path +  "/" ;
%>
< html >
        < head >
              < title ></  title >
        </ head >

        < body >
              < form  action = "  <%= contextPath %>  /demo/saveUser!save.action"  method = "get"  >
                    < br >
                  用户名:
                    < input  type = "text"  name = "user.username"  />
                    < br >
                  密码:
                    < input  type = "text"  name = "user.password"  />
                    < input  type = "submit"  name = "保存"  />
              </ form >
        </ body >
</ html >

  • 12 SQL语句脚本 
use test ;
CREATE TABLE `tb_demo` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) DEFAULT NULL,
  `password` varchar(16) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8


  • 13 测试
webcontent部署为:ssh

访问地址:

http://127.0.0.1:8080/ssh/demo/regUser!index.do

数据正常插入


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值