(41)SpringMVC入门第二天(SpringMVC中前后端之间的交互)

本文介绍了SpringMVC中响应数据的三种方式:返回字符串、void及ModelAndView对象,并详细讲解了请求转发与重定向的实现。此外,还探讨了ResponseBody注解在响应JSON数据中的应用及其配置静态资源的处理方法。
摘要由CSDN通过智能技术生成

一、SpringMVC中响应数据的返回值

1.响应返回字符串:

controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。

//指定逻辑视图名,经过视图解析器解析为 jsp 物理路径:/WEB-INF/pages/success.jsp
@RequestMapping("/testReturnString")
public String testReturnString() {
	System.out.println("AccountController 的 testReturnString 方法执行了。。。。");
return "success"; }

2.返回值是void:

    /**
    * @Description: 返回值是void
    */
    @RequestMapping("/testVoid")
    public void testVoid(Model model){
        System.out.println("testVoid方法执行了");

    }

在这里插入图片描述

如果控制器的方法返回值编写成void,执行程序报404的异常,默认查找JSP页面没有找到。默认会跳转到@RequestMapping(value="/initUpdate") initUpdate的页面。(使用请求转发或者重定向就能解决这个问题)

使用请求转发或者重定向跳转到指定的页面:

 /**
    * @Description: 返回值是void
     * 请求转发是一次请求,不用编写项目的名称
     * 重定向的两次请求,需要写项目的名称。不能访问WEB-INF目录下的文件。
    */
    @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);

        //重定向(等于重新发了一个请求)
        //response.sendRedirect(request.getContextPath()+"/index.jsp");
        
        //设置中文乱码
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        //直接进行响应
        response.getWriter().print("你好");

        return;
    }

注意事项:
1)手动调用请求转发,不会执行spring配置好的视图解析器,所以就需要自己编写完整的目录。
2)当转发完成后,会自动执行后面的代码,如果不想继续执行后面的代码,可以写一个return。

3.返回值是ModelAndView对象

ModelAndView对象是SpringMVC提供的一个对象,和返回字符串是类似的,基本上都是通过视图解析器帮我们跳转到我们想要跳转的页面,返回字符串的底层其实就是返回ModelAndView对象的方式。

/**
     * @Description: 返回值是ModelAndView
     */
    @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView(Model model){
        //创建ModelAndView对象
        ModelAndView mv = new ModelAndView();
        System.out.println("testModelAndView方法执行了");
        //模拟从数据库中查询出User对象
        User user = new User();
        user.setUsername("安逸");
        user.setPassword("123");
        user.setAge(30);

        //把user对象存储到mv对象中,也会把user对象存入到request域对象中。
        mv.addObject("user", user);

        //跳转到哪个页面
        mv.setViewName("success");
        return mv;
    }

二、SpringMVC框架提供的转发和重定向

1.forward请求转发:

controller 方法在提供了 String 类型的返回值之后,默认就是请求转发。

    /**
     * @Description: 使用关键字的形式进行转发或者重定向
     */
    @RequestMapping("/testForward")
    public String testForward(){
        System.out.println("testForward方法执行了");
        return "forward:/WEB-INF/pages/success.jsp";
    }
}

2.redirect重定向:

contrller 方法提供了一个 String 类型返回值之后,它需要在返回值里使用:redirect:

    /**
     * @Description: 使用关键字Redirect进行重定向
     */
    @RequestMapping("/testRedirect")
    public String testRedirect(){
        System.out.println("testRedirect方法执行了");
        return "redirect:index.jsp";
    }

三、ResponseBody注解响应json数据

1.作用:

该注解用于将 Controller 的方法返回的对象,通过 HttpMessageConverter 接口转换为指定格式的数据如:json,xml 等,通过 Response 响应给客户端

2.先要导入进行异步请求的资源文件jquery.min.js

在这里插入图片描述

DispatcherServlet会拦截到所有的资源,导致一个问题就是静态资源(img、css、js)也会被拦截到,从而不能被使用。解决问题就是需要配置静态资源不进行拦截

<!--告诉前端控制器,哪些静态资源不拦截-->
<mvc:resources location="/css/" mapping="/css/**"/> <!-- 样式 --> 
<mvc:resources location="/images/" mapping="/images/**"/> <!-- 图片 --> 
<mvc:resources location="/js/" mapping="/js/**"/> <!-- javascript -->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值