springMVC之一(页面<--->控制器 互相传值,转发和重定向)
#页面--->控制器
1.request:不建议使用
2.使用属性传值(建议使用)@RequestParam("name") String username
3.使用Bean对象传值(适合数据量大)
#控制--->页面request,session(cookie),application
1.request,session传递数据到页面
2.ModelAndView:Model--->ModelMap--->Map
3.ModelMap(推荐使用)
#重定向和转发
1.重定向的原理:response.sendRedirect("showDemo.do")
2.转发的原理:
request.getRequestDispatcher("/WEB-INF/web/ok.jsp")
3.当视图解析器解析到forward或redirect两个前缀,执行以上代码,否则实现字符串的拼接
开发步骤:
1.新建maven工程
1)添加web.xml
2)添加tomcat运行环境
3)添加依赖jar spring-webmvc
4)添加spring-mvc.xml
5)web.xml中配置前端控制器
6)spring-mvc.xml配置视图解析器
2.定义demo.jsp页面
<form action="" method="get">
姓名:<input type="text" name="name"/><br>
年龄:<input type="text" name="age"/><br>
<input type="submit" value="提交"/>
</form>
3.定义控制器DemoController
@Controller
@RequestMapping("/demo")
public class DemoController{
//显示demo.jsp
@RequestMapping("/showDemo.do")
public String showDemo(){
return "demo";
}
}
4.页面--->控制器传值
//2.使用属性传值
//特点: 1)参数列表的名称和表单的name属性值相同
2)可以实现自动类型转换,但是可能会有异常
3)表单数据量小
@RequestMapping("/test2.do")
public String test2(String name,Integer age){
System.out.println(name+","+age);
return "ok";
}
//3.属性传值(表单name属性值和参数列表变量名不同)
//使用@RequestParam注解辅助完成变量的赋值
// @RequestParam("name")中的name在页面上不存在
@RequestMapping("/test3.do")
public String test3(
@RequestParam("name") String username,
Integer age){
System.out.println(username+","+age);
return "ok";
}
//4.Bean对象传值
//特点:把表单name属性值封装成类类型;
// 成员变量名称必须表单的name属性值相同
// 适合数据量大的参数传递值
@RequestMapping("/test4.do")
public String test4(User user){
System.out.println(user.getName()+","+user.getAge());
return "ok";
}
5.控制器--->页面传值
//5.使用request,session从控制器向页面传值
//
@RequestMapping("test5.do")
public String test5(HttpServletRequest request,
HttpSession session){
request.setAttribute("name","admin");
session.setAttribute("age","18");
return "ok";
}
//6.ModelAndView传值
//特点:框架Map属性获取到,设置request对象中
//@RequestMapping("/test6.do")
public ModelAndView test6(){
Map<String,Object> map=new HashMap<String,Object>();
map.put("address","中鼎7层");
ModelAndView mv=new ModelAndView("ok",map);
return mv;
}
6.请求转发和重定向
//需求:控制器接收到name,如果name=admin,表示登录成功
// 响应页面ok.jsp(转发)
// 如果name!=admin,表示登录失败。
// 响应页面demo.jsp(重定向)
// 8.1重定向的原理:
// response.sendRedirect("showDemo.do");
// 转发的原理:
// request.getRequestDispatcher("/WEB-INF/web/ok.jsp").forword (resquest,response);
//
@RequestMapping("/test8.do)
public String test8(String name,ModelMap map){
if(name.equals("admin")){
map.addAttribute("success","登录成功!");
}
else{
return "redirect:showDemo.do";
}
}
springMVC之一(页面<--->控制器 互相传值,转发和重定向)的更多相关文章
- SpringMVC 转发、重定向
转发.重定向到其它业务方法 @org.springframework.stereotype.Controller @RequestMapping("/userController" ...
- 【drp 12】再识转发和重定向:SpringMVC无法跳转页面
最近再使用SpringMVC进行页面跳转的时候,不知道发生了什么,始终都无法正确跳转.后来问题解决了,发现是对于转发和重定向没有能很好的理解,以此写篇博客,权当做积累了! 声明:本博客的所有代码,均为 ...
- SpringMVC:前台jsp页面和后台传值
前台jsp页面和后台传值的几种方式: 不用SpringMVC自带的标签 前台---->后台,通过表单传递数据(): 1.jsp页面代码如下, modelattribute 有没有都行 < ...
- springMVC中接收请求参数&&数据转发
### 1. 接收请求参数 #### 1.1. [不推荐] 通过HttpServletRequest获取请求参数 假设存在: <form action="handle_login.do ...
- SpringMVC与请求控制器
MVC设计模式 视图(View) -对应组件:JSP或者HTML文件 控制器(controller) -对应组件:Servlet 模型(Model) -对应组件:JavaBean MVC ...
- springmvc 中controller与jsp传值
参考:springmvc 中controller与jsp传值 springMVC:将controller中数据传递到jsp页面 jsp中,死活拿不到controller中的变量. 花了半天,网上列出各 ...
- http页面转发和重定向的区别
一.调用方式 我们知道,在servlet中调用转发.重定向的语句如下:request.getRequestDispatcher("new.jsp").forward(request ...
- SpringMVC转发和重定向区别!
在servlet中,转发和重定向是由request和response完成的.两者之间的区别请看我之前的文章.那么在springMVC中是如何完成的呢? /**转发**/ @RequestMapping ...
- MVC中控制器向视图传值的四种方式
MVC中的控制器向视图传值有四种方式分别是 1 ViewDate 2.ViewBag 3.TempDate 4.Model 下面分别介绍四种传值方式 首先先显示出控制器中的代码 using S ...
随机推荐
- python使用cx_Oracle在Linux和Windows下的一点差异
1. 主要是线程方面的差异. Windows下,把cx_Oracle.connect(connectedId)得到的handle传给定时器线程,主线程和和定时器可以用同一个handle. 但Linux ...
- OAuth2.0标准类库汇总
转载官网: https://oauth.net/code/ https://www.w3cschool.cn/oauth2/5ghz1jab.html 服务端类库 .NET .NET DotNetOp ...
- vue中打印显示++的问题解决方案(做成类似同步的操作就行了)
这个问题,困扰我很久很久 怎么实现的呢?首先进入页面就开始调取打印接口,打印接口的成功回调函数里面写 this.hasOut++(这是实时显示的数量)this.width=(this.hasOut/t ...
- vue中清除定时器
1.data中定义 timer:90,timeName:null 点击支付则倒计时按钮出来 pay(){ this.timeName= setInterval(()=>{ this.timer- ...
- python QQTableView中嵌入复选框CheckBox四种方法
搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四 ...
- Pygame模块,功能表
Pygame有很多的模块,下面是一张一览表: 模块名 功能 pygame.cdrom 访问光驱 pygame.cursors 加载光标 pygame.display 访问显示设备 pygame.dra ...
- web.config或App.config中AttachDBFilenamex相对路径问题
<add name="employeeManagerConnectionString" connectionString="Data Source=.\SQLExp ...
- 笔记 : win8系统中的VM虚拟机的Ubuntu搭建samba服务
1. 环境准备 (此处使用root超级管理员帐户,执行命令时不用加sudo, 普通帐户需要前面加sudo): (1)安装好Ubutun虚拟系统后,Ubuntu 的软件源配置文件是 /etc/apt/ ...
- rpm方式安装MySQL5.1.73
1.安装MySQL server 首先下载好mysql的rpm安装包 使用rpm命令安装: rpm -ivh MySQL-server-5.1.73-1.glibc23.i386.rpm 命令解释:i ...
- python之mysqldb模块安装
之所以会写下这篇日志,是因为安装的过程有点虐心.目前这篇文章是针对windows操作系统上的mysqldb的安装.安装python的mysqldb模块,首先当然是找一些官方的网站去下载:https:/ ...