四、数据的返回以及页面的跳转

页面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Titletitle>
    <script src="js/jquery.min.js">script>
    <script>
        // 页面加载,绑定单击事件
        $(function(){
      
            $("#btn").click(function(){
      
                // 发送ajax请求
                $.ajax({
      
                    // 编写json格式,设置属性和值
                    url:"user/testAjax",
                    contentType:"application/json;charset=UTF-8",
                    data:'{"username":"jack","password":"123","age":30}',
                    dataType:"json",
                    type:"post",
                    success:function(data){
      
                        // data服务器端响应的json的数据,进行解析
                        alert(data.username+','+data.password+','+data.age);
                    }
                });
            });
        });
    script>

head>
<body>
    <a href="user/testString" >returnType: Stringa>
    <br/>
    <a href="user/testVoid" >returnType: Voida>
    <br/>
    <a href="user/testModelAndView" >testModelAndViewa>
    <br/>
    <a href="user/testForwardOrRedirect" >testForwardOrRedirecta>
    <br/>
    <button id="btn">发送ajax的请求button>
body>
html>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Titletitle>
head>
<body>
    <h3>执行成功h3>
    ${user.username}
    ${user.password}
body>
html>

1、返回String

@Controller
@RequestMapping("/user")
public class UserController {
     
    @RequestMapping("/testString")
    public String testString(Model model){
     
        System.out.println("testString方法执行了...");
        // 模拟从数据库中查询出User对象
        User user = new User();
        user.setUsername("jack");
        user.setPassword("123456");
        user.setAge(30);
        // model对象
        model.addAttribute("user",user);
        return "success";
    }
}

四、数据的返回以及页面的跳转_第1张图片

2、无返回值的情况

①请求转发

@RequestMapping("/testVoid")
public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
     
    System.out.println("testVoid方法执行了...");
    // 编写请求转发的程序
    request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
    return;
}

四、数据的返回以及页面的跳转_第2张图片

②重定向

@RequestMapping("/testVoid")
public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
     
    System.out.println("testVoid方法执行了...");
    // 重定向
    response.sendRedirect(request.getContextPath()+"/index.jsp");
    return;
}

四、数据的返回以及页面的跳转_第3张图片
也可以使用关键字进行转发和重定向

@RequestMapping("/testForwardOrRedirect")
public String testForwardOrRedirect(){
     
    System.out.println("testForwardOrRedirect方法执行了...");
    // 请求的转发
    return "forward:/WEB-INF/pages/success.jsp";
    // 重定向
    return "redirect:/index.jsp";
}

③直接响应数据

@RequestMapping("/testVoid")
public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
     
    System.out.println("testVoid方法执行了...");
    // 设置中文乱码
    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html;charset=UTF-8");
    // 直接会进行响应
    response.getWriter().print("你好");
    return;
}

四、数据的返回以及页面的跳转_第4张图片

3、返回ModelAndView对象

@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
     
    // 创建ModelAndView对象
    ModelAndView mv = new ModelAndView();
    System.out.println("testModelAndView方法执行了...");
    // 模拟从数据库中查询出User对象
    User user = new User();
    user.setUsername("jack");
    user.setPassword("123456");
    user.setAge(30);
    // 把user对象存储到mv对象中,也会把user对象存入到request对象
    mv.addObject("user",user);
    // 跳转到哪个页面
    mv.setViewName("success");
    return mv;
}

四、数据的返回以及页面的跳转_第5张图片

4、接收返回异步请求数据

静态资源的过滤,前端控制器DispatcherServlet将会进行拦截,需要在springmvc.xml中进行配置
四、数据的返回以及页面的跳转_第6张图片


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    
    <context:component-scan base-package="com.liaoxiang"/>

    
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    bean>

    
    <mvc:resources location="/css/" mapping="/css/**"/>
    <mvc:resources location="/images/" mapping="/images/**"/>
    <mvc:resources location="/js/" mapping="/js/**"/>

    
    <mvc:annotation-driven />

beans>
<script>
        // 页面加载,绑定单击事件
        $(function(){
     
            $("#btn").click(function(){
     
                // 发送ajax请求
                $.ajax({
     
                    // 编写json格式,设置属性和值
                    url:"user/testAjax",
                    contentType:"application/json;charset=UTF-8",
                    data:'{"username":"jack","password":"123","age":30}',
                    dataType:"json",
                    type:"post",
                    success:function(data){
     
                        // data服务器端响应的json的数据,进行解析
                        alert(data.username+','+data.password+','+data.age);
                    }
                });
            });
        });
    </script>
@ResponseBody
@RequestMapping("/testAjax")
public User testAjax(@RequestBody User user){
     
    System.out.println("testAjax方法执行了...");
    // 客户端发送ajax的请求,传的是json字符串,后端把json字符串封装到user对象中
    System.out.println(user);
    // 做响应,模拟查询数据库
    user.setUsername("rose");
    user.setAge(40);
    // 做响应
    return user;
}

在这里插入图片描述
四、数据的返回以及页面的跳转_第7张图片

你可能感兴趣的:(SpringMVC)