表单提交,注册
<formaction="<%=request.getContextPath()%>/user/login.do"method="post"> username:<inputtype="text"name="username"> <br> password:<inputtype="text"name="password"> <br> age:<inputtype="text"name="age"> <inputtype="submit"value="提交"> </form>
public class User{ private String username; private String password; int age; public int getAge(){ return age; } public void setAge(int age){ this.age = age; } public String getUsername(){ return username; } public void setUsername(String username){ this.username = username; } public String getPassword(){ return password; } public void setPassword(String password){ this.password = password; } @Override public String toString(){ return "User [username=" + username + ", password=" + password + "]"; } }
HttpServletRequest
中的 setAttribute(key,value)
即可添加属性值 request
域中,那么在JSP页面即可使用 EL表达式
获取 /** * @param user 接收请求参数 * @param request 添加属性值request域中 */ @RequestMapping(value = "/login.do") public String login(User user,HttpServletRequest request,HttpServletResponse response){ System.out.println(user); request.setAttribute("user", user); return "error"; }
ModelAndView
中本身就是用来存储数据和视图的,因此我们可以使用ModelAndView来传值 ModelAndView
会利用 HttpServletRequest
中的 setAttribute(key,value)
将数据存储在 requst
域中
Model
表示的就是转发的数据,可以通过 ModelAndView(String viewName,Map<String,?> map)
构造方法封装 Model
,其中 Model
的类型就是 Map<String,?>
@RequestMapping(value = "/login.do") public ModelAndView login(User user){ System.out.println(user); //创建一个Map,存储数据 Map<String, User> map=new HashMap<String, User>(); //将获取的user对象存储进去 map.put("user", user); //返回一个ModelAndView对象,第一个参数是视图,第二个是Map存储数据 return new ModelAndView("error", map); }
利用 HttpServletRequest
中的 setAtttibute()
添加数据到 request
域中
直接在处理请求的方法中,添加 ModelMap
类型的参数,当需要转发数据时,调用它的 addAttribute
方法封装数据,如果需要封装多条,多次调用即可
@RequestMapping(value = "/login.do") public String login(User user,ModelMap map){ System.out.println(user); //将数据存储在ModelMap中 map.addAttribute("user", user); return "error"; }
ModelMap
实际上是实现了Map接口,因此我们也可以直接使用Map传值 @RequestMapping(value = "/login.do") public String login(User user,Map<String, Object> map){ System.out.println(user); //将数据存储在ModelMap中 map.put("user", user); return "error"; }
通常会把访问的用户的唯一标识(用户的 ID
或用户名,邮箱等)和使用频率使用较高的数据(用户名,昵称,头像)存储在 Session
中。
@RequestMapping(value = "/login.do") public String login(User user,HttpSession session){ //将id存储在session中 session.setAttribute("uid", "9527"); return "error"; }