博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java之spring mvc之数据处理
阅读量:5037 次
发布时间:2019-06-12

本文共 4657 字,大约阅读时间需要 15 分钟。

 1. 页面中数据提交到 Controller 中如何处理

a) 如果自定义 Controller 是实现 spring 的 Controller 的接口,那么可以通过 HttpServletRequest 来获取数据。

b) 如果自定义的 Controller 没有实现 spring 的 Controller 的接口,那么可以通过在处理方法上,添加一个 HttpServletRequest 类型的参数,在请求被方法处理时, spring 会自动的将 HttpServletRequest 注入到该参数中。

注意:以上两种方式均可以获取表单数据,但是获取的方式和 servlet 一致,那么在提交数据时,会自动将表单域中的值,直接注入给参数。

c) 在处理方法上,直接声明参数,参数名称和表单中的域的名称一致,那么在提交数据时,会自动将表单域中的值,直接注入给参数。

Jsp 页面

username:
password:

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 页面

    
username:
password:

Controller 类

@Controllerpublic 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;    }

 

转载于:https://www.cnblogs.com/Vincent-yuan/p/11273653.html

你可能感兴趣的文章
python将两个数组合并成一个数组的两种方法的代码
查看>>
Java基础8-浅谈java程序的运行机制与JVM运行
查看>>
MyBatis之级联——鉴别器
查看>>
javascript:void(0)的含义
查看>>
解决android启动程序时,会出现一个短暂的白色空白界面的问题
查看>>
BZOJ‘s Usaco 奶牛题集锦
查看>>
生成器
查看>>
drf权限组件
查看>>
输入月份和日期,得出是今年第几天
查看>>
利用mysqldump备份mysql
查看>>
Qt中子窗口全屏显示与退出全屏
查看>>
使用brew安装软件
查看>>
[BZOJ1083] [SCOI2005] 繁忙的都市 (kruskal)
查看>>
吴裕雄 python 机器学习——数据预处理嵌入式特征选择
查看>>
Centos6.4安装JDK
查看>>
201521123069 《Java程序设计》 第4周学习总结
查看>>
线性表的顺序存储——线性表的本质和操作
查看>>
【linux】重置fedora root密码
查看>>
数组的扩展
查看>>
关于空间背景颜色的操作
查看>>