文章目录
-
一、配置准备
-
在进行配置前,先想清楚要配置哪些文件,如图,除web.xml外,其余三个配置文件名称均可自定义。
如图所示,一共有四个需要手动配置的文件:
- web.xml:配置servlet、filter、listener
- applicationContext.xml:配置相关的bean,与mybatis整合
- SpringMvc.xml:用于配置视图解析器、控制器等
- Mybatis.xml:用于生成Mybatis用到的实体类、Mapper接口、Map配置文件 (由于要与spring进行整合,所以在真正配置的时候有些会合并到spring配置文件中配置)
-
二、配置过程
配置之前要在pom.xml中添加一定的依赖包。
下面是我做的时候进行的一些简单的依赖配置。1.引入依赖
-
<?xml version="1.0" encoding="UTF-8"?> <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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.may</groupId> <artifactId>ssm_crud</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>ssm_crud Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <junit.version>4.12</junit.version> <jstl.version>1.2</jstl.version> <spring.version>4.3.7.RELEASE</spring.version> <pagehelper.version>5.1.11</pagehelper.version> <servlet-api.version>3.1.0</servlet-api.version> <mybatis.version>3.4.2</mybatis.version> <mybatis.spring.version>1.3.1</mybatis.spring.version> <mybatis.generator.version>1.3.5</mybatis.generator.version> <c3p0.version>0.9.1.2</c3p0.version> <mysql.version>5.1.41</mysql.version> </properties> <!-- 引入jar包 --> <!-- springmvc spring mybatis --> <dependencies> <!-- 分页 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>${pagehelper.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- springJdbc spring事务控制 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <!-- spring 面向切面编程 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <!-- spring 单元测试 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <!--<scope>test</scope>--> </dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- mybatis整合spring的适配包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <!-- 数据库连接池、驱动 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>${c3p0.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!-- 其它(jstl servlet-api junit)--> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${servlet-api.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <!-- <scope>test</scope>--> </dependency> <!-- MBG mybatis逆向工程--> <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>${mybatis.generator.version}</version> </dependency> </dependencies> <build> <finalName>ssm_crud</finalName> <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> </plugins> </pluginManagement> </build> </project>
2.配置Web.xml文件
依赖引入完后,先来配置一下Web.xml文件。
首先要明确一下Web.xml中必要配置的一些信息: -
配置spring的核心监听器ContextLoaderListener。
作用:在tomcat启动的时候,创建spring 的工厂类对象,把工厂类对象绑定到tomcat的上下文中,以前写java项目第一步都是创建spring的工厂类对象(如下代码)。而在运行web项目时还是需要Spring的工厂类对象,所以spring就为我们提供了这个监听器来在tomcat启动的时候来实现这些代码。
注意:默认spring会从WEB-INF目录下加载applicationContext.xml作为spring的主配置文件,如果我们不喜欢把主配置文件放到这个地方,我们可以通过手动来指定Spring主配置文件的位置和名称。
-
配置springMvc的前端控制器DispatcherServlet。
作用:拦截相应的请求交给spring mvc处理。
注意:默认spring mvc会从WEB-INF下去加载[servlet的name]-servlet.xml 这个主配置文件,针对下面代码中的例子主配置文件的名称应该是spring-mvc-servlet.xml. 如果我们不喜欢把主配置文件放到这个地方,我们可以通过手动来指定springMvc主配置文件的位置和名称。
-
配置字符编码过滤器CharacterEncodingFilter
作用:配置该过滤器拦截所有的资源并设置好编码格式,用来防止中文乱码问题。
注意:该过滤器一定要配置在其他过滤器之前。
-
下面是web.xml中的全部配置代码:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- ===================== Spring配置 ===================== --> <!-- 配置spring环境 --> <!-- 手动来指定Spring主配置文件的位置和名称 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- ===================== SpringMVC配置 ===================== --> <!-- 配置SpringMVC前端控制器,负责处理所有请求 --> <servlet> <servlet-name>spring-mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 手动来指定SpringMVC主配置文件的位置和名称 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:SpringMvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- 代表拦截所有请求 --> <servlet-mapping> <servlet-name>spring-mvc</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <filter> <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
-