zoukankan      html  css  js  c++  java
  • spring 框架整合

    struts hibernate spring

    先贴出框架整合需要的maven

    <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/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.kaishengit</groupId>
      <artifactId>urls</artifactId>
      <packaging>war</packaging>
      <version>0.0.1-SNAPSHOT</version>
      <name>urls Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
        </dependency>
        <dependency>
          <groupId>jstl</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
        </dependency>
        
        
        
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>
        <!-- orm是spring和hibernate整合需要的 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>
        <!-- 和servlet结合需要的 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>
        
        
        
        
        <!-- Hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.2.0.Final</version>
        </dependency>
        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache-core</artifactId>
            <version>2.6.6</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-ehcache</artifactId>
            <version>4.2.0.Final</version>
        </dependency>
    
    
        
        <!-- Struts2 -->
        <dependency>
          <groupId>org.apache.struts</groupId>
          <artifactId>struts2-core</artifactId>
          <version>2.3.16</version>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-convention-plugin</artifactId>
            <version>2.3.16</version>
        </dependency>
        <!-- struts和spring联合起来需要这个jar -->
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-spring-plugin</artifactId>
            <version>2.3.16.3</version>
        </dependency>
        
        
        
        
        <!-- other -->
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.33</version>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        
        
        
      </dependencies>
      <build>
        <finalName>urls</finalName>
        <plugins>
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <configuration>
                    <scanIntervalSeconds>10</scanIntervalSeconds>
                    <webApp>
                        <contextPath>/</contextPath>
                    </webApp>
                    <connectors>
                        <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
                            <port>80</port>
                            <maxIdleTime>60000</maxIdleTime>
                        </connector>
                    </connectors>
                </configuration>
            </plugin>
        </plugins>
      </build>
    </project>

    spring + hibernate + struts    基于注解的形式,基于xml的以后需要的话在总结

    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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
        
        <!-- OpenSessionInView
            这是一个经典的过滤器,session的范围就是事务的开启和事务的结束,也就是在service中的方法执行时开启
            方法结束关闭,这就会造成延迟加载错误,因为延迟加载的时候session已经关闭了,一个方法就是关闭延迟加载
            或者修改抓取策略或者预加载,但是这就丧失了hibernate的好处,所以我们就可以做到扩大session的范围,在请求
            到来的开启session,到响应结束的时候关闭session
            -->
        <filter>
            <filter-name>opensessioninview</filter-name>
            <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>opensessioninview</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        
        <!-- 字符集过滤器 -->
        <filter>
            <filter-name>encoding</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>encoding</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        
        
        <!-- Struts2中央控制器 -->
        <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>
      
          <!-- Spring容器      web程序是没有main函数的,所以在web容器启动的时候就要启动spring容器
        ,而随web容器启动就启动的是application   使用监听器实现-->
          <listener>
              <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
          </listener>
          <!-- 使用监听器配置web容器启动要读取的文件 -->
          <context-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:applicationContext*.xml</param-value>
          </context-param>
      
      
    </web-app>

    读取: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:aop="http://www.springframework.org/schema/aop"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.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
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"
    >
    
    
        <context:component-scan base-package="com.kaishengit"/>
        
        <aop:aspectj-autoproxy/>
        
        <!-- 读取db.properties文件 使用${key}获取文件中的配置项 -->
        <context:property-placeholder location="classpath:db.properties"/>
        
        <!-- 数据源 -->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 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}"/>
        </bean>
        
        <!-- SessionFactory -->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <!-- 解决以前在hibernate中配置每次导入的类名那一步 ,将这里面的所有类当做hibernate的实体类看待-->
            <property name="packagesToScan" value="com.kaishengit.pojo"/>
            <!-- 方言,和是否显示数据库sql -->
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                    <prop key="hibernate.show_sql">true</prop>
                    <!-- 开启二级缓存 -->
                    <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
                </props>
            </property>
        </bean>
        
        <!-- Hibernate事务管理器 -->
        <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"/>
        </bean>
        
        <!-- 基于注解的事务 -->
        <tx:annotation-driven transaction-manager="transactionManager"/>
        
        
        
        
        
        
    
    
     
    </beans>

    db.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql:///mydb
    jdbc.username=root
    jdbc.password=root

    log4j.properties

    log4j.appender.consoleOut=org.apache.log4j.ConsoleAppender
    log4j.appender.consoleOut.layout=org.apache.log4j.PatternLayout
    log4j.appender.consoleOut.layout.ConversionPattern=[%p](%d)---%l--%m
    
    log4j.rootLogger=INFO,consoleOut
    
    log4j.rootLogger=DEBUG,consoleOut

    ehcache.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <ehcache>
             
        <diskStore path="java.io.tmpdir"/>
        
        <defaultCache
            maxElementsInMemory="10000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            overflowToDisk="true"
        />
    </ehcache>

    struts.xml

    <?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>
        
        <!-- 更改Struts默认后缀 -->
        <constant name="struts.action.extension" value="action"/>
        <constant name="struts.multipart.maxSize" value="10485760"/>
        <constant name="struts.convention.default.parent.package" value="basePackage"/>
         
        <package name="basePackage" extends="convention-default" abstract="true">
        <!-- 如果使用了json,记得还要继承json-default
        <package name="basePackage" extends="convention-default,json-default" abstract="true"> 
        -->
        </package>
        
        
    
        
        
    </struts>
  • 相关阅读:
    有道翻译爬虫
    设置Ubuntu默认root密码
    搭建内部PyPi源
    Python上下文管理器with 学习笔记
    Mysql5.7 绿色版安装
    Mardown 格式接口模板
    Winrar去广告
    Python 查询第三方包依赖及下载
    Python 捕获redis异常
    react入门系列之使用 antd, react, redux,creat-react-app搭建todo-list升级版本
  • 原文地址:https://www.cnblogs.com/itliucheng/p/4465438.html
Copyright © 2011-2022 走看看