java之spring mvc之数据处理
1. 页面中数据提交到 Controller 中如何处理
a) 如果自定义 Controller 是实现 spring 的 Controller 的接口,那么可以通过 HttpServletRequest 来获取数据。
b) 如果自定义的 Controller 没有实现 spring 的 Controller 的接口,那么可以通过在处理方法上,添加一个 HttpServletRequest 类型的参数,在请求被方法处理时, spring 会自动的将 HttpServletRequest 注入到该参数中。
注意:以上两种方式均可以获取表单数据,但是获取的方式和 servlet 一致,那么在提交数据时,会自动将表单域中的值,直接注入给参数。
c) 在处理方法上,直接声明参数,参数名称和表单中的域的名称一致,那么在提交数据时,会自动将表单域中的值,直接注入给参数。
Jsp 页面
<form action="login.do" method="post">
username:<input type="text" name="username"/><br>
password:<input type="password" name="password"/><br>
<input type="submit" value="登录"/>
</form>
Controller 类
@RequestMapping("/login.do")
public ModelAndView login(String username,String password){
ModelAndView mv = new ModelAndView();
System.out.println("username="+username+" \tpassword="+password);
if("siggy".equals(username)&&"1111".equals(password)){
mv.addObject("msg", "登录成功!!!");
mv.setViewName("index");
}else{
mv.setViewName("login");
}
return mv;
}
如果表单域中的名称和参数名不一致,可以使用 @RequestParam("username") 进行声明
@RequestMapping("/login.do")
public ModelAndView login(@RequestParam("username")String user,String password){
ModelAndView mv = new ModelAndView();
System.out.println("username="+user+" \tpassword="+password);
if("siggy".equals(user)&&"1111".equals(password)){
mv.addObject("msg", "登录成功!!!");
mv.setViewName("index");
}else{
mv.setViewName("login");
}
return mv;
}
d) 对于提交对象的处理:
如果在表单域中提交的是对象,那么域中的名称为 vo 类的属性名即可,vo 类中提供 get/set 方法,Controller 类中的处理方法上,直接将参数声明为 vo 类型的对象即可。
vo 类型
public class User {
private String name;
private String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
Jsp 页面
<body>
<form action="login.do" method="post">
username:<input type="text" name="name"/><br>
password:<input type="password" name="pwd"/><br>
<input type="submit" value="登录"/>
</form>
</body>
Controller 类
@Controller
public class UserController {
@RequestMapping("/toLogin.do")
public ModelAndView toLogin(){
return new ModelAndView("login");
}
@RequestMapping("/login.do")
public ModelAndView login(User user){
ModelAndView mv = new ModelAndView();
System.out.println("username="+user.getName()+" \tpassword="+user.getPwd());
if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){
mv.addObject("msg", "登录成功!!!");
mv.setViewName("index");
}else{
mv.setViewName("login");
}
return mv;
}
}
2. 数据如何从后台响应到页面中
a) 可以通过 ServletAPI 将数据携带到前台,和 servlet 处理是一致的。
@RequestMapping("/login.do")
public ModelAndView login(@RequestParam("username")String user,String password,HttpServletRequest req){
ModelAndView mv = new ModelAndView();
System.out.println("username="+user+" \tpassword="+password);
req.setAttribute("hello", "world");
if("siggy".equals(user)&&"1111".equals(password)){
mv.addObject("msg", "登录成功!!!");
mv.setViewName("index");
}else{
mv.setViewName("login");
}
return mv;
}
b) 通过 ModelAndView 将数据携带到前台,前台使用 el 和 jstl 来获取数据
@RequestMapping("/login.do")
public ModelAndView login(User user){
ModelAndView mv = new ModelAndView();
System.out.println("username="+user.getName()+" \tpassword="+user.getPwd());
if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){
mv.addObject("msg", "登录成功!!!");
mv.setViewName("index");
}else{
mv.setViewName("login");
}
return mv;
}
c) 也可以通过 ModelMap 来携带数据, ModelMap 类型的数据,需要在处理方法的参数中声明:
@RequestMapping("/login.do")
public ModelAndView login(User user,ModelMap map){
ModelAndView mv = new ModelAndView();
System.out.println("username="+user.getName()+" \tpassword="+user.getPwd());
if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){
map.addAttribute("msg", "登录成功!!!");
mv.setViewName("index");
}else{
mv.setViewName("login");
}
return mv;
}
d) 也可以通过 Model 来携带数据,Model 类型的数据,需要在处理方法的参数中声明
@RequestMapping("/login.do")
public ModelAndView login(User user,Model model){
ModelAndView mv = new ModelAndView();
System.out.println("username="+user.getName()+" \tpassword="+user.getPwd());
if("siggy".equals(user.getName())&&"1111".equals(user.getPwd())){
model.addAttribute("msg", "登录成功!!!");
mv.setViewName("index");
}else{
mv.setViewName("login");
}
return mv;
}
java之spring mvc之数据处理的更多相关文章
- 框架-Java:Spring MVC
ylbtech-框架-Java:Spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 We ...
- 从零开始学 Java - 搭建 Spring MVC 框架
没有什么比一个时代的没落更令人伤感的了 整个社会和人都在追求创新.进步.成长,没有人愿意停步不前,一个个老事物慢慢从我们生活中消失掉真的令人那么伤感么?或者说被取代?我想有些是的,但有些东西其实并不是 ...
- Java框架-Spring MVC理解001
Spring MVC理解 1.servlet--Spring MVC的本质 2.Spring MVC其实是一个工具,具体的理解可以分为两步:第一步,了解这个工具是怎么创建出来的:第二步,了解这个工具是 ...
- Java之Spring mvc详解
文章大纲 一.Spring mvc介绍二.Spring mvc代码实战三.项目源码下载四.参考文章 一.Spring mvc介绍 1. 什么是springmvc springmvc是sprin ...
- 【Java】Spring MVC 扩展和SSM框架整合
开发web项目通常很多地方需要使用ajax请求来完成相应的功能,比如表单交互或者是复杂的UI设计中数据的传递等等.对于返回结果,我们一般使用JSON对象来表示,那么Spring MVC中如何处理JSO ...
- java之spring mvc之helloworld
这篇主要讲解springmvc的基本的使用,这里以helloworld项目为例. 目录结构: 1. 新建 web 项目 :springmvc_helloworld 2. 在 WebRoot\WEB-I ...
- java之spring mvc之初始spring mvc
1. mvc : mvc框架是处理 http请求和响应的框架 2. mvc 做的事情有哪些: 将 url 映射到一个java的处理方法上 将表单数据提交到 java 类中 将后台 java 类处理的结 ...
- 从零开始学 Java - 搭建 Spring MVC 记录云创的日子 第一章
2017年11月29日 来到新项目,需要用到Spring MVC ,那么我就开始记录我这次的学习. Spring MVC 框架是围绕一个 DispatcherServlet 来设计的,这个 Servl ...
- java idea spring mvc 入门 最起码 我8080跑起来了
IDEA建立Spring MVC Hello World 详细入门教程 https://www.cnblogs.com/wormday/p/8435617.html
随机推荐
- 浅谈 HTTP协议
1.什么是http协议Hyper Text Transport Portocal(超文本传输协议)HTTP协议是应用层协议浏览器和web服务器通讯时遵守的约定互联网使用最多的协议提供超文本的传输服务通 ...
- vue----子组件引用vux popup mask遮罩在最上层解决办法 z-index问题
在一个页面的子组件中引用vux的popup组件时,出现mask遮罩在最上层的问题,百度了一下发现有两种解决办法,现提供第三种. popup在子组件引用时,vux将vux-popup-mask默认添加到 ...
- docker swarm和compose 的使用(阿里)
基本的docker使用参考:Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点) 昨天去阿里面试 问我如果给你5台服务器 如何部署docker,我说一个个拷贝,面试官听了 ...
- [技术博客]使用adb命令获取app(游戏)错误和警告日志
adb命令的使用 直接在命令行中输入: adb logcat *:W 注意:这句命令的意思是显示所有优先级大于等于警告(Warning)的日志,查找崩溃问题一般用: adb logcat *:E 注意 ...
- Netty 优雅退出
Netty 优雅退出机制和原理:https://www.infoq.cn/article/netty-elegant-exit-mechanism-and-principles/?utm_source ...
- 基于vue和echarts的数据可视化实现
基于vue和echarts的数据可视化: https://github.com/MengFangui/awesome-vue.git
- mp4文件转码为m3u8
https://bbs.csdn.net/topics/392046401 *********************************************** 转码完成,我直接播放m3u8 ...
- [错误解决] Libreoffice转换不成功,直接不做任何操作
问题描述: Libreoffice在版本5.3.0之前都存在这个问题.现象是:当你运行其中一个LibreOffice的时候,再运行另外一个Libreoffice转换时,将不做任何操作. 解决方案: 如 ...
- aliyun手记
阿里云里面购买的带宽是指外网带宽,内网默认是千兆带宽,做过I/O优化的则是万兆带宽. 修改密码实在更多(三个点)的那里进行修改的:修改密码(windows是administrator以及Linux是r ...
- Python模块学习filecmp文件比较
Python模块学习filecmp文件比较 filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单.python标准库还提供了difflib模块用于比较文件的内容.关于dif ...