SpringMVC系列(九)自定義檢視、重定向、轉發
阿新 • • 發佈:2019-02-06
一、自定義檢視
1. 自定義一個檢視HelloView.java,使用@Component註解交給Spring IOC容器處理
1 package com.study.springmvc.views; 2 3 import java.util.Date; 4 import java.util.Map; 5 6 import javax.servlet.http.HttpServletRequest; 7 import javax.servlet.http.HttpServletResponse; 8 9 import org.springframework.stereotype.Component; 10 import org.springframework.web.servlet.View; 11 /** 12 * 自定義檢視: 13 * 把定義好的檢視交給Spring IOC容器處理 14 * @author lgs 15 * 16 */ 17 @Component 18 public class HelloView implements View{ 19 20 public String getContentType() { 21 return "text/html"; 22 } 23 24 public void render(Map<String, ?> model, HttpServletRequest request, 25 HttpServletResponse response) throws Exception { 26 response.getWriter().print("hello view, time: " + new Date()); 27 } 28 29 }
2. 在springmvc.xml裡面配置檢視 BeanNameViewResolver 解析器: 使用自定義檢視的名字來解析檢視
1 <!-- 配置檢視 BeanNameViewResolver 解析器: 使用自定義檢視的名字來解析檢視 --> 2 <!-- 通過 order 屬性來定義檢視解析器的優先順序, order 值越小優先順序越高 --> 3 <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"> 4 <property name="order" value="100"></property> 5 </bean>
3.編寫handle類SelfDefineViewTest.java
1 package com.study.springmvc.handlers; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 6 /** 7 * 自定義檢視測試 8 * @author lgs 9 * 10 */ 11 @RequestMapping("/selfDefineViewTest") 12 @Controller 13 public class SelfDefineViewTest { 14 15 @RequestMapping("/testView") 16 public String testView(){ 17 System.out.println("testView"); 18 return "helloView"; 19 } 20 }
4. 在index.jsp編寫測試連結
1 <!--自定義檢視測試 begin -->
2 <a href="selfDefineViewTest/testView">Test View</a>
3 <br><br>
4 <!--自定義檢視測試 end -->
5. 效果圖
二、重定向/轉發
• 一般情況下,控制器方法返回字串型別的值會被當成邏輯檢視名處理
• 如果返回的字串中帶 forward: 或 redirect: 字首時,SpringMVC 會對他們進行特殊處理:將 forward: 和redirect: 當成指示符,其後的字串作為 URL 來處理
– redirect:success.jsp:會完成一個到 success.jsp 的重定向的操作
– forward:success.jsp:會完成一個到 success.jsp 的轉發操作
1. 編寫handle類RedirectForwardTest.java
1 package com.study.springmvc.handlers;
2
3 import org.springframework.stereotype.Controller;
4 import org.springframework.web.bind.annotation.RequestMapping;
5
6 /**
7 * 重定向和轉發
8 *
9 * @author lgs
10 *
11 */
12 @RequestMapping("/redirectForwardTest")
13 @Controller
14 public class RedirectForwardTest {
15
16
17 @RequestMapping("/testRedirect")
18 public String testRedirect() {
19 System.out.println("testRedirect");
20 return "redirect:/index.jsp";
21 }
22 }
2. 在index.jsp編寫測試連結
1 <!-- 重定向和轉發 begin -->
2 <a href="redirectForwardTest/testRedirect">Test Redirect</a>
3 <!-- 重定向和轉發 end -->
3.點選連結以後重定向到index.jsp頂部