转自:https://www.cnblogs.com/jpfss/p/8692815.html

前面已经了解了Controller的几种配置方式
今天主要写一下响应界面跳转的几种方式

1.在注解的方式中
1.1通过HttpServletResponse的API直接输出(不需要配置渲染器)
controller类的主要代码

1 @Controller
2 public class RequestController{
3  @RequestMapping("/resp")
4     public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {
5 
6          resp.getWriter().println("hello HttpServletResponse");
7 
8     }

web.xml配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 5          version="3.1">
 6 
 7     <servlet>
 8         <servlet-name>dispatcher</servlet-name>
 9         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
10         <load-on-startup>1</load-on-startup>
11     </servlet>
12     <servlet-mapping>
13         <servlet-name>dispatcher</servlet-name>
14         <url-pattern>/</url-pattern>
15     </servlet-mapping>
16 </web-app>

 

dispatcher-servlet.xml主要代码

 1 <beans xmlns="http://www.springframework.org/schema/beans"
 2        xmlns:context="http://www.springframework.org/schema/context"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xsi:schemaLocation="
 5         http://www.springframework.org/schema/beans
 6         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 7         http://www.springframework.org/schema/context
 8         http://www.springframework.org/schema/context/spring-context-3.0.xsd">
 9 
10     <!--作用是扫描指定包下所有的包含注解的类-->
11     <context:component-scan base-package="com.jsu.mvc"/>
12 
13 </beans>

 

1.2 使用HttpServletResponse 重定向到另一个视图(其他不变 )

1     @RequestMapping("/resp")
2     public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {
3 
4         resp.sendRedirect("index.jsp");
5 
6     }
7 }

1.3 使用HttpServletRequest 转发(默认访问/下的index.jsp页面 不受渲染器的影响)

1 @RequestMapping("/resp")
2     public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {
3         req.setAttribute("message","it's forword ");
4         req.getRequestDispatcher("index.jsp").forward(req,resp);
5         }

 

1.4直接返回jsp页面的名称(无渲染器)
其他的配置不变

1   @RequestMapping("/nice")
2     public String hello1(){
3         //转发方式1
4         return "home.jsp";
5         //转发方式2
6         return "forward:index.jsp";
7         //重定向方式
8         return "redirect:index.jsp";
9     }

 

1.5当有渲染器指定

1  @RequestMapping("/nice")
2     public String hello1(){
3         //转发方式1
4         return "home";
5         //转发方式2
6         return "forward:index";
7         //重定向方式  hello指的是requsrmapping
8         return "redirect:hello";
9     }

 

2 使用view
2.1 使用modelandview
需要视图解析器 能指定跳转页面

 1 public class HelloController implements Controller {
 2 
 3 
 4     @Override
 5     public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest,
 6                                       javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
 7 
 8         ModelAndView mv = new ModelAndView();
 9         //封装要显示到视图的数据
10         mv.addObject("msg","hello myfirst mvc");
11         //视图名
12         mv.setViewName("hello");
13         return mv;
14 
15     }
16 }

[servlet-name]-servlet.xml

 1 <!--配置渲染器-->
 2     <!--配置hellocontroller中页面的位置-->
 3 
 4     <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
 5     <bean id="viewResolver"
 6                      class="org.springframework.web.servlet.view.UrlBasedViewResolver">
 7     <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
 8     <!--结果视图的前缀-->
 9     <property name="prefix" value="/WEB-INF/jsp/"/>
10     <!--结果视图的后缀-->
11     <property name="suffix" value=".jsp"/>
12 </bean>
13     <bean name="/hello.do" class="com.jsu.mvc.HelloController"></bean>

 

2.2 使用modelview
不需要视图解析器 不能指定跳转页面

1 //通过modelmap方式
2     @RequestMapping("/modelmap")
3     public String modelHello(String name,ModelMap map){
4         map.addAttribute("name",name);
5         System.out.println(name);
6 
7         return "index.jsp";
8     }

 

posted on 2016-08-03 00:31  Sharpest  阅读(422)  评论(0编辑  收藏  举报