【Java从零到架构师第③季】【30】SpringMVC-转发_重定向_路径问题总结
持续学习&持续更新中…
守破离
【Java从零到架构师第③季】【30】SpringMVC-转发_重定向_路径问题总结
- 转发
- 方法一
- 方法二
- 方法三
- 重定向
- 方法一
- 方法二
- 方法三
- 方法四
- 重定向—传递数据
- mvc:view-controller
- 路径问题总结
- 在Java代码中,路径问题总结
- 在jsp、html代码中,路径问题总结
- 参考
转发
方法一
web.xml:
<?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>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><!-- 使用SpringMVC时,路径必须加上classpath: --><param-value>classpath:applicationContext.xml</param-value></init-param><load-on-startup>0</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>
applicationContext.xml:
<?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:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 使用SpringMVC时,location必须加上classpath: --><context:property-placeholder location="classpath:forward-jsp.properties"/><context:component-scan base-package="programmer.lp"/><mvc:annotation-driven><mvc:path-matching suffix-pattern="false"/></mvc:annotation-driven><mvc:default-servlet-handler/>
</beans>
forward-jsp.properties:
jsp-welcome-url=/welcome
jsp-welcome-localpath=/WEB-INF/jsp/welcome.jsp
JSP1Controller:
@Controller
public class JSP1Controller {@Value("${jsp-welcome-localpath}")private String welcome;@GetMapping("${jsp-welcome-url}")public void jsp1(HttpServletRequest request, HttpServletResponse response) throws Exception {// 从数据库中查询到的用户信息request.setAttribute("username", "lpruoyu");// 转发到欢迎用户的JSPrequest.getRequestDispatcher(welcome).forward(request, response);}
}
welcome.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>WELCOME</title><style>* {margin: 0;padding: 0;}html, body {height: 100%;width: 100%;position: fixed;}h2 {width: 50%;height: 50%;position: absolute;top: 50%;left: 50%;transform: translateX(-50%) translateY(-50%);display: flex;align-items: center;justify-content: center;}</style>
</head>
<body>
<h2 style="color: blueviolet;">WELCOME! 欢迎用户:<font color="green"> ${username} </font>回来!</h2>
</body>
</html>
方法二
ModelAndView的创建:
写法一:
ModelAndView mv = new ModelAndView();
mv.setViewName(dogLocalpath);
写法二:
ModelAndView mv = new ModelAndView(dogLocalpath);
方法二代码:
forward-jsp.properties:
jsp-dog-url=/dog
jsp-dog-localpath=/WEB-INF/jsp/dog.jsp
JSP2Controller:
@Controller
public class JSP2Controller {@Value("${jsp-dog-localpath}")private String dogLocalpath;@GetMapping("${jsp-dog-url}")public ModelAndView jsp2() {ModelAndView mv = new ModelAndView();// 使用MyBatis从数据库中获取数据Dog dog = new Dog();dog.setName("Larry");dog.setAge(8);// 本质就是request.setAttributemv.addObject("dog", dog);// 设置需要转发的页面mv.setViewName(dogLocalpath);return mv;}
}
当然,JSP2Controller也可以这样写:
@Controller
public class JSP2Controller {@GetMapping("/dog")public ModelAndView jsp2() {ModelAndView mv = new ModelAndView("/WEB-INF/jsp/dog.jsp");Dog dog = new Dog();dog.setName("Larry");dog.setAge(8);mv.addObject("dog", dog);return mv;}
}
dog.jsp:
<!-- ... -->
<h2>This is a dog, his name:${dog.name}, his age:${dog.age}.</h2>
<!-- ... -->
方法三
@Controller
public class JSP4Controller {@GetMapping("/jsp4")public String jsp4() {return "/WEB-INF/jsp/jsp4.jsp";}
}
虽然不写@ResponseBody,默认就是转发,但是为了看的清楚,一目了然,也可以这样写:
@Controller
public class JSP4Controller {@GetMapping("/jsp4")public String jsp4() {// 特地的表明是转发return "forward:/WEB-INF/jsp/jsp4.jsp"; }
}
转发时,若需要给JSP传值:
@Controller
public class JSP5Controller {@GetMapping("/jsp5")public String jsp5(HttpServletRequest request) {request.setAttribute("value", "好好学习!振兴中华!");return "/WEB-INF/jsp/jsp5.jsp";}
}
重定向
方法一
@Controller
public class Redirect1Controller {@GetMapping("/redirect1")public void redirect1(HttpServletRequest request, HttpServletResponse response) throws Exception {response.sendRedirect(request.getContextPath() + "/login.jsp");}
}
方法二
@Controller
public class Redirect2Controller {@GetMapping("/redirect2")public String redirect2() {return "redirect:/login.jsp";}
}
方法三
方法四
@Controller
public class Redirect6Controller {@GetMapping("/redirect6")public String redirect6() {// 重定向到某一个请求去return "redirect:/jsp5";}
}
重定向—传递数据
重定向只能通过请求参数传递一些简单的数据
方式一:
@Controller
public class Redirect4Controller {@GetMapping("/redirect4")public String redirect4() {return "redirect:/showInfo.jsp?name=lpruoyu&age=21";}
}
方式二:
@Controller
public class Redirect5Controller {@GetMapping("/redirect5")public ModelAndView redirect5() {ModelAndView mv = new ModelAndView("redirect:/showInfo.jsp");mv.addObject("name", "ruoyu");mv.addObject("age", "18");return mv;}
}
客户端的使用:
<h2 style="color: blueviolet;">name:${param.name}, age:<%=request.getParameter("age")%>
</h2>
mvc:view-controller
转发:
<mvc:view-controller path="/jsp6" view-name="/WEB-INF/page/jsp/jsp6.jsp"/>
重定向:
<mvc:view-controller path="/jsp6-redirect" view-name="redirect:/public/jsp6.jsp"/>
路径问题总结
http://IP地址:端口/context_path/
对应webapp/
目录
在Java代码中,路径问题总结
- 假设请求路径是:"
http://IP地址:端口/context_path/path1/path2/path3
" - 假设转发路径是:"
/page/test.jsp
"- 以斜线(/)开头,参考路径是context_path
- 所以最终转发路径是:"
http://IP地址:端口/context_path
" + “/page/test.jsp
”
- 假设转发路径是:"
page/test.jsp
"- 不以斜线(/)开头,参考路径是当前请求路径的上一层路径(处于哪个目录下)
- 所以最终转发路径是:"
http://IP地址:端口/context_path/path1/path2/
" + “page/test.jsp
”
在jsp、html代码中,路径问题总结
重定向相当于在jsp、html代码中,要以
/context_path
开头
- 假设请求路径是:"
http://IP地址:端口/context_path/path1/path2/path3
" - 假设跳转路径是:"
/page/test.jsp
"- 以斜线(/)开头,参考路径是"
http://IP地址:端口
" - 所以最终跳转路径是:"
http://IP地址:端口
" + “/page/test.jsp
” - 因此,在jsp、html中,一般都要以
/context_path
开头
- 以斜线(/)开头,参考路径是"
- 假设跳转路径是:"
page/test.jsp
"- 不以斜线(/)开头,参考路径是当前请求路径的上一层路径(处于哪个目录下)
- 所以最终跳转路径是:"
http://IP地址:端口/context_path/path1/path2/
" + “page/test.jsp
”
参考
小码哥-李明杰: Java从0到架构师③进阶互联网架构师.
本文完,感谢您的关注支持!
【Java从零到架构师第③季】【30】SpringMVC-转发_重定向_路径问题总结相关推荐
- 【Java从零到架构师第③季】【49】会话管理—Token_ehcache
持续学习&持续更新中- 守破离 [Java从零到架构师第③季][49]会话管理-Token_ehcache 基于Cookie.Session 基于Token ehcache 简单使用 项目使用 ...
- 【Java从零到架构师第③季】【48】SpringBoot-Swagger
持续学习&持续更新中- 守破离 [Java从零到架构师第③季][48]SpringBoot-Swagger 接口文档-Swagger 基本使用 不使用starter 使用starter(Swa ...
- 【Java从零到架构师第③季】【26】SpringMVC-反射获取方法参数名_SpringMVC是如何获取方法的参数名的
持续学习&持续更新中- 守破离 [Java从零到架构师第③季][26]SpringMVC-反射获取方法参数名_SpringMVC是如何获取方法的参数名的 利用反射获取方法的参数名 直接编译 修 ...
- 【Java从零到架构师第③季】【24】SpringMVC-概述_入门
持续学习&持续更新中- 守破离 [Java从零到架构师第③季][24]SpringMVC-概述_入门 Spring.SpringMVC.MyBatis之间的关系 SpringMVC简介 Spr ...
- 【Java从零到架构师第③季】【28】SpringMVC-Servlet的URL匹配_path-matching suffix-pattern
持续学习&持续更新中- 守破离 [Java从零到架构师第③季][28]SpringMVC-Servlet的URL匹配_path-matching suffix-pattern Servlet的 ...
- 【Java从零到架构师第二季】【07】JDBC FOR MySQL
持续学习&持续更新中- 学习态度:守破离 JDBC FOR MySQL 什么是JDBC 如何通过Java操作数据库 JDBC是属于JavaSE的一部分 下载MySQL的JDBC实现 JDBC细 ...
- 【Java从零到架构师第二季】【14】AJAX
持续学习&持续更新中- 学习态度:守破离 AJAX 同步请求和异步请求 未学AJAX之前向服务器提交请求的方式 同步和异步 AJAX 什么是AJAX AJAX的常见使用方式 原生 jQuery ...
- 【Java从零到架构师第1季】【并发 Concurrent 03】线程间通信_ReentrantLock_线程池
持续学习&持续更新中- 守破离 [Java从零到架构师第1季][并发 Concurrent 03]线程间通信_ReentrantLock_线程池 线程间通信 线程间通信-示例 可重入锁Reen ...
- 个人总结的一个中高级Java开发工程师或架构师需要掌握的一些技能...
近三年,其实都是在做一个项目,项目是一个大型的多节点部署的项目,做了好几个版本,中间用到了很多技术和框架, 也用了一些管理工具和敏捷实践.我这里不是来说项目的,因为最近看了一些招聘信息,结合项目中用到 ...
- 【Java从0到架构师(2),Java面试问题
新建一个核心配置文件:applicationContext.xml <?xml version="1.0" encoding="UTF-8"?>&l ...
最新文章
- 通过Python实现某个目录下所有文件(包含子目录中的文件)的列出
- 史上最完整的文件和目录操作类
- 全网首个OpenPrompt尝鲜报告:Prompt研究者必备实验利器
- VTK:网格之FitToHeightMap
- Orchard详解--第一篇 介绍
- Java异常处理-----java异常体系
- Merge Two Sorted Lists leetcode java
- pcm转换在线工具_律师必备的PDF在线转换工具,推荐5款,全免费!
- eclipse的maven项目,如何使用java run main函数
- 揭秘盒马鲜生,如何打破收益增长天花板!
- 训练集,验证集,测试集
- CENTOS7开机自启动脚本
- 决定系数R2相关知识,以及与相关系数之间的关系
- 计算机专业朋友圈文案,朋友圈文案合集_用来发微信朋友圈的句子
- Github删除历史提交记录的方法
- 13.2 RS编码和纠错算法
- 输出三角形,平行四边形,菱形
- Win7快速调整屏幕亮度最快的方法
- 网络维护类岗位做什么?
- 桥接模式和装饰器模式