补充:SpringMVC的结果跳转方式
结果跳转方式
1. ModelAndView
设置ModelAndView对象, 根据view的名称, 和视图解析器, 跳转到指定的页面
页面的路径: {视图解析器前缀} + viewName + {视图解析器后缀}
视图解析器
<!--视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
controller类
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //只要实现了Controller接口的类, 说明这就是一个控制器了 public class ControllerTest1 implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView mv = new ModelAndView(); //设置视图的属性 mv.addObject("msg", "ControllerTest1"); //设置跳转的页面 mv.setViewName("test"); return mv; } }
页面的路径: /WEB-INF/jsp/test.jsp
2. ServletAPI
在controller中可以使用response和request 因为SpringMVC本质也是一个servlet!
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Controller public class ModelTest1 { @RequestMapping("/m1/t1") public String test(HttpServletRequest req, HttpServletResponse resp) { System.out.println(req.getSession().getId()); return "hello"; } }
3. SpringMVC实现【掌握】
视图解析器:
<!--视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
controller:
@Controller @RequestMapping("/user") public class ControllerDemo { @RequestMapping("/u1") public String test1() { //转发一(注意:如果在xml中配置了视图解析器会找不到路径) return "/index.jsp"; } @RequestMapping("/u2") public String test2() { //转发二 return "forward:/index.jsp"; } @RequestMapping("/u3") public String test3() { //重定向 return "redirect:/index.jsp"; } @RequestMapping("u4") public String test01() { // 重定向到另外一个请求 return "redirect:/user/u5"; } @RequestMapping("/u5") public String test02() { // 通过转发跟重定向可以到具体的页面 return "forward:/index.jsp"; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话