表单提交,注册
<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";
}