springmvc request foward 和 redirect

---恢复内容开始---

最近在实现那个学生信息录入的时候,先是在添加学生的页面添加完,然后想直接调用Conroller层遍历学生的方法,我的意思就是在contoller一个方法怎么直接调用另外一个方法,

这个就需要用到  forward 和redirect 这个两个方法,先看我的StudentController 里面的代码

package zizai.controller;

import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import zizai.model.Student;

import zizai.service.StudentService;

@Controller
@RequestMapping("/student")
public class StudentController {
    @Resource
    private StudentService studentService;
     @RequestMapping("/showAllStudent")
     public String showUser(HttpServletRequest request,Model model){
            List<Student> students = this.studentService.getAllStudent();
            model.addAttribute("students", students);
            return "tables";
     }
     @RequestMapping("/index")
        public ModelAndView toIndex(HttpServletRequest request){
         ModelAndView view = new ModelAndView("addStu");
        return view;
}
     @RequestMapping("/addStu")
     public ModelAndView addStu(HttpServletRequest request,Model model){
         String  name = request.getParameter("name");
         String id =request.getParameter("id");
         String age=request.getParameter("age");
         int id1=Integer.valueOf(id);
         int age1=Integer.valueOf(age);
         String classname=request.getParameter("classname");
         String sex=request.getParameter("sex");
         Student stu=new Student();
         stu.setAge(age1);
         stu.setClassname(classname);
         stu.setId(id1);
         stu.setName(name);
         stu.setSex(sex);
         int i=this.studentService.insertStu(stu);
         String url="addStu";
         if(i>0){
             url="redirect:/student/showAllStudent";
         }
         else{
             url="fail";

         }
         ModelAndView view = new ModelAndView(url);
         return view;
     } 

}

forward 转发,如return "forward:/student/showAllStudent"; 浏览器的地址栏不会变,但是有视图返回来

redirect 重定向,如return "redirect:/student/showAllStudent"; 浏览器的地址栏会变。

1 先看看forward:/student/showAllStudent  可以看见用 forward 来进行跳转的话,url 的地址不会改变

2 redirect 重定向,如return "redirect:/student/showAllStudent",这个时候url 里面的地址是会发生变化的

可以看到url 上的地址从ssm03/student/addStu   跳转到 ssm03/student/showAllStudent

如果不用forward 转发和redirect 重定向 的,直接通过url 赋值tables 来访问  tables.jsp,通过tables.jsp里面的form 表单来访问Controller层的showAllStudent的方法,这个时候就调不动里面的方法

如下是我的tables.jsp 的代码

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html lang="en">
<head>
<title>天元学生列表</title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="/ssm03/resources/matrix-admin00/css/bootstrap.min.css" />
<link rel="stylesheet" href="/ssm03/resources/matrix-admin00/css/bootstrap-responsive.min.css" />
<link rel="stylesheet" href="/ssm03/resources/matrix-admin00/css/uniform.css" />
<link rel="stylesheet" href="/ssm03/resources/matrix-admin00/css/select2.css" />
<link rel="stylesheet" href="/ssm03/resources/matrix-admin00/css/matrix-style.css" />
<link rel="stylesheet" href="/ssm03/resources/matrix-admin00/css/matrix-media.css" />
<link href="font-awesome/css/font-awesome.css" rel="stylesheet" />
<link href=‘http://fonts.googleapis.com/css?family=Open+Sans:400,700,800‘ rel=‘stylesheet‘ type=‘text/css‘>
</head>
<body>

<!--sidebar-menu-->

<div id="content">
  <div id="content-header">
    <div id="breadcrumb"> <a href="#" title="Go to Home" class="tip-bottom"><i class="icon-home"></i> Home</a> <a href="#" class="current">Tables</a> </div>
    <h1>天工信息</h1>
  </div>
  <div class="container-fluid">
    <hr>
    <div class="row-fluid">
      <div class="span12">
        <div class="widget-box">
          <div class="widget-title"> <span class="icon"> <i class="icon-th"></i> </span>
            <h5>信息列表</h5>
             <form action="/ssm03/student/index"  class="btn btn-success" >
          </div>

        <input type="submit" value="添加">
          <div class="widget-content nopadding">
            <table class="table table-bordered table-striped">
              <thead>
                <tr>
                  <th>学号</th>
                  <th>学生姓名</th>
                  <th>年龄</th>
                  <th>性别</th>
                  <th>班级</th>
                </tr>
              </thead>
              <tbody>
              <c:forEach var="student" items="${students}" >
                    <tr class="even gradeC">
                      <td align="center" >${student.id}</td>
                      <td align="center" >${student.name}</td>
                      <td align="center" >${student.age}</td>
                      <td align="center" >${student.sex}</td>
                      <td align="center" >${student.classname}</td>
                    </tr>
                </c:forEach>
              </tbody>
            </table>
          </div>
        </div>
        </div>
      </div>
    </div>
  </div>

<!--Footer-part-->

</body>
</html>

这是将 addStu 方法里面的url="tables" 时候,看看效果图,

这个时候可以看见Controller层里面的showAllStudent 的方法,tables.jsp是可以调用到showAllStudent的方法的,因为已经跳转到遍历学生信息的表格去了,只是遍历学生的方法不起作用而已,

这个问题也是可以解决,有两种方法,一个实在Controller 里面改东西,在addStu这个方法直接使用showAllStudent方法,意思是添加完学生信息后,直接调用showAllStudent的方法,

另外一个方法就是在 jsp 里面做文章,多条一步的哈,显示添加完学生后,给他一个中间显示页面,那个中间的显示的jsp页面再调用showAllStudent的方法,那么showAllStudent的方法就可以成功将学生的信息遍历出来了

这里给写出后面一种方法的截图

添加学生成功后,url="List" 的jsp 中去,让后在:List.jsp 里面来调用showAllStudent 的方法,这个时候便可以将学生列表的信息成功的遍历出来

List.jsp的代码如下

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<title>建筑产品信息</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet"
    href="/ssm03/resources/matrix-admin00/css/bootstrap.min.css" />
<link rel="stylesheet"
    href="/ssm03/resources/matrix-admin00/css/bootstrap-responsive.min.css" />
<link rel="stylesheet"
    href="/ssm03/resources/matrix-admin00/css/matrix-style.css" />
<link rel="stylesheet"
    href="/ssm03/resources/matrix-admin00/css/matrix-media.css" />
<link
    href="font-awesome//ssm03/resources/matrix-admin00/css/font-awesome.css"
    rel="stylesheet" />
<link
    href=‘http://fonts.googleapis.com/css?family=Open+Sans:400,700,800‘
    rel=‘stylesheet‘ type=‘text/css‘>
</head>
<body>

    <div id="content">
        <div id="content-header">
            <div id="breadcrumb">

                <a href="#" title="Go to Home" class="tip-bottom"><i
                    class="icon-home"></i> Home</a>
                    <a href="#" class="current">天原系统</a>
            </div>

        <h2 ailgn="center">欢迎来到强大的天原系统</h2>
        <div class="row-fluid">
            <div class="span4">
                <div class="widget-box">
                    <div class="widget-title">
                        <span class="icon"> <i class="icon-list"></i>
                        </span>
                        <%--     <h5>${product.name }</h5> --%>
                    </div>
                    <div class="widget-content">
                        <table>
                            <tr>
                                <td>学生信息列表</td>

                                <td>
                                    <form class="form-horizontal" method="post"
                                        action="/ssm03/student/showAllStudent">
                                        <div class="form-actions">
                                            <input type="submit" value="查看" class="btn btn-success">
                                        </div>
                                    </form>
                                </td>
                            </tr>
                            <tr>
                                <td>建筑信息列表</td>
                                <td>
                                    <form class="form-horizontal" method="post"
                                        action="/ssm03/product/getAllProduct">
                                        <div class="form-actions">
                                            <input type="submit" value="查看" class="btn btn-success">
                                        </div>
                                    </form>
                                </td>
                            </tr>
                            <tr>
                                <td>天工信息列表</td>
                                <td>
                                    <form class="form-horizontal" method="post"
                                        action="/ssm03/tiangong/showAllTianGong">
                                        <div class="form-actions">
                                            <input type="submit" value="查看" class="btn btn-success">
                                        </div>
                                    </form>
                                </td>
                            </tr>
                            <tr>
                                <td>招聘信息列表</td>
                                <td>
                                    <form class="form-horizontal" method="post"
                                        action="/ssm03/work/showAllWok">
                                        <div class="form-actions">
                                            <input type="submit" value="查看" class="btn btn-success">
                                        </div>
                                    </form>
                                </td>
                            </tr>

                        </table>
                    </div>
                </div>
            </div>
        </div>

</div>
</div>

        <!--Footer-part-->
        <div class="row-fluid">
            <div id="footer" class="span12">
                2013 &copy; Matrix Admin. Brought to you by <a
                    href="http://themedesigner.in/">Themedesigner.in</a>
            </div>
        </div>
        <!--end-Footer-part-->
        <script src="/ssm03/resources/matrix-admin00/js/jquery.min.js"></script>
        <script src="/ssm03/resources/matrix-admin00/js/jquery.ui.custom.js"></script>
        <script src="/ssm03/resources/matrix-admin00/js/bootstrap.min.js"></script>
        <script src="/ssm03/resources/matrix-admin00/js/matrix.js"></script>
</body>
</html>

我们再看看整体的效果图

1.这个是新添加学生的信息

2 添加完学生的信息后,就转到List.jsp页面

3 这个时候再点击查看学生信息列表 右边那个查看按钮就可以查看到学生的全部信息了,在最后面,可以看到我们刚才添加的那个学生的信息

最后,说来说去,最后如果会用上面的 forward 和redirect

forward 转发,如return "forward:/student/showAllStudent";

redirect 重定向,如return "redirect:/student/showAllStudent";

来直接调用 showAllStudent 方法的话,就不会有这么麻烦事了

所以forward 和redirect 这两个方法还是挺好用的,今天的收获就于此!

12:49:20

redirect 重定向

---恢复内容结束---

今天中午炸了,网一炸,电脑一卡,那些页面上的内容好像都不见了,但是现在晚上回来一看,博客园帮我自动保存了,谢谢博客园,没有让我两个小时的心血白费,本来有打算推到重来,现在好啦!

时间: 2024-12-19 18:59:25

springmvc request foward 和 redirect的相关文章

springmvc的foward和redirect跳转简单解析

Spring MVC 中,我们在返回逻辑视图时,框架会通过 viewResolver 来解析得到具体的 View,然后向浏览器渲染.假设逻辑视图名为 hello,通过配置,我们配置某个 ViewResolver 如下: <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <description> 假如逻辑试图名为 "hello",因

SpringMVC的forward和redirect

经常需要在spring的controller之间跳转request,自然想到servlet的forward和redirect方法,还好,spring也提供了类似方法. @RequestMapping(value="/main", method={RequestMethod.GET, RequestMethod.POST})     public String showBlogMain(Model model){         setTopLevelChannels(model);  

深入学习SpringMVC

1.什么是SpringMVC? SpringMVC是Spring框架内置的MVC的实现.SpringMVC就是一个Spring内置的MVC框架.MVC框架,它解决WEB开发中常见的问题(参数接收.文件上传.表单验证.国际化等等),而且使用简单,与Spring无缝集成. 支持 RESTful风格的 URL 请求 .采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性. 2.SpringMVC底层实现 在没有使用SpringMVC之前我们都是使用的Servlet在做Web开发.但是使

SpringMvc 视图解析器常见功能、类型转换、格式化

springmvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframewo

Spring Security4.1.3实现拦截登录后向登录页面跳转方式(redirect或forward)返回被拦截界面

一.看下内部原理 简化后的认证过程分为7步: 用户访问网站,打开了一个链接(origin url). 请求发送给服务器,服务器判断用户请求了受保护的资源. 由于用户没有登录,服务器重定向到登录页面 填写表单,点击登录 浏览器将用户名密码以表单形式发送给服务器 服务器验证用户名密码.成功,进入到下一步.否则要求用户重新认证(第三步) 服务器对用户拥有的权限(角色)判定: 有权限,重定向到origin url; 权限不足,返回状态码403("forbidden"). 从第3步,我们可以知道

SpringMVC重定向视图RedirectView小分析

目录 前言 RedirectView介绍 实例讲解 总结 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html 本文所讲的部分内容跟SpringMVC的视图机制有关,SpringMVC的视图机制请参考楼主的另一篇博客: http://www.cnblogs.com/fangjian0423/p/springM

laravel 控制器里 redirect url地址传两个参数

public function red_search() { $url=Request::all(); return redirect('search/'.$url['category'].'/'.$url['term']); }

SpringMVC RedirectView的使用以及源码分析

看一段普通的代码,我们访问controller中的一个方法后,重定向到另外一个controller或者视图. @RequestMapping(params="method=index") public ModelAndView index() { RedirectView redirectView = new RedirectView("/Demo.do?method=index2", true, true); ModelAndView mav = new Mode

Forword(请求转发)与Redirect(重定向)区别

1.从数据共享上 Forword是一个请求的延续,可以共享request的数据 Redirect开启一个新的请求,不可以共享request的数据 2.从地址栏 Forword转发地址栏不发生变化 Redirect转发地址栏发生变化 原文地址:https://www.cnblogs.com/xiaohouye/p/11151330.html