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

最近在实现那个学生信息录入的时候,先是在添加学生的页面添加完,然后想直接调用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 重定向

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

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

喜欢呼呼的文章的朋友,可以关注呼呼的个人公众号:

												

springmvc request foward 和 redirect的更多相关文章

  1. springmvc的foward和redirect跳转简单解析

    Spring MVC 中,我们在返回逻辑视图时,框架会通过 viewResolver 来解析得到具体的 View,然后向浏览器渲染.假设逻辑视图名为 hello,通过配置,我们 配置某个 ViewRe ...

  2. springMVC+request.session实现用户登录和访问权限控制

    用springmvc mybatis实现用户登录登出功能,使用session保持登录状态,并实现禁止未登录的用户访问.感谢谷歌资源,在这里做个学习记录加深自己的印象. 原文在我的https://my. ...

  3. springmvc中forward和redirect

    一.跳转 import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; im ...

  4. 【springmvc Request】 springmvc请求接收参数的几种方法

    通过@PathVariabl注解获取路径中传递参数 转载请注明出处:springmvc请求接收参数的几种方法 代码下载地址:http://www.zuida@ima@com/share/1751862 ...

  5. SpringMVC request生命周期

    When the request leaves the browser, it carries information about what the user is asking for. At ve ...

  6. Springmvc request response log

    Log Incoming Requests In Spring | Java Development Journalhttps://www.javadevjournal.com/spring/log- ...

  7. SpringMVC request 得到文件路径

    1.java中的路径 File directory = new File("abc"); // 对于getCanonicalPath()函数,“."就表示当前的文件夹,而 ...

  8. 解决springMVC https环境 jstlview redirect时变为http请求的问题

    <property name="redirectHttp10Compatible" value="false" />

  9. flask中的Flask、request、render_temple、redirect和url_for

    学flask也有一个多星期了,对这个web框架也有了一点的了解,梳理一些基础的知识点,还是小白一只,代码写得比较low,若文章有错误的地方欢迎大佬随时指正,代码中被注释掉的代码是关于预防csrf,无视 ...

随机推荐

  1. G-P-M 模型

    G-P-M 模型概述 每一个OS线程都有一个固定大小的内存块(一般会是2MB)来做栈,这个栈会用来存储当前正在被调用或挂起(指在调用其它函数时)的函数的内部变量.这个固定大小的栈同时很大又很小.因为2 ...

  2. flink 1.7.2 安装详解

    ##flink 1.7.2 安装需要java环境 下载地址 https://flink.apache.org/downloads.html#1.单机版 #创建用户flinkuseradd flink ...

  3. keras 学习笔记:从头开始构建网络处理 mnist

    全文参考 < 基于 python 的深度学习实战> import numpy as np from keras.datasets import mnist from keras.model ...

  4. QMS 的趨勢概述

    自泰勒Taylor提出的科学管理被奉行后,制造业的分工已然成形,而产品不再是由工匠单独负责完成.为确保产品的质量,产品在完工后的检验为确保瑕疵品不外流出给客户的必要关卡.然而当产品依靠检验结果并无法减 ...

  5. npm执行命令行报错

    今天在学习react-router时候使用命令npm start 报了一个错误 npm ERR! missing script: start npm ERR! A complete log of th ...

  6. 消息中间件——RabbitMQ(五)快速入门生产者与消费者,SpringBoot整合RabbitMQ!

    前言 本章我们来一次快速入门RabbitMQ--生产者与消费者.需要构建一个生产端与消费端的模型.什么意思呢?我们的生产者发送一条消息,投递到RabbitMQ集群也就是Broker. 我们的消费端进行 ...

  7. Java 8 为什么会引入lambda 表达式?

    Java 8 为什么会引入lambda ? 在Java8出现之前,如果你想传递一段代码到另一个方法里是很不方便的.你几乎不可能将代码块到处传递,因为Java是一个面向对象的语言,因此你要构建一个属于某 ...

  8. js 设计模式&&query

    1. 语法: try{           //需要执行的代码      }catch(e){           //错误处理 e程序遇到错误时的报错信息      } 2.惰性函数: 函数在第一次 ...

  9. 章节十六、4-TestNG高级功能--把测试方法分优先级、分组执行

    一. 把测试方法分优先级执行----->(priority=索引) 1.新建一个testng方法 package testclasses; import org.testng.annotatio ...

  10. input 上传图片

    <!--多图上传--><input name="image_mortgage_property[]" type="file" multiple ...