介绍&步骤
视频教程: https://www.bilibili.com/video/BV1WZ4y1P7Bp?p=51
官方笔记链接:https://pan.baidu.com/s/1dnL5hwOPHPMNgb81yzQIOQ
提取码:2022
目录:
1. SpringMVC的数据响应方式
1.1 页面跳转
项目前期环境搭建: https://blog.csdn.net/qq_45056135/article/details/127140919
从spring-mvc入门开始
1.1.1 直接返回字符串
@RequestMapping(value = "/quick1")
public String quick1(){
System.out.println("Controller save running...");
return "index";
}
1.1.2 通过ModelAndView对象进行返回
/*
Model:模型作用封装数据
View:视图作用展示数据
*/
@RequestMapping(value = "/quick2")
public ModelAndView quick2(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("username", "csdn");// 存入数据到request域中
modelAndView.setViewName("success"); // 这是也是写试图解析器之后的值
return modelAndView;
}
1.1.3 向request域存储数据
@RequestMapping(value = "/quick5") // 参数注入
public String quick5(HttpServletRequest request){
request.setAttribute("username", "request");
return "success";
}
@RequestMapping(value = "/quick4") // 参数注入
public String quick4(Model model){
model.addAttribute("username", "中国");
return "success";
}
@RequestMapping(value = "/quick3")
public ModelAndView quick3(ModelAndView modelAndView){
modelAndView.addObject("username", "csdn itheima");// 存入数据到request域中
modelAndView.setViewName("success"); // 这是也是写试图解析器之后的值
return modelAndView;
}
1.2 回写普通数据
利用String返回回写数据要使用@ResponseBody
注解
@RequestMapping(value = "/quick7") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public String quick7() throws IOException {
return "hello response7"; //
}
@RequestMapping(value = "/quick6") // 参数注入
public void quick6(HttpServletResponse response) throws IOException {
response.getWriter().print("hello response6");
}
1.3 回写json格式字符串
准备一个User
类
// set, get, toString方法省略 自己生成
public class User {
private String username;
private int age;
}
pom.xml
导入坐标
<!--jackson-->
<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-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
测试
// quick67 是两种响应的方法
@RequestMapping("/quick8")
@ResponseBody // 表示不进行页面跳转 只是单纯的返回数据
public String save8(){
return "{\"username\":\"zhangsan\",\"age\":18}";
}
@RequestMapping(value = "/quick9") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public String quick9() throws JsonProcessingException {
User user = new User();
user.setUsername("lisi");
user.setAge(30);
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(user);//将user对象转化为json字符串格式
return json;
}
1.4 利用配置返回对象json格式
Spring-mvc.xml
配置json转化解析器
<!--配置json处理解析器 处理器映射器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
</bean>
</list>
</property>
</bean>
(建议配置下面这个 不然到时候配置自定义类型转化器使用上面的会报500的错误)
配置了下面这个就不用配置json格式转化器(上面) 下面大于上面
<!--mvc的注解驱动-->
<mvc:annotation-driven/>
测试代码:
@RequestMapping(value = "/quick10") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
//期望SpringMVC自动将User转换成jsor格式的字符串
public User quick10() throws JsonProcessingException {
User user = new User();
user.setUsername("lisi");
user.setAge(30);
return user;
}
2. Spring获取请求参数
2.1 获得基本类型参数
Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配。
http://localhost:8080/xxxx/user/quick11?username=zhan&age=18
@RequestMapping(value = "/quick11") // 参数注入
@ResponseBody // 这个不能省略 不然会报错
public void quick11(String username, int age) {
System.out.println(username);
System.out.println(age);
}
2.2 获得POJO类型参数
Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配。
http://localhost:8080/xxxx/user/quick12?username=zhan&age=18
//Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配。
@RequestMapping(value = "/quick12") // 参数注入
@ResponseBody // 这个不能省略 不然会报错
public void quick12(User user) {
System.out.println(user.getUsername());
System.out.println(user.getAge());
}
2.2 获得POJO类型参数
Controller中的业务方法数组名称与请求参数的name一致,参数值会自动映射匹配。
http://localhost:8080/xxxx/user/quick13?strs=1&strs=2&strs=3
@RequestMapping(value = "/quick13") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public void quick13(String[] strs){
System.out.println(Arrays.asList(strs));
}
2.4 获得集合对象
public class VO {
private List<User> userList;
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
@Override
public String toString() {
return "VO{" +
"userList=" + userList +
'}';
}
}
创建一个form.jsp
页面用于提交userList数据
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user/quick14" method="post">
uername1: <input type="text" name="userList[0].username"><br>
age1 : <input type="text" name="userList[0].age"><br>
uername2:<input type="text" name="userList[1].username"><br>
age2 :<input type="text" name="userList[1].age"><br>
<input type="submit" value="提交"><br>
</form>
</body>
</html>
测试代码:
@RequestMapping(value = "/quick14") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public void quick14(VO vo) {
System.out.println(vo);
}
2.5 利用ajax返回文件数据
webapp
目录下面
创建ajax.jsp
文件
创建js
目录
下载jquery-3.3.1.js
文件放入js目录中
https://www.jq22.com/jquery/jquery-3.3.1.zip
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>ajax</title>
<script src="${pageContext.request.contextPath}/js/jquery-3.3.1.js"></script>
<script>
var userList = new Array();
userList.push({username:"zhangsan", age:"20"})
userList.push({username:"lisi", age:"22"})
$.ajax({
type:"post",
url:"${pageContext.request.contextPath}/user/quick15",
data:JSON.stringify(userList),
contentType:"application/json;charset=utf-8"
})
</script>
</head>
<body>
<%
System.out.println(request.getContextPath());
%>
</body>
</html>
在spring-mvc.xml
中加入加载js文件的权限
开放资源的访问权限
<!--开放资源的访问权限-->
<mvc:resources mapping="/js/**" location="/js/"/>
或 (推荐使用下面这个)
<!--开放资源的访问权限-->
<mvc:default-servlet-handler/>
测试代码
@RequestMapping(value = "/quick15") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public void quick15(@RequestBody List<User> userList) {
System.out.println("hello quick15");
System.out.println(userList);
}
2.6 请求数据乱码问题 web.xml配置文件
当post请求时,数据会出现乱码,我们可以设置一个过滤器来进行编码的过滤。
<!--乱码过滤器-->
<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>
2.7 参数绑定注解@requestParam
测试代码:
@RequestMapping(value = "/quick16")
@ResponseBody // 告知springmvc框架 不是进行页面跳转 二十进行页面回写数据响应
public void save16(@RequestParam(value = "name", required = false, defaultValue = "itcast")String username) throws IOException {
System.out.println(username);
}
2.8 获得Restful风格的参数
测试代码:
@RequestMapping(value = "/quick17/{username}")
@ResponseBody // 告知springmvc框架 不是进行页面跳转 二十进行页面回写数据响应 @PathVariable 专门解析占位符号得
public void save17(@PathVariable(value = "username")String username) throws IOException {
System.out.println(username);
}
2.9 自定义类型转换器(日期类型)
目的: user/quick18?date=2022/10/10
转化为 user/quick18?date=2022-10-10
日期格式
测试代码:
@RequestMapping(value = "/quick18")
@ResponseBody // 告知springmvc框架 不是进行页面跳转 二十进行页面回写数据响应
// 期望springmvc将user转换成json格式的字符串
public void save18(Date date) throws IOException {
System.out.println(date);
}
public class DateConverter implements Converter<String, Date> {
public Date convert(String dateStr) {
// 将日期字符串 转化成真正的日期字符串
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = format.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
spring-mvc.xml
的配置问题
<!-- 声明转化器 -->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.itheima.convert.DateConverter"></bean>
</list>
</property>
</bean>
<!--mvc的注解驱动-->
<mvc:annotation-driven conversion-service="conversionService"/>
注意!!!!:
如果这里报500错误, 则删除json格式转化器 因为冲突了。
或者将注解驱动的代码放在json转化器定义之前
2.10 获得Servlet相关API
@RequestMapping(value = "/quick19") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public void quick19(HttpServletRequest request, HttpServletResponse response, HttpServletResponse session) {
System.out.println(request);
System.out.println(response);
System.out.println(session);
}
2.11 获得请求头
@RequestMapping(value = "/quick20") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public void quick20(@RequestHeader(value = "User-Agent")String headerValue) {
System.out.println(headerValue);
}
@RequestMapping("/quick21")
@ResponseBody
public void quick21(@CookieValue(value = "JSESSIONID",required = false) String jsessionid){
System.out.println(jsessionid);
}
2.12 文件上传
upload.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user/quick22" method="post"
enctype="multipart/form-data">
名称:<input type="text" name="username"><br>
文件:<input type="file" name="uploadFile"><br>
<input type="submit" value="提交"><br>
</form>
</body>
</html>
导入fileupload和io坐标
<!--导入fileupload和io坐标-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
在spring-mvc.xml配置文件上传解析器
<!-- 配置文件上传解析器-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--上传文件总大小-->
<property name="maxUploadSize" value="5242800"/>
<!--上传单个文件的大小-->
<property name="maxUploadSizePerFile" value="5242800"/>
<!--上传文件的编码类型-->
<property name="defaultEncoding" value="UTF-8"/>
</bean>
编写文件上传代码
@RequestMapping("/quick22")
@ResponseBody
public void quick22(String username, MultipartFile uploadFile) throws IOException {
System.out.println(username);
// 获得上传文件的名称
String originalFilename = uploadFile.getOriginalFilename();
System.out.println("originalFilename: " + originalFilename);
uploadFile.transferTo(new File("D:\\"+originalFilename));
}
2.13 多文件上传实现
提交的表格
<form action="${pageContext.request.contextPath}/user/quick24" method="post"
enctype="multipart/form-data">
名称:<input type="text" name="username"><br>
文件1:<input type="file" name="uploadFiles"><br>
文件2:<input type="file" name="uploadFiles"><br>
<input type="submit" value="提交"><br>
</form>
<form action="${pageContext.request.contextPath}/user/quick23" method="post"
enctype="multipart/form-data">
名称:<input type="text" name="username"><br>
文件1:<input type="file" name="uploadFile1"><br>
文件2:<input type="file" name="uploadFile2"><br>
<input type="submit" value="提交"><br>
</form>
controller层测试代码
@RequestMapping("/quick24")
@ResponseBody
public void quick24(String username, MultipartFile[] uploadFiles) throws IOException {
System.out.println(username);
// 获得上传文件的名称
for (MultipartFile uploadFile:uploadFiles) {
String originalFilename = uploadFile.getOriginalFilename();
System.out.println(originalFilename);
uploadFile.transferTo(new File("D:\\"+originalFilename));
}
}
@RequestMapping("/quick23")
@ResponseBody
public void quick23(String username, MultipartFile uploadFile1,MultipartFile uploadFile2) throws IOException {
System.out.println(username);
// 获得上传文件的名称
String originalFilename1 = uploadFile1.getOriginalFilename();
uploadFile1.transferTo(new File("D:\\"+originalFilename1));
String originalFilename2 = uploadFile2.getOriginalFilename();
uploadFile2.transferTo(new File("D:\\"+originalFilename2));
}
3.总结
目录结构
3.1controller层代码
@Controller // 放在spring容器中
@RequestMapping("/user")
public class UserController {
@RequestMapping("/quick24")
@ResponseBody
public void quick24(String username, MultipartFile[] uploadFiles) throws IOException {
System.out.println(username);
// 获得上传文件的名称
for (MultipartFile uploadFile:uploadFiles) {
String originalFilename = uploadFile.getOriginalFilename();
System.out.println(originalFilename);
uploadFile.transferTo(new File("D:\\"+originalFilename));
}
}
@RequestMapping("/quick23")
@ResponseBody
public void quick23(String username, MultipartFile uploadFile1,MultipartFile uploadFile2) throws IOException {
System.out.println(username);
// 获得上传文件的名称
String originalFilename1 = uploadFile1.getOriginalFilename();
uploadFile1.transferTo(new File("D:\\"+originalFilename1));
String originalFilename2 = uploadFile2.getOriginalFilename();
uploadFile2.transferTo(new File("D:\\"+originalFilename2));
}
@RequestMapping("/quick22")
@ResponseBody
public void quick22(String username, MultipartFile uploadFile) throws IOException {
System.out.println(username);
// 获得上传文件的名称
String originalFilename = uploadFile.getOriginalFilename();
System.out.println("originalFilename: " + originalFilename);
uploadFile.transferTo(new File("D:\\"+originalFilename));
}
@RequestMapping("/quick21")
@ResponseBody
public void quick21(
@CookieValue(value = "JSESSIONID",required = false) String jsessionid){
System.out.println(jsessionid);
}
@RequestMapping(value = "/quick20") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public void quick20(@RequestHeader(value = "User-Agent")String headerValue) {
System.out.println(headerValue);
}
@RequestMapping(value = "/quick19") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public void quick19(HttpServletRequest request, HttpServletResponse response, HttpServletResponse session) {
System.out.println(request);
System.out.println(response);
System.out.println(session);
}
@RequestMapping(value = "/quick18") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public void quick18(Date date) {
System.out.println(date);
}
@RequestMapping(value = "/quick17/{name}") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public void quick17(@PathVariable("name") String username) {
System.out.println(username);
}
@RequestMapping(value = "/quick16") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public void quick16(@RequestParam("name") String username) {
System.out.println(username);
}
@RequestMapping(value = "/quick15") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public void quick15(@RequestBody List<User> userList) {
System.out.println(userList);
}
@RequestMapping(value = "/quick14") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public void quick14(VO vo) {
System.out.println(vo);
}
@RequestMapping(value = "/quick13") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
//期望SpringMVC自动将User转换成jsor格式的字符串
public void quick13(String[] strs) throws JsonProcessingException {
System.out.println(Arrays.asList(strs));
}
@RequestMapping(value = "/quick12") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
//期望SpringMVC自动将User转换成jsor格式的字符串
public void quick12(User user) throws JsonProcessingException {
System.out.println(user.getUsername());
System.out.println(user.getAge());
System.out.println(user);
}
@RequestMapping(value = "/quick11") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
//期望SpringMVC自动将User转换成jsor格式的字符串
public void quick11(String username, int age) throws JsonProcessingException {
System.out.println(username);
System.out.println(age);
}
@RequestMapping(value = "/quick10") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
//期望SpringMVC自动将User转换成jsor格式的字符串
public User quick10() throws JsonProcessingException {
User user = new User();
user.setUsername("lisi");
user.setAge(30);
return user;
}
@RequestMapping(value = "/quick9") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public String quick9() throws JsonProcessingException {
User user = new User();
user.setUsername("lisi");
user.setAge(30);
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(user);//将user对象转化为json字符串格式
return json;
}
@RequestMapping(value = "/quick8") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public String quick8() {
return "{\"username\":\"zhangsan\", \"age\":18}"; //
}
@RequestMapping(value = "/quick7") // 参数注入
@ResponseBody // 表示字符串输出而不是进行页面跳转
public String quick7() throws IOException {
return "hello response7"; //
}
@RequestMapping(value = "/quick6") // 参数注入
public void quick6(HttpServletResponse response) throws IOException {
response.getWriter().print("hello response6");
}
@RequestMapping(value = "/quick5") // 参数注入
public String quick5(HttpServletRequest request){
request.setAttribute("username", "request5");
return "success";
}
@RequestMapping(value = "/quick4") // 参数注入
public String quick4(Model model){
model.addAttribute("username", "中国4");
return "success";
}
@RequestMapping(value = "/quick3")
public ModelAndView quick3(ModelAndView modelAndView){
modelAndView.addObject("username", "csdn itheima3");// 存入数据到request域中
modelAndView.setViewName("success"); // 这是也是写试图解析器之后的值
return modelAndView;
}
/*
Model:模型作用封装数据
View:视图作用展示数据
*/
@RequestMapping(value = "/quick2")
public ModelAndView quick2(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("username", "csdn2");// 存入数据到request域中
modelAndView.setViewName("success"); // 这是也是写试图解析器之后的值
return modelAndView;
}
@RequestMapping(value = "/quick1")
public String quick1(){
System.out.println("Controller save running...");
return "index";
}
@RequestMapping(value = "/quick", method = RequestMethod.GET, params = {"username"})
public String save(){
System.out.println("Controller save running...");
return "success";
}
}
3.2web.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">
<!--配置springMVC的前端控制器-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!--配置映射地址-->
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--全局参数-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--Spring的配置的监听器-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!--配置编码-->
<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>
3.3applicationContext.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"
xsi:schemaLocation="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
">
<!--<!–用于加载配置文件jdbc.properties 默认是resource目录下面–>-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!--userDao的Bean-->
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>
<!--userService的Bean-->
<bean id="userService" class="com.itheima.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao" />
</bean>
</beans>
3.4spring-mvc.xm文件
<?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 http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
<!--Controller组件扫描-->
<context:component-scan base-package="com.itheima">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--配置内部资源视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!--<!–配置json转化解析器–>-->
<!--<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">-->
<!--<property name="messageConverters">-->
<!--<list>-->
<!--<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">-->
<!--</bean>-->
<!--</list>-->
<!--</property>-->
<!--</bean>-->
<!--mvc的注解驱动-->
<mvc:annotation-driven conversion-service="conversionService"/>
<!--<mvc:resources mapping="/js/**" location="/js/"/>-->
<mvc:default-servlet-handler/>
<!-- 声明转化器 -->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.itheima.convert.DateConverter"></bean>
</list>
</property>
</bean>
<!-- 配置文件上传解析器-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--上传文件总大小-->
<property name="maxUploadSize" value="5242800"/>
<!--上传单个文件的大小-->
<property name="maxUploadSizePerFile" value="5242800"/>
<!--上传文件的编码类型-->
<property name="defaultEncoding" value="UTF-8"/>
</bean>
</beans>
3.5jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=123456
3.6ajax.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<script src="${pageContext.request.contextPath}/js/jquery-3.3.1.js"></script>
<script>
var userList =new Array();
userList.push({username:'zhangsan', age:"18"})
userList.push({username:'lisi', age:"20"})
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/user/quick15",
data:JSON.stringify(userList),
contextType:"application/json;charset=UTF-8"
});
</script>
</head>
<body>
hello ajax.jsp
</body>
</html>