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
随机推荐
- 简单find命令的实现
贴代码: /*实现一个简单的find命令:*//*程序思路:首先,用一个单链表将所需要的信息存储起来:其次根据所传入的参数信息,改变节点的状态(若有这个状态,证明该节点就是我们所需要的)最后将所需要的 ...
- srs安装与ffmpeg推流
环境说明:ubuntu 16.04 当前目录为~/. 一. 下载 git clone https://github.com/ossrs/srs.git 二.部署SRS 关闭防火墙,执行如下命令. uf ...
- kafka安装运行(docker)
zookeeper参照https://www.cnblogs.com/wintersoft/p/11128484.html mkdir /opt/kafka -pvim /opt/kafka/Dock ...
- CMU Advanced DB System - MVCC
https://zhuanlan.zhihu.com/p/40208895 Mysql的MVCC实现 https://severalnines.com/database-blog/comparing- ...
- maven本地仓库已经有了所需的jar包,为什么还要去请求远程仓库
问题 IDEA 中的maven 项目,一个jar包一直导入不进来,reimport 无效.从另一仓库把这个jar包拷贝到当前仓库,还是无效.mvn clean install -e U 发现加载这个j ...
- Linux创建用户,SFTP只允许访问指定目录
首先创建用户 useradd lus1passwd lus1 我这里配置lus1这个用户目录,为sftp指向目录,即/home/lus1/ vim /etc/ssh/sshd_config //这个记 ...
- Centos7.5安装OpenJDK1.8
安装openJDK 1.8yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel 获取java home dirname $(readli ...
- start & stop kafka cluster shell script
kafka_start_cluster.sh #!/bin/bash brokers="kafka-server-1 kafka-server-2 kafka-server-3" ...
- shell基础知识5-函数
函数的定义 function fname(){ } 或者 function_name(){ } 对于简单的函数,甚至可以是这样做 fname() { statement; } 函数调用 直接写函数名即 ...
- leetcode刷题系列(一) 26题 删除排序数组中的重复项
题干 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示 ...