文章目录
- 1. 导入依赖
- 2. 配置web.xml文件
- 3. 编写springmvc.xml配置文件
- 4. 编写spring.xml配置文件
- 5. 编写项目整体业务逻辑
- 6. 开发过程中常见状态码错误
1. 导入依赖
- 在整合SSM项目时,需要导入以下依赖
- Spring 相关依赖 (springmvc相关、事务相关、spring 相关核心依赖、Spring测试)
- Mybatis 依赖(mybatis依赖、mybatis-spring依赖(用于整合mybatis于spring))
- 数据库相关依赖(mysql驱动依赖、若使用其他数据源与需要导入相关依赖(eg : druid))
- json转换相关依赖
- 其他相关依赖
<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>
<!-- 依赖版本管理-->
<spring.version>5.2.0.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- Spring相关依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</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-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</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-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 数据库相关-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!-- 用于整合mybatis于spring-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- 其他依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- json转换-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
2. 配置web.xml文件
(1)配置监听器 – ContextLoaderListener(初始化web容器时,加载spring.xml文件)
- 在context-params 标签中配置spring.xml
- 配置监听器:初始化web容器时,用于加载spring容器(applicationContext),会加载(context-param)
(2)配置核心控制器(初始化核心控制器时,加载springmvc.xml配置文件)
(3)配置过滤器(post请求设置为UTF-8编码格式)
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!-- 加载文件信息-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
<!-- 设置过滤器,用于改变post请求编码-->
<filter>
<filter-name>encodingFilter</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>
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<!-- 过滤所有资源-->
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置监听器:初始化web容器时,用于加载spring容器(applicationContext),会加载(context-param)-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置核心控制器-->
<servlet>
<servlet-name>dispatcherServlet</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>
<!-- servlet加载时机-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
3. 编写springmvc.xml配置文件
- 需要扫描的包(controller层)
- 视图解析器
- 筛选过滤资源
- 开启mvc注解扫描
<!-- 配置扫描注解-->
<context:component-scan base-package="com.qfedu.controller"></context:component-scan>
<!-- 配置视图解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 筛选过滤资源-->
<mvc:resources mapping="/WEB-INF/js/**" location="/WEB-INF/js/"></mvc:resources>
<!-- 开启mvc注解扫描-->
<mvc:annotation-driven></mvc:annotation-driven>
4. 编写spring.xml配置文件
- 需要扫描的包
- 引入数据库配置文件(可以通过
${}
读取properties配置文件) - 配置数据库相关(整合mybatis)
- 数据源
- 配置事务
- 整合mybatis
- 配置扫描mapper接口包,会
自动扫描并生成在spring容器中生成响应mapper的bean实例
- 事务注解扫描(配置事务管理器)
<!-- 开启包注解扫描-->
<context:component-scan base-package="com.qfedu"></context:component-scan>
<!-- 引入数据库配置文件-->
<context:property-placeholder location="classpath:db.properties"></context:property-placeholder>
<!-- 配置数据库相关(整合mybatis)-->
<!-- 数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!-- 配置事务-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 整合mybatis-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 扫描mapper接口并生成在spring容器中生成bean实例-->
<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.qfedu.mapper"></property>
</bean>
<!-- 事务注解扫描(配置事务管理器)-->
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
5. 编写项目整体业务逻辑
- 经过上述四个步骤的配置,SSM框架的环境整合已经完成
- 正常编写Mapper层、Service层、Controller层(可以使用注解较为简单)
- 在Service层添加事务注解,进行相应的事务控制
6. 开发过程中常见状态码错误
- 400 请求参数错误
- 405 请求方式服务器不支持
- 415 请求媒体格式不支持(常与数据类型格式转换有关)
- 404 URL访问服务器资源不存在
- 500 未知服务器错误