詳解SpringMVC中的四種跳轉(zhuǎn)方式、視圖解析器問(wèn)題
一、視圖解析器:
1.springmvc核心配置文件,添加視圖解析器:
<?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"
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">
<!--添加視圖解析器
視圖解析器作用:
比如我們要訪問(wèn)/admin/main.jsp時(shí),傳統(tǒng)頁(yè)面跳轉(zhuǎn)需要輸入完整URI訪問(wèn)路徑,
而使用了視圖解析器后,會(huì)自動(dòng)在訪問(wèn)路徑前后添加配置前綴和配置后綴,
比如配置了如下前綴和后綴后,我們要訪問(wèn)/admin/main.jsp,訪問(wèn)路徑只需要寫(xiě)main就可以了
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--配置前綴-->
<property name="prefix" value="/admin/"></property>
<!--配置后綴-->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
2.視圖解析器的使用:
@Controller
public class JumpAction {
@RequestMapping("/one")
public String one(){
System.out.println("請(qǐng)求轉(zhuǎn)發(fā)頁(yè)面(默認(rèn))");
return "main";
//方法返回"main","main"會(huì)被視圖解析器添加前后綴,變成/admin/main.jsp,接著訪問(wèn)該URI對(duì)應(yīng)的頁(yè)面。
}
3、視圖解析器類InternalResourceViewResolver源碼解析:
public class UrlBasedViewResolver extends AbstractCachingViewResolver implements Ordered {
public static final String REDIRECT_URL_PREFIX = "redirect:";//重定向
public static final String FORWARD_URL_PREFIX = "forward:";//轉(zhuǎn)發(fā)
private String prefix = "";//前綴
private String suffix = "";//后綴
- 在springmvc核心配置文件中配置視圖解析器,為視圖解析器添加前后綴,實(shí)際上是給視圖解析器類InternalResourceViewResolver的成員方法賦值,視圖解析器類會(huì)自動(dòng)為Action類的方法中return的字符串進(jìn)行拼接,拼接兩個(gè)成員方法作為前后綴生成新的URI。
- 我們注意到視圖解析器類InternalResourceViewResolver還有兩個(gè)靜態(tài)成員變量,如果Action類的方法中return的字符串包含這兩個(gè)值時(shí),視圖解析器類就不再進(jìn)行前綴后綴的拼接。
二、SpringMVC四種跳轉(zhuǎn)方式:
- 請(qǐng)求轉(zhuǎn)發(fā)頁(yè)面。
- 請(qǐng)求轉(zhuǎn)發(fā)action。
- 重定向頁(yè)面。
- 重定向action。
1.跳轉(zhuǎn)方式案例:
前端:
<a href="${pageContext.request.contextPath}/one.action" rel="external nofollow" >請(qǐng)求轉(zhuǎn)發(fā)頁(yè)面(默認(rèn))</a><br>
<a href="${pageContext.request.contextPath}/two.action" rel="external nofollow" >請(qǐng)求轉(zhuǎn)發(fā)action</a><br>
<a href="${pageContext.request.contextPath}/three.action" rel="external nofollow" >重定向頁(yè)面</a><br>
<a href="${pageContext.request.contextPath}/four.action" rel="external nofollow" >重定向action</a><br>
后端:
@Controller
public class JumpAction {
@RequestMapping("/one")
public String one(){
System.out.println("請(qǐng)求轉(zhuǎn)發(fā)頁(yè)面(默認(rèn))");
//return "main"; //這種訪問(wèn)方式,默認(rèn)會(huì)調(diào)用視圖解析器自動(dòng)拼接前綴和后綴進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)頁(yè)面跳轉(zhuǎn)
return "forward:/fore/user.jsp";//只要使用了forward:就可以屏蔽前綴和后綴的拼接,自己手工構(gòu)建返回的路徑
}
@RequestMapping("/two")
public String two(){
System.out.println("請(qǐng)求轉(zhuǎn)發(fā)action");
return "forward:/other.action";
}
@RequestMapping("/three")
public String three(){
System.out.println("重定向頁(yè)面");
return "redirect:/admin/main.jsp";//只要使用了redirect:就可以屏蔽前綴和后綴的拼接,自己手工構(gòu)建返回的路徑
}
@RequestMapping("/four")
public String four(){
System.out.println("重定向action");
//觀察地址欄的變化 http://localhost:8080/other.action
return "redirect:/other.action";
}
}到此這篇關(guān)于SpringMVC的四種跳轉(zhuǎn)方式、視圖解析器的文章就介紹到這了,更多相關(guān)SpringMVC跳轉(zhuǎn)方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中@Autowired和@Resource區(qū)別
本文主要介紹了Java中@Autowired和@Resource區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
Spring boot開(kāi)發(fā)web應(yīng)用JPA過(guò)程解析
這篇文章主要介紹了Spring boot開(kāi)發(fā)web應(yīng)用JPA過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Maven項(xiàng)目報(bào)錯(cuò):“?SLF4J:?Failed?to?load?class?“org.slf4j.imp
這篇文章主要給大家介紹了關(guān)于Maven項(xiàng)目報(bào)錯(cuò):“?SLF4J:?Failed?to?load?class?“org.slf4j.impl.StaticLoggerBinder?”的解決方案,文中給出詳細(xì)的解決思路與方法,需要的朋友可以參考下2022-03-03
Tomcat服務(wù)無(wú)法啟動(dòng)的問(wèn)題的解決方法
這篇文章主要介紹了Tomcat服務(wù)無(wú)法啟動(dòng)的問(wèn)題的解決方法,需要的朋友可以參考下2014-02-02
GSON實(shí)現(xiàn)Java對(duì)象的JSON序列化與反序列化的實(shí)例教程
GSON是Google開(kāi)發(fā)并開(kāi)源的一個(gè)Java的JSON轉(zhuǎn)換庫(kù),這里我們將來(lái)講解GSON實(shí)現(xiàn)Java對(duì)象的JSON序列化與反序列化的實(shí)例教程,需要的朋友可以參考下2016-06-06
Java中兩個(gè)大數(shù)之間的相關(guān)運(yùn)算及BigInteger代碼示例
這篇文章主要介紹了Java中兩個(gè)大數(shù)之間的相關(guān)運(yùn)算及BigInteger代碼示例,通過(guò)biginteger類實(shí)現(xiàn)大數(shù)的運(yùn)算代碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
MybatisPlus分頁(yè)查詢與多條件查詢介紹及查詢過(guò)程中空值問(wèn)題的解決
mybatisplus是個(gè)很好用的插件,相信小伙伴們都知道,下面這篇文章主要給大家介紹了關(guān)于mybatis-plus實(shí)現(xiàn)分頁(yè)查詢與多條件查詢介紹及查詢過(guò)程中空值問(wèn)題的相關(guān)資料,需要的朋友可以參考下2022-10-10
Java并發(fā)編程之線程池實(shí)現(xiàn)原理詳解
池化思想是一種空間換時(shí)間的思想,期望使用預(yù)先創(chuàng)建好的對(duì)象來(lái)減少頻繁創(chuàng)建對(duì)象的性能開(kāi)銷,java中有多種池化思想的應(yīng)用,例如:數(shù)據(jù)庫(kù)連接池、線程池等,下面就來(lái)具體講講2023-05-05

