本篇文章讲述响应的解决,对于申请的解决能够看我第一篇文章
链接地址:https://segmentfault.com/a/11...

后期筹备

应用环境

  • JDK:1.8
  • Tomcat:9.0.3
  • Spring:5.2.8
  • Maven:3.6.3
  • 编译器:IntelliJ IDEA 2019

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">          <servlet>         <servlet-name>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>     </servlet>    <servlet-mapping>         <servlet-name>mvc</servlet-name>        <url-pattern>*.do</url-pattern>     </servlet-mapping></web-app>

ApplicationContext.xml配置(Spring外围配置文件)

<?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:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans https://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/aop https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">    <!-- 开启spring注解驱动-->     <context:component-scan base-package="com.cjh"/>    <!-- 开启mvc注解驱动-->     <mvc:annotation-driven></mvc:annotation-driven></beans>

响应解决

原生的Servlet解决有间接采纳response获取输入流间接响应会给浏览器,通过request转发或者重定向三种形式,当初应用spring-mvc进行响应的解决

返回String

  • "forward:资源路径名":转发到冒号前面的资源门路
  • "redirect:资源路径名":重定向到冒号前面的资源路径名
  • "":如果返回的是空串,则会找index.jsp资源
  • 示例代码如下:
@Controllerpublic class UserController {        //办法中传入实体对象:对象外面有list汇合    @RequestMapping("test.do")    public String testFive(User user){        System.out.println(user);        return "redirect:welcome.jsp";    }}

ModelAndView

  • Model、ModelMap和ModelAndView的区别

    • Model和ModelMap只能存储返回的参数(key-value)
    • ModelAndView既能存储返回的参数,也能存储资源门路
  • ModelAndView中有两个重要的属性:

    • Object view:存储资源门路
    • ModelMap model:存储返回的参数,mvc框架会将存储的Key-value数据存入request作用域
  • 代码如下:

    • index.jsp:
    <%@ page contentType="text/html; charset=UTF-8" language="java" %><html><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>cai jin hong</title></head><body> <form action="test.do" method="post">     account:<input type="text" name="account" value=""><br>     password:<input type="text" name="password" value=""><br>     balance:<input type="text" name="balance" value=""><br>     address1:<input type="text" name="addressList[0].address" value=""><br>     address2:<input type="text" name="addressList[1].address" value=""><br>     <input type="submit" value="submit"> </form></body></html>
    • welcome.jsp:(这时候,Jsp就能从requestScope作用域外面提取到咱们存进去的account)
    <%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Title</title></head><body> param:welcome,${param.account}<br> requestScope:welcome,${requestScope.account}<br></body></html>
    • Java:
    @Controllerpublic class UserController {     //办法中传入实体对象:对象外面有list汇合     @RequestMapping("test.do")     public ModelAndView testFive(User user){         //创立ModelAndView对象         ModelAndView mv = new ModelAndView();         //设置返回的参数         mv.addObject("account", user.getAccount());         mv.addObject("password", user.getBalance());         //设置返回门路         mv.setViewName("welcome.jsp");         return mv;     }}

存入Session作用域

  • 首先,须要将参数(Key-value)存入request作用域
  • 而后通过@SessionAttributes({"key",""})注解存入Session作用域
  • 代码如下:(此时,welcome.jsp就能从SessionScope作用域里获取到account的值)
@Controller@SessionAttributes("account")public class UserController {    //办法中传入实体对象:对象外面有list汇合     @RequestMapping("test.do")     public ModelAndView testFive(User user){         //创立ModelAndView对象         ModelAndView mv = new ModelAndView();         //设置返回的参数         mv.addObject("account", user.getAccount());         mv.addObject("password", user.getBalance());         //设置返回门路         mv.setViewName("welcome.jsp");         return mv;     }}