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
随机推荐
- 多catch块的代码优化
一.多catch块的代码优化 在写代码时,多行存在不同的异常,使用try catch的话,习惯性的是有多个catch,如下所示: 注意到warning,文字描述如下: Reports identica ...
- HustOJ二次开发之隐藏菜单栏
通过关键搜索: find / -name *nav.php 出现如下结果:/home/judge/src/web/template/ie/nav.php/home/judge/src/web/temp ...
- [技术博客] 利用Vagrant+virtualbox在windows下进行linux开发
目录 加速box安装的方法 root账户登录 换源教程 安装rvm 访问rails server RubyMine连接虚拟机上的解释器 作者:庄廓然 在windows下进行linux开发:利用Vagr ...
- Django实现自动发布(3发布-安装)
相对于服务的升级.回退,新部署一个服务要复杂一些,要满足以下要求: 已经运行了服务实例的主机不能重复部署 进程启动需要的配置文件要先同步到主机上 之前的升级.回退都是指进程的操作,不涉及配置文件的变更 ...
- linux驱动由浅入深系列:高通sensor架构实例分析之三(adsp上报数据详解、校准流程详解)【转】
本文转载自:https://blog.csdn.net/radianceblau/article/details/76180915 本系列导航: linux驱动由浅入深系列:高通sensor架构实例分 ...
- Dubbo的集群容错与负载均衡策略及自定义(一致性哈希路由的缺点及自定义)
Dubbo的集群容错策略 正常情况下,当我们进行系统设计时候,不仅要考虑正常逻辑下代码该如何走,还要考虑异常情况下代码逻辑应该怎么走.当服务消费方调用服务提供方的服务出现错误时候,Dubbo提供了多种 ...
- Lamda OrderBy 排序问题
var itemModel = itemList.OrderBy(s=> decimal.Parse(s.Price)).ToList(); 前端传递的list数据金额或者其他非数字类型的字段最 ...
- MySQL使用存储过程实现判断表中字段或者索引是否存在,如果不存在则创建
使用存储过程可以保证数据库升级脚本可以重复执行而不会报错. CREATE TABLE `tb_user` ( `id` ) NOT NULL COMMENT '非自增id', `account` ) ...
- libmodbus学习笔记
libmodbus功能: a fast and portable Modbus library 库下载地址https://libmodbus.org 使用指南1)包含头文件#include <m ...
- nginx+tomcat报400的坑
nginx+tomcat的网页,在手机上通过浏览器可以正常访问,但是在自己的app的webview中访问就报400.查了访问日志,每次app中访问该页面,tomcat中就出现一个GET null的申请 ...