springMVC+jpa+maven框架搭建

来源:互联网 发布:mac系统编辑文档的软件 编辑:程序博客网 时间:2024/06/05 06:59

为什们开始流行springMVC框架,相比struts前者springMVC在配置上几乎实现了0配置,方便开发者容易理解和配置

1:开始配置

例:搭建一个web工程(springMVC+jpa+maven)

1)需要的开发工具  STS(3.7.1),STS集成maven的功能,直接可以创建一个web+maven的工程

2)需要的jar包 支撑springMVC的jar包 springMVC,直接在创建好的web+maven工程目录的pom.xml中添加需要的jar,

如图spring-webmvc

1:支撑springmvc的jar

2:数据库驱动jar

3:支撑jpa的jar


添加完成后加载maven获取到想对应的jar

生成工程目录:


2:開始配置相关主要的文件

需要知道springmvc的核心类:


•org.springframework.web.servlet.DispatcherServlet  - mvc-config.xml
 
加载配置文件核心类:
•org.springframework.web.context.ContextLoaderListener – spring的配置文件
 
处理url影射核心类:
•org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping-根据bean的名称请求一个bean. spring的配置文件- /abc
 
处理视图资源核心类:
•org.springframework.web.servlet.view.ResourceBundleViewResolver
•return hello – 决定返回的字符串由哪一个页面来显示。
•<context:component-scan package=“cn.hncu”/>用于替代上面的类。
 
方法动态调用核心类
•org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver
 
用Spring处理Web请求-Spring的MVC

3)开始配置

web.xml如图中配置工程启动加载后,读取mvc-config的文件和application-config.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_2_5.xsd"
id="WebApp_ID" version="2.5">


<display-name>WebSuccess1</display-name>


<!-- - Location of the XML file that defines the root application context. 
- Applied by ContextLoaderListener. -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:application-config.xml</param-value>
</context-param>


<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>




<!-- - Servlet that dispatches request to registered handlers (Controller 
implementations). -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
 <!-- 解决JPA因EntityManager关闭导致的延迟加载例外(异常) -->
     <!-- 配置spring管理OpenEntityManagerInViewFilter-->
    <!-- OpenEntityManagerInViewFilter会让session一直到view层调用结束后才关闭
        Spring针对Hibernate的非JPA实现用的是OpenSessionInViewFilter,原理与这个大同小异
     -->
    <filter>
        <filter-name>hibernateFilter</filter-name>
        <filter-class>
            org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>hibernateFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

    <servlet-mapping>   
         <servlet-name>default</servlet-name>   
         <url-pattern>*.css</url-pattern>   
     </servlet-mapping>   
    
     <servlet-mapping>   
         <servlet-name>default</servlet-name>   
         <url-pattern>*.gif</url-pattern>   
     </servlet-mapping>   
    <servlet-mapping>   
         <servlet-name>default</servlet-name>   
         <url-pattern>*.html</url-pattern>   
     </servlet-mapping>  
     <servlet-mapping>   
         <servlet-name>default</servlet-name>   
         <url-pattern>*.jpg</url-pattern>   
     </servlet-mapping>   
     <servlet-mapping>   
         <servlet-name>default</servlet-name>   
         <url-pattern>*.png</url-pattern>   
     </servlet-mapping>   
     <servlet-mapping>   
         <servlet-name>default</servlet-name>   
         <url-pattern>*.js</url-pattern>   
     </servlet-mapping>   
         <servlet-mapping>  
        <servlet-name>default</servlet-name> 
        <url-pattern>*.map</url-pattern>    
    </servlet-mapping>  
   <!--  指定首页 -->
     <servlet-mapping>  
       <servlet-name>dispatcherServlet</servlet-name>  
        <url-pattern>/login</url-pattern>  
        </servlet-mapping> 
     <welcome-file-list>
        <welcome-file>login</welcome-file>
    </welcome-file-list>
</web-app>

mvc-config.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: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.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.xsd">


    <!-- Uncomment and your base-package here:
         <context:component-scan
            base-package="org.springframework.samples.web"/>  -->
 <context:component-scan
            base-package="com.quickfind.controller"/>
 <mvc:annotation-driven />
  
<!-- 用于返回json格式 -->
    <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">    
        <property name="supportedMediaTypes">    
            <list>
                <value>application/x-www-form-urlencoded;charset=UTF-8</value>
            </list>
        </property>
    </bean>
 
 
 
     <!-- 完成请求和注解POJO的映射 -->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
         <property name="messageConverters">
            <list>
                <ref bean="mappingJacksonHttpMessageConverter" />
            </list>
        </property>
    </bean>
    
    <!-- 配置SpringMVC的视图解析器 --> 
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <!-- Example: a logical view name of 'showMessage' is mapped to '/WEB-INF/jsp/showMessage.jsp' -->
       <property name="prefix" value="/view/"/>
       <property name="suffix" value=".jsp"/>
</bean>


</beans>

application-config.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:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:cache="http://www.springframework.org/schema/cache"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xsi:schemaLocation="
                    http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                    http://www.springframework.org/schema/tx 
                    http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
                    http://www.springframework.org/schema/aop 
                    http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
                    http://www.springframework.org/schema/context      
                    http://www.springframework.org/schema/context/spring-context-3.1.xsd
                    http://www.springframework.org/schema/cache 
                    http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
                    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd 
                    http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd" 
                    default-lazy-init="true">


    <!-- 启动组件扫描,排除@Controller组件,该组件由SpringMVC配置文件扫描 -->
    <context:component-scan base-package="com.quickfind">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
    </context:component-scan>


    <!-- 属性文件位置 -->
    <context:property-placeholder location="classpath:jdbc.properties" />


    
    <!-- 数据源 -->
    <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"
        destroy-method="close">
        <!-- 数据库驱动 -->
        <property name="driverClass" value="${jdbc.driverClassName}" />
        <!-- 相应驱动的jdbcUrl-->
        <property name="jdbcUrl" value="${jdbc.url}" />
        <!-- 数据库的用户名 -->
        <property name="username" value="${jdbc.username}" />
        <!-- 数据库的密码 -->
        <property name="password" value="${jdbc.password}" />
    </bean>


    <!-- JPA实体管理器工厂 -->
    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter" />
        <!-- 加入定制化包路径 -->
        <property name="packagesToScan" value="com.quickfind.persistence.entity" />


        <property name="jpaProperties">
            <props>
                <prop key="hibernate.current_session_context_class">thread</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop><!-- validate/update/create -->
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.format_sql">false</prop>
                
                <!-- 建表的命名规则 -->
                <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
                
            </props>
        </property>
    </bean>
    
    <!-- 设置JPA实现厂商的特定属性 -->
    <bean id="hibernateJpaVendorAdapter"
        class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="databasePlatform" value="${hibernate.dialect}"/>
    </bean>
    
    <!-- Jpa 事务配置 -->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory"/>
    </bean>


    <!-- Spring Data Jpa配置 -->
    <jpa:repositories base-package="com.quickfind"  transaction-manager-ref="transactionManager" entity-manager-factory-ref="entityManagerFactory"/>
    
    <!-- 使用annotation定义事务 -->
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
</beans>

配置完成。。。谢谢


0 0
原创粉丝点击