SpringMVC的请求和响应(四)

介绍&步骤

视频教程: 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
">
    <!--&lt;!&ndash;用于加载配置文件jdbc.properties 默认是resource目录下面&ndash;&gt;-->
    <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>

    <!--&lt;!&ndash;配置json转化解析器&ndash;&gt;-->
    <!--<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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值