转载和引用,请注明原文出处! Fork me on GitHub
结局很美妙的事,开头并非如此!

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

posted @ 2017-11-12 17:12  小不点啊  阅读(1612)  评论(0编辑  收藏  举报