4、SpringMVC实战:SpringMVC中的转发和重定向

SpringMVC中的转发和重定向

代码模拟:
说明全在注释中,方便直接,一定要看!!!!

<?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:springmvc.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc</servlet-name>
        <!--除了jsp之外的所有请求资源-->
        <url-pattern>/</url-pattern>
        <!-- <url-pattern>*.action</url-pattern>-->
    </servlet-mapping>
</web-app>

<?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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       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">
    <!--扫描注解@Controller-->
    <context:component-scan base-package="com.controller"></context:component-scan>

    <!--@RequestMapping-->
    <mvc:annotation-driven></mvc:annotation-driven>
    <!--静态资源的放行-->
    <!--mapping:指代的是网络的地址  location:指代的是放行本地的什么资源 -->
    <mvc:resources mapping="/js/**" location="/js/"></mvc:resources>

    <!--自定义视图解析器-->
    <!--<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>-->
</beans>

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
      <%--转发到指定的页面中--%>
     <jsp:forward page="WEB-INF/update.jsp"></jsp:forward>
  </body>
</html>

update.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>update.jsp</h3>
</body>
</html>

package com.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.view.InternalResourceView;
import org.springframework.web.servlet.view.RedirectView;

@Controller
public class MyCon2 {
   
     

    @RequestMapping("demo4")
    public ModelAndView demo4() {
   
     
        ModelAndView modelAndView = new ModelAndView();
        //转发一
        modelAndView.setViewName("forward:/index.jsp");
        //重定向一
        modelAndView.setViewName("redirect:/index.jsp");
        //转发二
        modelAndView.setView(new InternalResourceView("/index.jsp"));
        //重定向二
        modelAndView.setView(new RedirectView("/AAAAA_war_exploded/index.jsp"));
        return modelAndView;
    }

    @RequestMapping("demo3")
    public View demo3() {
   
     
        //转发的跳转
        //View  v =new InternalResourceView("/index.jsp");
        //重定向的跳转
        View v = new RedirectView("/AAAAA_war_exploded/index.jsp");
        return v;
    }

    /**
     * 重定向:
     * return "redirect:index.jsp";
     * <p>
     * 相对路径: 支持 -相对于当前的浏览器地址
     * <p>
     * 根路径:  /--当前项目
     * <p>
     * 绝对路径:http://www.baidu.com 支持
     */

    @RequestMapping("demo2")
    public String demo2() {
   
     
        System.out.println("重定向跳转");
        return "redirect:http://www.baidu.com";
    }

    /**
     * 转发
     * <p>
     * return "index.jsp"; 这种方式默认的就是转发
     * <p>
     * return "forward:/index.jsp"; 全写方式
     * <p>
     * 路径支持
     * 相对路径:相对与当前浏览器的地址  ../
     * <p>
     * 根路径: / ---当前项目  推荐使用
     * <p>
     * 绝对路径:不支持的--最大的范围就是当前的项目
     */
    @RequestMapping("demo1")
    public String demo1() {
   
     
        return "/index.jsp";
    }
}

运行结果:

都可以成功跳转,不好演示…手动滑稽

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: