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之数据处理的更多相关文章

  1. 框架-Java:Spring MVC

    ylbtech-框架-Java:Spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 We ...

  2. 从零开始学 Java - 搭建 Spring MVC 框架

    没有什么比一个时代的没落更令人伤感的了 整个社会和人都在追求创新.进步.成长,没有人愿意停步不前,一个个老事物慢慢从我们生活中消失掉真的令人那么伤感么?或者说被取代?我想有些是的,但有些东西其实并不是 ...

  3. Java框架-Spring MVC理解001

    Spring MVC理解 1.servlet--Spring MVC的本质 2.Spring MVC其实是一个工具,具体的理解可以分为两步:第一步,了解这个工具是怎么创建出来的:第二步,了解这个工具是 ...

  4. Java之Spring mvc详解

    文章大纲 一.Spring mvc介绍二.Spring mvc代码实战三.项目源码下载四.参考文章   一.Spring mvc介绍 1. 什么是springmvc   springmvc是sprin ...

  5. 【Java】Spring MVC 扩展和SSM框架整合

    开发web项目通常很多地方需要使用ajax请求来完成相应的功能,比如表单交互或者是复杂的UI设计中数据的传递等等.对于返回结果,我们一般使用JSON对象来表示,那么Spring MVC中如何处理JSO ...

  6. java之spring mvc之helloworld

    这篇主要讲解springmvc的基本的使用,这里以helloworld项目为例. 目录结构: 1. 新建 web 项目 :springmvc_helloworld 2. 在 WebRoot\WEB-I ...

  7. java之spring mvc之初始spring mvc

    1. mvc : mvc框架是处理 http请求和响应的框架 2. mvc 做的事情有哪些: 将 url 映射到一个java的处理方法上 将表单数据提交到 java 类中 将后台 java 类处理的结 ...

  8. 从零开始学 Java - 搭建 Spring MVC 记录云创的日子 第一章

    2017年11月29日 来到新项目,需要用到Spring MVC ,那么我就开始记录我这次的学习. Spring MVC 框架是围绕一个 DispatcherServlet 来设计的,这个 Servl ...

  9. java idea spring mvc 入门 最起码 我8080跑起来了

    IDEA建立Spring MVC Hello World 详细入门教程 https://www.cnblogs.com/wormday/p/8435617.html

随机推荐

  1. Centos7 .net core 2.0安装使用

    一.添加dotnet产品Feed sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'ech ...

  2. svn无法还原 、svn无法更新

    报错:  Previous operation has not finished; run 'cleanup' if it was interrupted 上一个操作尚未完成:如果中断,请运行“清理”

  3. Out of range value for column 'field_length'

    往mysql数据库中插入数据是报错: Out of range value for column 'field_length' 字段类型是tinyint(4) 一开始以为是长度太小造成的,改成tiny ...

  4. centos7安装yum

    由于不小心把自带的yum给卸载了,卸载命令:rpm -qa yum: 在浏览器打开链接:http://mirrors.163.com/centos/6/os/x86_64/Packages/下载这四个 ...

  5. 【转】SQL2008 链接Oracle 调用存储过程

    1. SQL链接ORACLE 都是可视化的操作 如下图: 红色框选的是oracle的数据驱动,如果没有这个驱动 那需要单独安装oracle的client端 装完以后就有了. 2.在创建之前,在SQLS ...

  6. session与getSession()用法总结

    一.session 1.session的过期时间是从什么时候开始计算的?是从一登录就开始计算还是说从停止活动开始计算? 从session不活动的时候开始计算,如果session一直活动,session ...

  7. Spring源码解析之PropertyPlaceholderHelper(占位符解析器)

    Spring源码解析之PropertyPlaceholderHelper(占位符解析器) https://blog.csdn.net/weixin_39471249/article/details/7 ...

  8. 小程序 图表 antv f2 的使用

    官方组件版 https://github.com/antvis/wx-f2/tree/custom-components 官方npm版 https://github.com/antvis/wx-f2 ...

  9. layui flow loading占位图实现方法

    如果流图片要加载失败, 就会显示找不到图片的裂痕 代码如下: <!DOCTYPE html> <html> <head> <meta charset=&quo ...

  10. 原生微信小程序脚手架(支持npm)

    微信小程序支持npm 为了支持生态扩展,社区贡献者可以提供更加丰富的功能,已经支持了第三方小程序开发功能,见如下地址. 微信小程序支持npm https://developers.weixin.qq. ...