首页 > 开发 > Java > 正文

springMVC几种页面跳转方式小结

2024-07-13 10:04:20
字体:
来源:转载
供稿:网友

前面已经了解了Controller的几种配置方式

今天主要写一下响应界面跳转的几种方式

1.在注解的方式中

1.1通过HttpServletResponse的API直接输出(不需要配置渲染器)

controller类的主要代码

@Controllerpublic class RequestController{ @RequestMapping("/resp")  public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {     resp.getWriter().println("hello HttpServletResponse");  }

web.xml配置

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"     version="3.1">  <servlet>    <servlet-name>dispatcher</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>    <servlet-name>dispatcher</servlet-name>    <url-pattern>/</url-pattern>  </servlet-mapping></web-app>

dispatcher-servlet.xml主要代码

<beans xmlns="http://www.springframework.org/schema/beans"    xmlns:context="http://www.springframework.org/schema/context"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="    http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd    http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context-3.0.xsd">  <!--作用是扫描指定包下所有的包含注解的类-->  <context:component-scan base-package="com.jsu.mvc"/></beans>

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

  @RequestMapping("/resp")  public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {    resp.sendRedirect("index.jsp");  }}

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

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

1.4直接返回jsp页面的名称(无渲染器)

其他的配置不变

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

1.5当有渲染器指定

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

2 使用view

2.1 使用modelandview

需要视图解析器 能指定跳转页面

public class HelloController implements Controller {  @Override  public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest,                   javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {    ModelAndView mv = new ModelAndView();    //封装要显示到视图的数据    mv.addObject("msg","hello myfirst mvc");    //视图名    mv.setViewName("hello");    return mv;  }}

[servlet-name]-servlet.xml

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

2.2 使用modelview

不需要视图解析器 不能指定跳转页面

 //通过modelmap方式  @RequestMapping("/modelmap")  public String modelHello(String name,ModelMap map){    map.addAttribute("name",name);    System.out.println(name);    return "index.jsp";  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表