1. 程式人生 > >SpringMVC系列(九)自定義檢視、重定向、轉發

SpringMVC系列(九)自定義檢視、重定向、轉發

一、自定義檢視

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頂部