SpringMVC環境搭建

Spring MVC環境的搭建(JavaConfig 混合 XML方式)

  1. 創建項目目錄

這裏寫圖片描述

標準的Maven工程目錄結構

  1. 添加Maven依賴

    <dependencies>
    // 單元測試
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.11</version>
           <scope>test</scope>
       </dependency>
    // Mybatis
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>3.4.1</version>
       </dependency>
    // 數據庫連接池
       <dependency>
           <groupId>com.alibaba</groupId>
           <artifactId>druid</artifactId>
           <version>1.1.10</version>
       </dependency>
    // Mybatis和Spring的整合包
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis-spring</artifactId>
           <version>1.3.1</version>
       </dependency>
    // Spring 核心包
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-core</artifactId>
           <version>${spring.version}</version>
       </dependency>
       // Spring Web包
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-web</artifactId>
           <version>${spring.version}</version>
       </dependency>
    
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-oxm</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-jdbc</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-context-support</artifactId>
           <version>${spring.version}</version>
       </dependency>
    // Spring 測試包
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-test</artifactId>
           <version>${spring.version}</version>
       </dependency>
    // Servlet Api
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>javax.servlet-api</artifactId>
           <version>3.1.0</version>
       </dependency>
    // JSTL 標籤
       <dependency>
           <groupId>jstl</groupId>
           <artifactId>jstl</artifactId>
           <version>1.2</version>
       </dependency>
    // 處理文件上傳
       <dependency>
           <groupId>commons-fileupload</groupId>
           <artifactId>commons-fileupload</artifactId>
           <version>1.3.1</version>
       </dependency>
    // JSON轉換
       <dependency>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-core</artifactId>
           <version>${jackson.version}</version>
       </dependency>
    
       <dependency>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-annotations</artifactId>
           <version>${jackson.version}</version>
       </dependency>
    
       <dependency>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-databind</artifactId>
           <version>${jackson.version}</version>
       </dependency>
    // 參數校驗
       <dependency>
           <groupId>javax.validation</groupId>
           <artifactId>validation-api</artifactId>
           <version>1.1.0.Final</version>
       </dependency>
    
       <dependency>
           <groupId>org.hibernate</groupId>
           <artifactId>hibernate-validator</artifactId>
           <version>5.4.1.Final</version>
       </dependency>
    // Excel文件操作
       <dependency>
           <groupId>org.apache.poi</groupId>
           <artifactId>poi</artifactId>
           <version>3.11</version>
       </dependency>
    // MySQL驅動包
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>5.1.38</version>
       </dependency>
       // 日誌
       <dependency>
           <groupId>org.slf4j</groupId>
           <artifactId>slf4j-log4j12</artifactId>
           <version>1.7.25</version>
       </dependency>
       <dependency>
           <groupId>org.slf4j</groupId>
           <artifactId>slf4j-api</artifactId>
           <version>1.7.25</version>
       </dependency>
    </dependencies>
  2. 創建一個類繼承AbstractAnnotationConfigDispatcherServletInitializer類,並實現其中的抽象方法

    public class WebAppInitializer
       extends AbstractAnnotationConfigDispatcherServletInitializer {
    
    /*Spring 上下文*/
       @Override
       protected Class<?>[] getRootConfigClasses() {
           return new Class[] {RootConfig.class};
       }
    /*配置Web*/
       @Override
       protected Class<?>[] getServletConfigClasses() {
           return new Class[] {WebConfig.class};
       }
    
       /*設置攔截請求規則*/
       @Override
       protected String[] getServletMappings() {
           return new String[] {"*.do"};
       }
    
       /*
       * 設置全局編碼爲UTF-8*/
       @Override
       protected Filter[] getServletFilters() {
           CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
           characterEncodingFilter.setEncoding("UTF-8");
           characterEncodingFilter.setForceEncoding(true);
           return new Filter[] {characterEncodingFilter};
       }
    }
  3. 創建RootConfig和WebConfig兩個類

    @Configuration
    /*設置掃描的包,將過濾帶有EnableWebMvc註解的*/
    @ComponentScan(basePackages = "jackaroo",
           excludeFilters = {
                   @ComponentScan.Filter(type = FilterType.ANNOTATION, value = EnableWebMvc.class)
           })
    @MapperScan(basePackages = "jackaroo.dao")
    @PropertySource(value = {"classpath:datasource.properties"})
    /*引入XML配置,可以傳入多個文件位置*/
    @ImportResource({"classpath:spring-dao.xml"})
    public class RootConfig {
    
       @Bean
       public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
           return new PropertySourcesPlaceholderConfigurer();
       }
    
    }
    
    @Configuration
    @ComponentScan(basePackages = "jackaroo.web")
    // 在XML文件中開啓Spring MVC
    @ImportResource({"classpath:spring-web.xml"})
    public class WebConfig extends WebMvcConfigurerAdapter {
    
       /*配置所有未被Spring攔截的請求默認使用Servlet處理*/
       @Override
       public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
           super.configureDefaultServletHandling(configurer);
           configurer.enable();
       }
    
       /*視圖解析器*/
       @Bean
       public ViewResolver viewResolver() {
           // 配置視圖解析器,這種視圖解析器一般用於解析JSP
           InternalResourceViewResolver resolver =
                   new InternalResourceViewResolver();
           // 設置視圖解析器訪問視圖的前綴
           resolver.setPrefix("/WEB-INF/views/");
           // 後綴
           resolver.setSuffix(".jsp");
           // 設置是否所有的Spring上下文的Bean,都可以作爲Request的屬性,被Jstl訪問到
           resolver.setExposeContextBeansAsAttributes(true);
           resolver.setViewClass(JstlView.class);
           return resolver;
       }
    
       // 配置處理Multipart文件的Bean
       @Bean(name = "multipartResolver")
       public MultipartResolver multipartResolver() throws IOException {
           /*高版本的Spring和Servlet容器中使用此方式,不需要導入第三方依賴*/
           StandardServletMultipartResolver resolver = new StandardServletMultipartResolver();
           return resolver;
       }
    
    
    }
  4. 配置spring-web.xml和spring-dao.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/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
    
       <mvc:annotation-driven conversion-service="conversionService">
       </mvc:annotation-driven>
    
       <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
           <property name="messageConverters">
               <list>
                   <ref bean="jsonConverter"/>
               </list>
           </property>
       </bean>
    
       <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
           <property name="supportedMediaTypes">
               <list>
                   <value>application/json;charset=UTF-8</value>
               </list>
           </property>
       </bean>
    
       <context:component-scan base-package="jackaroo.*"/>
    
       <bean id="conversionService"
             class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
           <property name="converters">
               <list>
                   <bean class="jackaroo.web.converter.StringToRoleConverter"/>
               </list>
           </property>
       </bean>
    
    </beans>
    <?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: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/context http://www.springframework.org/schema/context/spring-context.xsd">
    
    
       <context:property-placeholder location="classpath:datasource.properties"/>
    
       <!--配置數據源-->
       <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
           init-method="init" 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}"/>
           <property name="maxActive" value="${jdbc.maxActive}"/>
           <property name="maxIdle" value="${jdbc.maxIdle}"/>
           <property name="maxWait" value="${jdbc.maxWait}"/>
           <!-- 配置監控統計攔截的filters -->
           <property name="filters" value="stat" />
       </bean>
    
       <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
           <property name="dataSource" ref="dataSource"/>
           <property name="configLocation" value="classpath:mybatis-config.xml"/>
       </bean>
    
       <!--配置事務管理器-->
       <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
           <property name="dataSource" ref="dataSource"/>
       </bean>
       <!--配置使用@Transactional配置事務-->
       <tx:annotation-driven transaction-manager="transactionManager"/>
    
       <!--配置自動生成Mapper的代理類-->
       <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
           <property name="basePackage" value="jackaroo.dao"/>
           <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
           <property name="annotationClass" value="org.springframework.stereotype.Repository"/>
       </bean>
    
    </beans>
  5. MyBatis配置文件、數據庫連接信息、日誌配置

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration
           PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
           "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    
       <typeAliases>
           <typeAlias type="jackaroo.pojo.Role" alias="role"/>
           <package name="jackaroo.pojo"/>
       </typeAliases>
    
       <mappers>
           <mapper resource="mapper/RoleMapper.xml"/>
       </mappers>
    </configuration>
    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/weixin
    jdbc.username=root
    jdbc.password=root
    jdbc.maxActive=255
    jdbc.maxIdle=5
    jdbc.maxWait=10000
    log4j.rootLogger=DEBUG , stdout 
    log4j.logger.org.springframework=DEBUG 
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender   
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout   
    log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n 
  6. 配置Druid(web.xml中配置,可以查看數據連接情況)

    <!-- 查看數據源 -->
    <servlet>
     <servlet-name>DruidStatView</servlet-name>
     <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    </servlet>
    <servlet-mapping>
     <servlet-name>DruidStatView</servlet-name>
     <url-pattern>/druid/*</url-pattern>
    </servlet-mapping>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章