SpringMVC——接收请求参数和页面传参 刺骨的言语ヽ痛彻心扉 2022-07-25 15:34 170阅读 0赞 **Spring接收请求参数:** **1,使用HttpServletRequest获取** Java代码 ![收藏代码][icon_star.png] 1. @RequestMapping("/login.do") 2. **public** String login(HttpServletRequest request)\{ 3. String name = request.getParameter("name") 4. String pass = request.getParameter("pass") 5. \} ** 2,Spring会自动将表单参数注入到方法参数,和表单的name属性保持一致。和Struts2一样** Java代码 ![收藏代码][icon_star.png] 1. @RequestMapping("/login.do") 2. **public** String login(HttpServletRequest request, 3. String name, 4. @RequestParam("pass")String password) // 表单属性是pass,用变量password接收 5. \{ 6. syso(name); 7. syso(password) 8. \} **3,自动注入Bean属性** Java代码 ![收藏代码][icon_star.png] 1. <form action="login.do"> 2. 用户名:<input name="name"/> 3. 密码:<input name="pass"/> 4. <input type="submit" value="登陆"> 5. </form> 6. 7. //封装的User类 8. **public** **class** User\{ 9. **private** String name; 10. **private** String pass; 11. \} Java代码 ![收藏代码][icon_star.png] 1. @RequestMapping("/login.do") 2. **public** String login(User user) 3. \{ 4. syso(user.getName()); 5. syso(user.getPass()); 6. \} **向页面传值:** **当Controller组件处理后,向jsp页面传值,** **1,使用HttpServletRequest 和 Session 然后setAttribute(),就和Servlet中一样** **2,使用ModelAndView对象** **3,使用ModelMap对象** **4,使用@ModelAttribute注解** **Model数据会利用HttpServletRequest的Attribute传值到success.jsp中** Java代码 ![收藏代码][icon_star.png] 1. @RequestMapping("/login.do") 2. **public** ModelAndView login(String name,String pass)\{ 3. User user = userService.login(name,pwd); 4. Map<String,Object> data = **new** HashMap<String,Object>(); 5. data.put("user",user); 6. **return** **new** ModelAndView("success",data); 7. \} **使用ModelMap参数对象示例:** **ModelMap数据会利用HttpServletRequest的Attribute传值到success.jsp中** Java代码 ![收藏代码][icon_star.png] 1. @RequestMapping("/login.do") 2. **public** String login(String name,String pass ,ModelMap model)\{ 3. User user = userService.login(name,pwd); 4. model.addAttribute("user",user); 5. model.put("name",name); 6. **return** "success"; 7. \} ** 使用@ModelAttribute示例** **在Controller方法的参数部分或Bean属性方法上使用** **@ModelAttribute数据会利用HttpServletRequest的Attribute传值到success.jsp中** Java代码 ![收藏代码][icon_star.png] 1. @RequestMapping("/login.do") 2. **public** String login(@ModelAttribute("user") User user)\{ 3. //TODO 4. **return** "success"; 5. \} 6. 7. @ModelAttribute("name") 8. **public** String getName()\{ 9. **return** name; 10. \} **Session存储:** **可以利用HttpServletReequest的getSession()方法** Java代码 ![收藏代码][icon_star.png] 1. @RequestMapping("/login.do") 2. **public** String login(String name,String pwd 3. ModelMap model,HttpServletRequest request)\{ 4. User user = serService.login(name,pwd); 5. HttpSession session = request.getSession(); 6. session.setAttribute("user",user); 7. model.addAttribute("user",user); 8. **return** "success"; 9. \} **Spring MVC 默认采用的是转发来定位视图,如果要使用重定向,可以如下操作** **1,使用RedirectView** **2,使用redirect:前缀** Java代码 ![收藏代码][icon_star.png] 1. **public** ModelAndView login()\{ 2. RedirectView view = **new** RedirectView("regirst.do"); 3. **return** **new** ModelAndView(view); 4. \} ** 或者用如下方法,工作中常用的方法:** Java代码 ![收藏代码][icon_star.png] 1. **public** String login()\{ 2. //TODO 3. **return** "redirect:regirst.do"; 4. \} [icon_star.png]: /images/20220724/5d15acb36a7f40fda932a12aa1b6e7ef.png
还没有评论,来说两句吧...