java之spring mvc之数据处理
Posted vincent-yuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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之数据处理的主要内容,如果未能解决你的问题,请参考以下文章
Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解