SpringMVC08转发和重定向

public class User {

    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public User(String name, Integer age) {
        super();
        this.name = name;
        this.age = age;
    }

    public User() {
        super();
    }

    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }

}

User实体类

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP ‘index.jsp‘ starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>
  <body>
  <form action="user/add" method="post">
  <!-- 必须是User类中对应的属性名 -->
    用户名:<input type="text"  name="name">
     年龄:<input type="text"  name="age">
  <button type="submit">提交</button>
  </form>

  </body>
</html>

index.jsp页面

@Controller
@RequestMapping("/user")
public class MyController {
    /**
     * 转发  默认格式

    @RequestMapping(value = "/add")
    public ModelAndView add(User user) {
        System.out.println("进入了add......");
        ModelAndView mv = new ModelAndView();
        mv.addObject("name", user.getName()).addObject("age", user.getAge())
                .setViewName("forward:/WEB-INF/jsp/success.jsp");// 设置返回的视图
        // .setViewName("/WEB-INF/jsp/success.jsp");// 默认就是转发
        return mv;
    }*/

    /**
     * 重定向  :
     * 01.客户端的行为! 不能访问/WEB-INF/下面的资源
     * 02. 以访问的路径为准,所以之前09项目中会有一个user/
     * 03.还能携带上一次的数据
     * 04.redirect:/success.jsp  加上/  就是以项目的根目录为准
     */
    @RequestMapping(value = "/add")
    public ModelAndView add(User user) {
        System.out.println("进入了add......");
        ModelAndView mv = new ModelAndView();
        mv.addObject("name", user.getName()).addObject("age", user.getAge())// 携带数据
                .setViewName("redirect:/success.jsp");// 设置返回的视图 重定向
        return mv;
    }

}

Controller代码

  <body>
  <!--
  param.name  底层执行的代码  就是request.getParameter("name")
  requestScope.nage   底层执行的代码  就是request.getAttribute("name")   作用域查询

   -->
  <h1>webroot   success页面</h1>
  ${param.name}<br/>
  ${param.age}
  </body>

webroot下面创建success.jsp页面

==================重定向到方法====================

@Controller
@RequestMapping("/user")
public class MyController {
    /**
     * 跳转到/list
     * Model:跳转list方法时 携带的数据
     */
    @RequestMapping(value = "/add")
    public String add(User user, Model mv) {
        System.out.println("进入了add......");
        // model中 增加数据
        mv.addAttribute("name", user.getName()).addAttribute("age",
                user.getAge());
        // 跳转到list 不能加 / 这就是后台路径
        return "redirect:list";
    }

    @RequestMapping(value = "/list")
    public String list(User user) {
        System.out.println("进入了list......");
        System.out.println(user.getName());
        System.out.println(user.getAge());
        return "/success.jsp";// 转发到 webroot下的success.jsp
    }

}

在上面的例子中更改Controller代码

时间: 2024-10-18 14:37:24

SpringMVC08转发和重定向的相关文章

Struts2配置使用参数接收,转发与重定向,多方法,ognl使用与值传递,struts标签使用

本文档包括了 (1)首先加入jar包(最小jar组合) (1)   在web.xml中注册Struts2 这是一个前控制器作用是提供一个统一的入口,所有的请求都先经过前控制器就是这里,然后由他在做进一步处理 <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

Java中转发VS重定向

转发和重定向是何方圣神?在之前只知道它就是解决页面跳转问题的,通过对drp的一步步学习,对它们的应用也越来越多.这时又给自己带来了更多的疑问?它到的是什么?怎么用?它又和asp.net中的页面跳转有什么区别?接下来先对它们两进行下系统的学习吧! 一.是什么? 转发:服务器接收到客户端的请求之后,服务器把控制权交到另一个JSP页面手里,新的JSP页面接收到请求之后根据情况是继续转交控制权或者显示页面由自己决定,到最后显示页面的整个过程就是一个页面跳转过程,在这个过程中,服务器可以把请求的数据在经过

jsp初识、servlet转发、转发与重定向的比较

jsp sun公司制定的一种服务器端动态页面技术规范 生成动态页面 jsp其实是一个以.jsp为后缀的文件,该文件的内容主要是html和少量的java代码 容器会将jsp文件自动转换成一个servlet然后执行. 如何写一个jsp文件 1.创建一个以.jsp为后缀的文件 2.在文件里面添加如下的内容: (1)html(css,js):直接写.不用写out.print (2)java代码: a.java代码片段 <% java语句: %> b.jsp表达式 <%= java表达式%>

java 转发和重定向

重定向什么是重定向?服务器发送一个302状态码及一个Location消息头(值是一个地址,称为重定向地址),通知浏览器立即向重定向地址发送请求.如何重定向? 使用response.sendRedirect(String url); 注意:在使用重定向前不要调用out.close(); 请求转发 什么是转发?  一个web组件(servlet/jsp)将未完成处理通过容器转交另一个web组件继续完成. 常见的情况是:一个servlet将数据处理完毕后,转交给一个jsp去展现. 如何转发? 绑定数据

#HTTP协议学习# (十二)理解转发与重定向

本文转自:http://blog.csdn.net/meiyalei/article/details/2129120  生动清晰 解释一 转发是服务器行为,重定向是客户端行为.为什么这样说呢,这就要看两个动作的工作流程: 转发过程:客户浏览器发送http请求---->web服务器接受此请求-->调用内部的一个方法在容器内部完成请求处理和转发动作---->将目标资源发送给客户:在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的r

转发与重定向的区别总结

重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程. 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求.因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变.重定向的速度比转发慢,因为浏览器还得发出一个新的请求.同时,由于重定向方式产生了一个新的请求,所以经过一次重 定向后,request内的对象将无法使用. 怎么选择是重定向还是转

jsp中转发和重定向的区别!

请求是单向的,如果A请求B,之后A请求C的时候 A到B的请求断开! 转发和重定向的区别! 01.转发 request 001.转发是服务器端的行为 002.数据不会丢失 003.url不会发生变化,永远是第一次请求的url 004.每转发一次,作用域延迟一次请求! 02.重定向 response 001.转发是客户端的行为 002.数据会丢失 003.url会发生变化,永远是最后一次请求的url 004.至少两次访问服务器

转发与重定向

重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程. 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求.因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变.重定向的速度比转发慢,因为浏览器还得发出一个新的请求.同时,由于重定向方式产生了一个新的请求,所以经过一次重 定向后,request内的对象将无法使用. 怎么选择是重定向还是转

转发和重定向

重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程. 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求.因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变.重定向的速度比转发慢,因为浏览器还得发出一个新的请求.同时,由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用.           怎么