第十节——数据响应

一、以ModelAndView形式进行页面跳转

  1. 使用第九节的基础环境
  2. 在main-webapp目录下创建jsp目录,并将success.jsp放进去
  3. 编辑spring-mvc.xml,改变视图查找路径,从jsp里查找.jsp文件
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>
  1. 编辑main-java-study-controller目录的UserController.class文件,新添加一个show2方法,给jsp页面返回一个值
@RequestMapping("/quick2")
    public ModelAndView show2(){
    
    
        System.out.println("show2 running............");
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("username","qwe");
        modelAndView.setViewName("success");
        return modelAndView;
    }
  1. 编辑jsp目录下success.jsp页面,获取值:${username}
  2. 修改web.xml,对第一个<web-app>标签进行修改,否则值el表达式会失效
<web-app version="2.5"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name>Archetype Created Web Application</display-name>
  <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-->
  </servlet-mapping>
</web-app>
  1. 开启tomcat,访问http://localhost:8080/demo03_war/quick2进行测试

二、spring框架的妙用

  1. 由于UserController.class需要一个model,我们可以让spring自动生成,不需要我们手动生成,只需要在方法的参数中索要即可
@RequestMapping("/quick3")
    public ModelAndView sho3(ModelAndView modelAndView, HttpServletRequest request){
    
    
        System.out.println("show2 running............");
        modelAndView.addObject("username","qwe");
        request.setAttribute("password","root");
        modelAndView.setViewName("success");
        return modelAndView;
    }

三、回写数据——直接回写字符串

  1. 使用框架的responnse继续数据回写
@RequestMapping("/quick1")
    public void show1(HttpServletResponse response) throws IOException {
    
    
        response.getWriter().println("aaaaa");
    }
  1. 使用@ResponseBody注解进行数据回写,不进行页面跳转
@RequestMapping("/quick1")
@ResponseBody  //告知springMVC框架不用页面跳转,直接回写字符串
public String show1() {
    
    
    return "aaaa";
}

四、回写数据——回写json数据

  1. 导入坐标
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.13.0-rc2</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.13.0-rc2</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.13.0-rc2</version>
    </dependency>
  1. 使用ObjectMapper对类进行json转换
@RequestMapping("/quick1")
@ResponseBody
public String show1() throws JsonProcessingException {
    
    
    Student s = new Student();
    s.setName("qwe");
    s.setAge(12);
    ObjectMapper objectMapper = new ObjectMapper();
    String json = objectMapper.writeValueAsString(s);
    System.out.println(json);
    return json;
}

五、回写数据——返回对象或集合让Spring自己转换成json

  1. 删除四中的坐标
  2. 编辑spring-mvc.xml,配置处理器
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
     <property name="messageConverters">
         <list>
             <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
         </list>
     </property>
</bean>
  1. 修改UserController.java文件
@RequestMapping("/quick1")
@ResponseBody
public Student show1() throws JsonProcessingException {
    
    
    Student s = new Student();
    s.setName("qwe");
    s.setAge(12);
    return s;
}

六、回写数据——配置mcv命名空间以简化spring-mvc.xml的配置

  1. 将处理器配置注释掉
    在这里插入图片描述
  2. 添加mvc命名空间以及配置注解驱动
<?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">

    <context:component-scan base-package="study.controller"/>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <!-- 配置注解驱动 -->
    <mvc:annotation-driven/>
</beans>

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37589805/article/details/120597310