Maven之Spring+SpringMVC+Hibernate搭建

来源:互联网 发布:大数据软件开发 编辑:程序博客网 时间:2024/05/29 15:52

Spring和Spring MVC是3.2.3.RELEASE 版本的,Hibernate是3.6.10.Final版本的,采用的是Mysql数据库,使用的是JDK1.7版本,Jetty9服务器,这里吐槽一下,maven下开发,tomcat没有jetty好用,虽然tomcat很牛逼,但是真的没有jetty好用,项目的源码地址:https://git.oschina.net/yellowcong/spring_springMVC_Hibernate

pom.xml配置文件

在pom中设定了使用的是阿里云的工厂,这样在国内的下载速度飞一样的感觉

<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>yellowcong</groupId>  <artifactId>spring_springmvc_hibernate</artifactId>  <packaging>war</packaging>  <version>0.0.1-SNAPSHOT</version>  <name>users Maven Webapp</name>  <url>http://maven.apache.org</url>  <!-- 配置国内比较快的 阿里云的Maven仓库 -->   <repositories>        <repository>            <id>aliyunmaven</id>            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>        </repository>    </repositories>  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>4.10</version>      <!-- <scope>test</scope> -->    </dependency>    <!-- 导入jsp -->    <dependency>        <groupId>javax.servlet.jsp</groupId>        <artifactId>jsp-api</artifactId>        <version>2.2.1-b03</version>        <scope>provided</scope>    </dependency>    <!-- 导入servlet -->     <dependency>        <groupId>javax.servlet</groupId>        <artifactId>servlet-api</artifactId>        <version>2.4</version>        <scope>provided</scope>    </dependency>     <dependency>         <groupId>javax.servlet</groupId>         <artifactId>jstl</artifactId>         <version>1.2</version>     </dependency>     <!-- Spring  -->    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-core</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-beans</artifactId>        <version>${spring.version}</version>    </dependency>    <!-- 导入Spring的orm -->    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-orm</artifactId>        <version>${spring.version}</version>    </dependency>    <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>${spring.version}</version>        </dependency>        <!-- Slf4j -->        <dependency>            <groupId>org.slf4j</groupId>            <artifactId>slf4j-api</artifactId>            <version>1.7.5</version>        </dependency>        <!-- 配置切面 -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-aop</artifactId>            <version>${spring.version}</version>        </dependency>        <!---aspectj 面向切向 -->        <dependency>            <groupId>aspectj</groupId>            <artifactId>aspectjrt</artifactId>            <version>1.5.3</version>        </dependency>        <dependency>            <groupId>org.aspectj</groupId>            <artifactId>aspectjweaver</artifactId>            <version>1.8.5</version>        </dependency>        <dependency>            <groupId>org.javassist</groupId>            <artifactId>javassist</artifactId>            <version>3.15.0-GA</version>        </dependency>    <!-- Spring需要的注解 -->    <dependency>        <groupId>javax.annotation</groupId>        <artifactId>javax.annotation-api</artifactId>        <version>1.2</version>    </dependency>    <!-- 配置Spring mvc -->    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-webmvc</artifactId>      <version>${spring.version}</version>    </dependency>    <!-- 配置fileupload,spring  mvc依赖 -->    <dependency>        <groupId>com.liferay</groupId>        <artifactId>org.apache.commons.fileupload</artifactId>        <version>1.2.2.LIFERAY-PATCHED-1</version>    </dependency>    <!-- 数据库 -->    <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>5.1.35</version>    </dependency>   <!-- 数据连接池 -->   <dependency>    <groupId>c3p0</groupId>    <artifactId>c3p0</artifactId>    <version>0.9.1.2</version>   </dependency>    <!-- hibernate -->    <dependency>        <groupId>org.hibernate</groupId>        <artifactId>hibernate-core</artifactId>        <version>3.6.10.Final</version>    </dependency>    <!-- 日志 -->    <dependency>        <groupId>log4j</groupId>        <artifactId>log4j</artifactId>        <version>1.2.16</version>    </dependency>  </dependencies><!-- 共用的配置说明,比如spring版本, 项目名称, jdk版本等 -->  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <spring.version>3.2.3.RELEASE</spring.version></properties>  <build>    <finalName>users</finalName>    <plugins>        <plugin>          <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-war-plugin</artifactId>            <version>2.6</version>            <configuration>                <!-- 配置war包的名称 -->               <warName>hello</warName>            </configuration>          </plugin>            <plugin>                <groupId>org.eclipse.jetty</groupId>                <artifactId>jetty-maven-plugin</artifactId>                <version>9.4.6.v20170531</version>                <configuration>                      <scanIntervalSecond>10</scanIntervalSecond>                      <webApp>                          <contextPath>/users</contextPath>                      </webApp>                      <connectors>                          <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">                              <port>8080</port>                              <maxIdleTime>60000</maxIdleTime>                          </connector>                      </connectors>                  </configuration>            </plugin>             <plugin>                     <artifactId>maven-compiler-plugin</artifactId>                     <version>2.3.2</version>                     <configuration>                         <source>1.7</source>                         <target>1.7</target>                         <encoding>UTF-8</encoding>                     </configuration>              </plugin>     </plugins>  </build></project>

Web.xml

配置编码,Springmvc,Spring

<?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_2_5.xsd"    id="WebApp_ID" version="2.5">    <display-name>spring_springmvc_hibernate</display-name>    <welcome-file-list>        <welcome-file>index.jsp</welcome-file>    </welcome-file-list>    <!-- Spring mvc -->    <servlet>        <servlet-name>config</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>config</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping>    <!-- 设定字符编码 -->    <filter>        <filter-name>CharacterFilter</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>CharacterFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>    <!-- spring的监听器,可以通过上下文来获取参数 -->    <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>    <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath:ApplicationContext.xml</param-value>    </context-param>    <!-- spring 中提供的获取Session的方法 -->    <filter>        <filter-name>OpenSessionInViewFilte</filter-name>        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>        <init-param>            <param-name>singleSession</param-name>            <param-value>false</param-value>        </init-param>    </filter>    <filter-mapping>        <filter-name>OpenSessionInViewFilte</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping></web-app>

config-servlet.xml

配置Spring mvc

<?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:mvc="http://www.springframework.org/schema/mvc"    xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">    <mvc:default-servlet-handler/>    <!-- 通过Annotation 来控制Controller -->    <context:component-scan base-package="com.yellowcong"></context:component-scan>    <mvc:annotation-driven></mvc:annotation-driven>    <!-- 将静态文件夹制定到某个特别的文件夹中统一处理        ** 表示的是文件夹中的子文件夹中的所有类容        其中location 需要两个 正斜杠     -->    <mvc:resources location="/resources/" mapping="/resources/**"/>        <!-- 配置权限拦截器 -->            <!-- 当我们的数据访问到 amdin的时候,就会直接调用admin对象 --> <!--   <mvc:interceptors>        <mvc:interceptor>            <mvc:mapping path="/user/**"/>            <mvc:mapping path="/role/**"/>            <mvc:mapping path="/group/**"/>            <mvc:mapping path="/attachment/**"/>            <mvc:mapping path="/reply/**"/>            <mvc:mapping path="/tabel/**"/>            <mvc:mapping path="/image/**"/>            <mvc:mapping path="/info/**"/>            <mvc:mapping path="/login/stu"/>            <mvc:mapping path="/admin/**"/>            <bean class="com.yellowcong.interceptor.UserInterceptor"/>        </mvc:interceptor>    </mvc:interceptors>  -->     <!-- 设定访问的名称 和对应的Servlet -->        <!-- 配置Multipart,只有设定了才能完成文件上传 -->    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">        <property name="maxUploadSize" value="5000000"></property>    </bean>    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <!-- 3.0.5后默认加上了jstl的属性配置.这个就是默认的配置 -->        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>        <!-- 设定前缀 -->        <property name="prefix" value="/WEB-INF/jsp/"></property>        <!-- 设定后缀 -->        <property name="suffix" value=".jsp"></property>    </bean>    <!-- 配置全局异常 -->    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">        <property name="exceptionMappings">            <props>            <!--                 <prop key="com.yellowcong.exception.UserException">error</prop>                <prop key="java.lang.RuntimeExceptio">error</prop>                <prop key="com.yellowcong.exception.ChannelException">error</prop>                <prop key="com.yellowcong.exception.GroupException">error</prop>                <prop key="com.yellowcong.exception.RoleException">error</prop>             -->            </props>        </property>    </bean></beans>

ApplicationContext.xml

注意Spring的这个配置文件放在src/main/resources类目录下,这个如果自己还想在细分下去,放置的位置需要在web.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-3.0.xsd       http://www.springframework.org/schema/aop        http://www.springframework.org/schema/aop/spring-aop-2.0.xsd       http://www.springframework.org/schema/tx        http://www.springframework.org/schema/tx/spring-tx-2.0.xsd       http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context-2.5.xsd">    <!-- 通过我们 注释所表示的是可选配置的方式-->    <!-- 开启我们的注解 ,有时候 找不到类,我们可以在后面添加 * 表示所遇的包-->    <context:annotation-config/>    <context:component-scan base-package="com.yellowcong.*"/>    <!-- 其中我们可以通过properties      后面你有个神奇的空格    设定数据库的一些属性 -->    <context:property-placeholder location="classpath:jdbc-config-local.properties" />    <!-- 配置数据源 -->                                                            <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">        <property name="driverClass" value="${driverClassName}"/>        <property name="jdbcUrl" value="${url}"/>        <property name="user" value="${username}"/>        <property name="password" value="${password}"/>        <!-- 链接池启动的初始值 -->        <property name="initialPoolSize" value="5"/>        <!-- 设定最大的请求连接 -->        <property name="maxPoolSize" value="500"/>        <!-- 最小的空闲值当空闲的连接数目比较 -->        <property name="minPoolSize" value="1"/>        <!--最大空闲值,超过60秒钟没有用就默认关闭, 默认值为 0 -->        <property name="maxIdleTime" value="0"/>        <!-- 连接数没有了的时候,获取的连接输 默认是 3 我们可以设定 -->        <property name="acquireIncrement" value="5"/>        <!-- 自动回收超时连接 -->                       <property name="unreturnedConnectionTimeout" value="1"/>        <!--连接时间最长为10s ,超过了10s就自动收回了 -->                       <property name="maxIdleTimeExcessConnections" value="10"/>        <!--最长回收时间-->        <property name="maxConnectionAge" value="10"/>    </bean>    <!-- 配置SessionFacrory ,其中我们是基于xml 配置使用LocalSessionFactoryBean这个类-->    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <property name="packagesToScan">            <value>com.yellowcong.entity</value>        </property>        <!-- 配置一些SQL数据    这个以前是在hibernate.cfg.xml中配置的数据-->        <property name="hibernateProperties">                <!-- 第二种设定值的方式 -->                <props>                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>                    <prop key="hibernate.hbm2ddl.auto">update</prop>                    <prop key="hibernate.show_sql">true</prop>                    <prop key="hibernate.format_sql">false</prop>                </props>        </property>    </bean>    <!-- 配置Spring的事物处理 -->    <!-- 创建事物管理器对象 -->    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">        <property name="sessionFactory" ref="sessionFactory"/>    </bean>    <!-- 配置Aop Spring 是通过Aop 来进行事物管理的 -->    <aop:config>        <!-- 设定事物 -->        <aop:pointcut id="allMethod" expression="execution(* com.yellowcong.dao.impl.*.*(..))"/>        <!-- 确定需要调用的方法 -->        <aop:advisor advice-ref="txAdvice"  pointcut-ref="allMethod"/>    </aop:config>    <!-- 导入tx 事物管理,配置事物管理 -->    <tx:advice id="txAdvice" transaction-manager="txManager">        <tx:attributes>            <!-- 这个是所有的方法都加入事物管理 -->            <tx:method name="*" propagation="REQUIRED"/>        </tx:attributes>    </tx:advice></beans>

jdbc-config-local.properties

数据库配置

driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql:///yellowcongusername=rootpassword=root

log4j.properties

日志配置

log4j.rootLogger=WARN, stdout, Rlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayout# Pattern to output the caller's file name and line number.#log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n# Print the date in ISO 8601 formatlog4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%nlog4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.File=example.loglog4j.appender.R.MaxFileSize=100KB# Keep one backup filelog4j.appender.R.MaxBackupIndex=1log4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n# Print only messages of level WARN or above in the package com.foo.log4j.logger.com.foo=WARN
原创粉丝点击