1.Spring+SpringMVC
1.1将Maven项目转换为web工程
1.2引入依赖 pom.xml里
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<spring.version>5.2.9.RELEASE</spring.version>
</properties>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--freemarker start freemarker需要的依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
<!--freemarker end-->
<!--jackson json序列化-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.5</version>
</dependency>
<!-- 文件上传 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
1.3配置DispatcherServlet
先创建一个applicationContext.xml文件
web.xml
<!--配置DispatcherServlet-->
<servlet>
<servlet-name>spring_mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.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>
> 1.4对Spring配置文件加上web相关的 applicationContext.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
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--包扫描,SpringMVC的注解开发依赖于他-->
<context:component-scan base-package="com.linanjun"/>
<!--mvc的注解开发模式-->
<mvc:annotation-driven/>
<!--让DispatcherServlet对静态资源放行-->
<mvc:default-servlet-handler/>
</beans>
1.5解决乱码问题
1.请求乱码
POST请求乱码,在web.xml中添加过滤器
<!--请求乱码问题-->
<filter>
<filter-name>characterFileter</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>characterFileter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.响应乱码 主要是对响应数据乱码的解决,视图里的数据乱码,取决于模板引擎的配置
在appliactionContext.xml里把<mvc:annotation-driven>标签展开配置
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=utf-8</value>
<value>application/json;char=utf-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
1.6整合freemarker模板引擎
先在WEB-INF文件夹下建一个ftl文件夹
在applicationContext.xml里加
<!--引入freemarker模板引擎-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="contentType" value="text/html;charset=utf-8"/>
<property name="suffix" value=".ftl"/>
</bean>
<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/ftl/"/>
<property name="freemarkerSettings">
<props>
<prop key="defaultEncoding">UTF-8</prop>
</props>
</property>
</bean>
1.7配置MultipartResolver 在applicationContext.xml里添加
<!--配置MultipartResolver 上传文件-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<!--上传文件大小的限制,-1表示不限制,单位是b,10485760等于10兆-->
<property name="maxUploadSize" value="10485760"/>
</bean>
2Spring+Mybatis
2.1引入依赖
<!--mybatis包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--mybatis-spring 整合包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<!--引入JDBC包,是为了让Spring对事物进行管理-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.6</version>
</dependency>
2.2配置数据源和连接池 applicationContext.xml
在包扫描的上面一行加一个 db.properties是我的jdbc
<context:property-placeholder location=“classpath:db.properties”/>
<!--配置数据源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<!--alibaba里这一步就不用另外配置了 <property name="driverClassName" value="${jdbc.driver}"/>-->
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.pwd}"/>
<property name="initialSize" value="10"/><!--表示启动这个项目就有10个连接了-->
<property name="maxActive" value="15"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!--映射文件的地址-->
<property name="mapperLocations" value="classpath:/mappers/*xml"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--指定需要被代理的接口的路径-->
<property name="basePackage" value="com.linanjun.dao"/>
</bean>
Spring声明式事务配置 applicationContext.xml
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--开始注解式声明式事物-->
<tx:annotation-driven transaction-manager="transactionManager"/>
3.整合其他模块
3.1测试模块(Test)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!-- 和Junit,TestNG整合,让他在单元测试里面支持Spring的特性-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope><!--表示不会参加打包-->
</dependency>
测试用例
//@RunWith来自Junit,选择运行环境的
//SpringJUnit4ClassRunner.class来自Spring-Text
// 实现了Junit的接口,目的是告诉Junit测试类,用Spring的环境
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})//locations配置文件,classes配置类
@WebAppConfiguration//告诉junit当前为web环境
public class App {
//把c1118dao给注入进来
@Autowired
private C1118Dao c1118Dao;
@Test
public void testSelect(){
C1118 c1118 = c1118Dao.queryById(1);
System.out.println(c1118);
}
最终
mybatis-config.xml
<?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>
<!-- (配置文件的位置不要随意更改)-->
<settings>
<!-- 开启下划线转驼峰-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>