springMvc页面跳转---重定向和转发

准备工作

1.导入json依赖
点击查看代码
 <!-- jsp需要依赖! jstl-->
        <dependency>
            <groupId>jakarta.servlet.jsp.jstl</groupId>
            <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
            <version>3.0.0</version>
        </dependency>
2.声明配置类
点击查看代码

@Configuration
@ComponentScan("com.wind")
@EnableWebMvc
//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
public class MvcConfig implements WebMvcConfigurer {

    @Override  //配置jsp对应的视图解析器
    public void configureViewResolvers(ViewResolverRegistry registry) {
        //快速 添加 网页 的 前后缀
        registry.jsp("/WEB-INF/views/", ".jsp");
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
//        开启静态资源查找
        configurer.enable();
    }

    //添加拦截器 将拦截器加到ioc容器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //TODO:传入 拦截器对象    该方式 拦截全部请求
//        registry.addInterceptor(new MyInterceptor());
        //TODO:设置 拦截指定地址  *  任意一层字符串   ** 任意多层字符串
        //registry.addInterceptor(new MyInterceptor()).addPathPatterns("/test/e1");
        //error下的任意方法
        //registry.addInterceptor(new MyInterceptor()).addPathPatterns("/test/**");
        //TODO:排除部分拦截 排除的地址应该在拦截地址内部!
        registry.addInterceptor(new MyInterceptor()).addPathPatterns("/test/**")
                .excludePathPatterns("/test/e2");

    }
}
3.ioc容器初始化
点击查看代码
public class SpringMvcInit extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{MvcConfig.class};
    }

    @Override //dispatcherServlet拦截地址
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

目录结构

转发与重定向

@RequestMapping("view")
@Controller
public class JspController {

    /**
     * 快速查找视图
     * 1.方法的返回值是字符串
     * 返回值为 网页名字即可  前后缀在配置类已经写好
     */
    @RequestMapping("jsp")
    public String html(ModelMap model, HttpServletRequest request) {
//        设置共享域
        model.addAttribute("data", "123456");
        request.setAttribute("data1", "22222");
        return "index";  //跳转到 index.jsp
    }

    /**
     *  路径细节:【不使用springmvc, request response】
     *     转发是项目下的资源跳转。路径: 项目下的地址  /view/jsp 忽略 tomcat中设置的 applicationContext
     *     重定向项目下的资源可以是项目外的地址  重定向属于二次请求  路径: 项目下的地址 全地址 /springmvc/view/jsp 不忽略 tomcat中设置的 applicationContext
     *  使用springmvc路径语法:
     *     "forward: 路径 | redirect: 路径 "  重定向,资源的地址也不需要写项目的根路径! /view/jsp
     *     转发和重定向的地址都一样了! 直接写 /view/jsp  由springmvc转化成 - >  /springmvc/view/jsp
     */

    /**
     * 转发:只能是项目下的资源
     * 1.方法的返回值写成字符串
     * 2.返回的字符串前 forward: /转发地址
     */
    @RequestMapping("forward")//请求转发
    public String forward(ModelMap model, HttpServletRequest request) {
//       请求转发到其他页面
//        return "forward:/WEB-INF/views/2.jsp";
//        请求转发到其他控制器
        return "forward:jsp";
//      return "forward:/view/jsp";
        /*
        forward关键字,一旦添加了forward关键字,
        控制器方法返回的视图名称就不会再与视图解析器中的前辍与后辍进行拼接,
        所以必须写出相对于项目根的完整路径才能返回正确的视图          */
    }

    /**
     * 重定向:
     * 1.方法返回值写成字符串类型
     * 2.返回字符串前面 redirect: /重定向的地址
     */
    @RequestMapping("redirect")//请求重定向
    public String redirect(ModelMap model, HttpServletRequest request) {
//        请求重定向到其他控制器
//        return "redirect:/view/jsp";(建议 地址写完善一些 方便后期观看)
        return "redirect:jsp";
    }
}
posted @   微风抚秀发  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示