重定向与转发的几种方式
创始人
2024-04-06 15:53:52

重定向与转发的几种方法

    • 一:ServletAPI(不需视图解析器)
    • 二:通过SpringMVC来实现转发和重定向-不配置视图解析器情况下
    • 三:通过SpringMVC来实现转发和重定向-配置视图解析器情况下
    • 四:ModelAndView-必须配置视图解析器
    • 五:总结

web.xml配置:


modeAndVieworg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:springmvc-servlet.xml1modeAndView/

一:ServletAPI(不需视图解析器)

    @RequestMapping("/t1")public void test2(HttpServletRequest req, HttpServletResponse rsp) throws IOException {rsp.sendRedirect("/index.jsp");}@RequestMapping("/t2")public void test3(HttpServletRequest req, HttpServletResponse rsp) throws Exception {//转发req.setAttribute("msg","/result/t3");req.getRequestDispatcher("/jsp/test.jsp").forward(req,rsp);}

二:通过SpringMVC来实现转发和重定向-不配置视图解析器情况下

springMvc.xml:




controller:

package com.lmy;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;@Controller
public class ModeAndViewController {/*** 不配置视图解析器-转发* @return*/@RequestMapping("/testForward1")public String testForward1(Model model) {model.addAttribute("smg","你好");return "/jsp/test.jsp";}/*** 不配置视图解析器-转发* @return*/@RequestMapping("/testForward2")public String testForward2(Model model) {model.addAttribute("smg","你好,转发");return "forward:/jsp/test.jsp";}/*** 不配置视图解析器-重定向* @return*/@RequestMapping("/testRedirect")public String testRedirect() {
//        model.addAttribute("smg","重定向无法像转发一样携带数据");return "redirect:/jsp/test.jsp";}
}

三:通过SpringMVC来实现转发和重定向-配置视图解析器情况下

springMvc.xml:




controller:

package com.lmy;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;@Controller
public class ModeAndViewController {/*** 配置视图解析器-转发* @return*/@RequestMapping("/testForward1")public String testForward1(Model model) {model.addAttribute("smg","你好");return "test";}/*** 重定向* @return*/@RequestMapping("/testRedirect")public String testRedirect() {
//        model.addAttribute("smg","重定向无法像转发一样携带数据");return "redirect:/jsp/test.jsp";}
}

四:ModelAndView-必须配置视图解析器

设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 .
页面 : {视图解析器前缀} + viewName +{视图解析器后缀}

springMvc.xml:




controller:

    @RequestMapping("/testModelAndView")public ModelAndView testModelAndView() {ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("smg","你好,ModelAndView 转发");modelAndView.setViewName("test");return modelAndView;}@RequestMapping("/testModelAndView2")public ModelAndView testModelAndView2() {ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("smg","你好,ModelAndView 重定向");modelAndView.setViewName("redirect:/jsp/test.jsp");return modelAndView;}

五:总结

  • 重定向 , 不需要视图解析器 , 本质就是重新请求一个新地址 , 所以注意路径是全路径
  • 视图解析器路径拼接方式:
    {视图解析器前缀} + viewName +{视图解析器后缀}
  • 使用ModelAndView对象必须视图解析器

相关内容

热门资讯

年在他乡 情满边疆 (来源:安徽新闻网)转自:安徽新闻网春节,是团圆的日子。今年,有许多西部计划志愿者选择留在服务地过年...
金正恩当选朝鲜劳动党总书记 据朝中社23日报道,朝鲜劳动党第九次代表大会22日举行会议,选举金正恩为朝鲜劳动党总书记。大会当天通...
智通港股通占比异动统计|2月2... 根据2026年2月20日披露数据,喜相逢集团(02473)、兆易创新(03986)、招商恆生科技(0...
爱唐山做贡献表态发言稿5篇 爱... 各位领导、同志们:  按照会议安排,我就发改系统如何更好地发挥“总规划部、总参谋部、总协调部”作用,...
市长爱唐山做贡献表态发言稿 住...   同志们:  这次会议是经市政府研究决定召开的一次重要会议,主要内容就是部署在市政府系统深入开展“...