第一种:方法的返回值为字符串类型

@RequestMapping("/hello")
    public String Hello(){
        System.out.println("欢迎");
        return "success";
    }

返回的字符串会通过配置的视图解析器找到需要跳转的页面:

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

第二种:返回值是void
这种情况下通过转发或者重定向跳转
1.转发
转发不用向浏览器发送第二次请求,而且能够直接访问WEB-INF下的jsp页面

@RequestMapping("testForward")
    public void testForward(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("testForward方法执行了");
        request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
        return;
    }

转发后地址栏不变:
image.png

2.重定向
重定向是再次向浏览器发送请求,地址栏会改变,显示最终访问的页面;重定向不能访问WEB-INF文件

@RequestMapping("testRedirect")
    public void testRedirect(HttpServletRequest request,HttpServletResponse response) throws IOException {
        System.out.println("testRedirect方法执行了");
        response.sendRedirect(request.getContextPath()+ "/redirect.jsp");
    }

第三种:直接输出响应内容

@RequestMapping("testDire")
    public void testDire(HttpServletResponse response) throws IOException {
        //解决中文乱码
        //设置字符编码
        response.setCharacterEncoding("UTF-8");
        //设置浏览器解析页面编码
        response.setContentType("text/html;charset=UTF-8");
        System.out.println("testDire执行了");
        response.getWriter().print("你好");
        return;
    }

第四种:用关键字实现转发或者重定向(较少使用)
forward:

    @RequestMapping("testForwardKey")
    public String testForwardKey(){
        System.out.println("testForwardKey方法执行了");
        return "forward:/WEB-INF/pages/success.jsp";
    }

redirect:

    @RequestMapping("testRedirectKey")
    public String testRedirectKey(){
        System.out.println("testForwardKey方法执行了");
        return "redirect:/redirect.jsp";
    }

dali
10 声望0 粉丝

引用和评论

0 条评论