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

最近在实现那个学生信息录入的时候,先是在添加学生的页面添加完,然后想直接调用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. 重学计算机组成原理(六)- 函数调用怎么突然Stack Overflow了!

    用Google搜异常信息,肯定都访问过Stack Overflow网站 全球最大的程序员问答网站,名字来自于一个常见的报错,就是栈溢出(stack overflow) 从函数调用开始,在计算机指令层面 ...

  2. 程序与CPU

    CPU中共有四大组件: 寄存器 控制器 运算器 时钟 寄存器:存取数值(存东西的) 控制器:负责将内存(寄存器)中的数据进行读入和写出(控制寄存器 协调者) 运算器:里面是逻辑运算单元,协助寄存器和控 ...

  3. VMware Workstation 15 Pro 永久激活密钥

    VMware Workstation 15 Pro 永久激活密钥   一. 激活密钥 YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8 UG5J2-0ME12-M89WY-NPWXX-WQH ...

  4. nanopi NEO2 学习笔记 3:python 安装 RPi.GPIO

    如果我要用python控制NEO2的各种引脚,i2c 或 spi ,RPi.GPIO模块是个非常好的选择 这个第三方模块是来自树莓派的,好像友善之臂的工程师稍作修改移植到了NEO2上,就放在 /roo ...

  5. SqlException (0x80131904): 超时时间已到。在操作完成之前超时时间已过或服务器未响应。

    在ms sql2005限制200M内存,framwork2.0环境下,当update更新单表数据量10k时经常出现Command超时的问题,网上查了都是说增加连接时间,尝试了还是解决不了问题,最终一个 ...

  6. unity编辑器扩展_04(使用Selection获取选择的游戏物体)

    代码: [MenuItem("Tools/GetChance", false, 1)]    static void GetChance()    {        if (Sel ...

  7. Codeforces 396C

    题意略. 思路: 将树上的节点编好dfs序,然后就可以用树状数组区间修改点查询了. 我们用 lft[v] 和 rht[v]来表示v的子树在dfs序中的左端和右端,这样才方便我们对树状数组的操作. 其实 ...

  8. HDU 5135

    题意略. 思路: 本题开始我先写了一发dfs暴力,然而递归程度太深,导致爆栈.仔细回想一下dfs的过程,发现最不好处理的就是每收集到3个木棍,才能构成一个三角形. 并且,还有一个隐患就是不能完全枚举出 ...

  9. 命令行通过入参调用jar包

    命令行通过入参调用jar包 最近因为项目需要,需要实现一个功能,即定时执行服务器上的一个脚本去对数据库的数据进行业务处理,要操作的数据库有很多种,mysql.db2.oracle.sqlserver等 ...

  10. 防盗链测试01 - Jwplayer+Tengine2.3.1 mp4模块打造流媒体测试服务器

    最近有个想法,想做类似下面的视频URL验证: 1.URL Tag Validation 2.Special format of URL for preventing unauthorized usag ...