基于SpringMVC+Spring+Hibernate+Maven+Bootstrap的简单Demo

本文介绍了一个基于SpringMVC、Spring、Hibernate、Maven和Bootstrap的简单项目DEMO,涵盖了从开发环境配置到各组件的使用,包括IDE Eclipse Neon、Tomcat 8.0、JDK 1.8、Mysql 5.5、Maven 3.3.9、分页框架Pager Taglib等。项目采用的后台框架为Spring 4.2.4、SpringMVC 4.2.4和Hibernate 4.3.10,前端使用Bootstrap 3.3.10,并结合log4j进行日志记录,以及Spring-test和junit4进行测试。提供完整项目源码链接,详细展示了Web.xml、SpringMVC-servlet.xml、bean.xml、pom.xml等配置文件,以及关键服务层、DAO层和模型类的实现。
摘要由CSDN通过智能技术生成

趁着周末自己复习搭建了一个SpringMVC小demo。有很多不正之处还请指教。有什么问题可以私信或者下方留言。有关Ioc可以参考Spring Ioc详细配置与使用,有关AOP可以参考SpringAOP详细配置与使用

项目用到的技术:
开发环境IDE eclipse Neon
服务器Tomcat8.0
JDK 1.8 (正在学习1.8所以还没有使用到新的语法)
数据库 Mysql5.5
Maven 3.3.9
分页框架 pager taglib
后台框架 Spring4.2.4 SpringMVC4.2.4 Hibernate4.3.10
前端框架 Bootstrap3.3.10
日志采用了 log4j
测试框架 Spring-test + junit4

完整项目可以到https://github.com/Tency42/SpringMVC 下面贴出项目源码。

项目结构:
这里写图片描述
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" version="3.0">

     <!-- 创建Spring的监听器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>  
    <param-name>contextConfigLocation</param-name>  
    <param-value>classpath*:bean.xml</param-value>  
</context-param>

    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


  <filter>
        <filter-name>openSessionInViewerFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>

    </filter>
    <filter-mapping>
        <filter-name>openSessionInViewerFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>    
        <listener-class>    
            org.springframework.web.context.request.RequestContextListener    
        </listener-class>    
    </listener> 

<!-- 用于实现分页 -->
    <filter>
        <filter-name>PageFilter</filter-name>
        <filter-class>com.ctc.Common.PageFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>PageFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

SpringMVC-servlet.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:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="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.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">


    <context:component-scan base-package="com.ctc.Controller"/>

    <mvc:annotation-driven />

    <mvc:default-servlet-handler/>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/user/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                <prop key="com.ctc.Common.UserException">error</prop>
            </props>
        </property>
    </bean>

</beans>

bean.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"
        >


    <!-- 打开Spring的Annotation支持 -->
    <context:annotation-config />
    <!-- 设定Spring 去哪些包中找Annotation -->
    <context:component-scan base-package="com.ctc" />


    <!-- 导入Src目录下的jdbc.properties文件 -->
    <context:property-placeholder location="classpath:jdbc.properties" />

    <bean id="DataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="DataSource"/>
        <property name="packagesToScan">
            <list>
                <value>com.ctc.Model</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.format_sql">false</prop>
            </props>
        </property>
    </bean>
    <!-- 开启HibernateTemplate,并且为其注入SessionFactory
    使用HibernateTemplate不太方便的就是要获取session得通过getSessionFactory()方法获取 -->
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <!-- 配置Spring的事务处理 -->
    <!-- 创建事务管理器-->
    <bean id="txManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
<!-- 配置AOP,Spring是通过AOP来进行事务管理的 -->
    <aop:config>
    <!-- 设置pointCut表示哪些方法要加入事务处理 -->
    <!-- 以下的事务是声明在DAO中,但是通常都会在Service来处理多个业务对象逻辑的关系,注入删除,更新等,此时如果在执行了一个步骤之后抛出异常
        就会导致数据不完整,所以事务不应该在DAO层处理,而应该在service,这也就是Spring所提供的一个非常方便的工具,声明式事务 -->
        <aop:pointcut id="allMethods" 
            expression="execution(* com.ctc.ServiceImpl.*.*(..))" />
        <!-- 通过advisor来确定具体要加入事务控制的方法 -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="allMethods" />
    </aop:config>
<!-- 配置哪些方法要加入事务控制 -->
    <tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
        <!-- 让所有的方法都加入事务管理,为了提高效率,可以把一些查询之类的方法设置为只读的事务 -->
            <tx:method name="*" propagation="
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值