24,923
社区成员
发帖
与我相关
我的任务
分享
public class UserSessionBean implements Serializable{
private static final long serialVersionUID = 1L;
int uid=0;
String mail="guest@apobates.com";
String token;
}
spring 中配置,当然你也可以用注解
<bean id="aO" class="com.project.servlet.UserSessionBean" scope="session"></bean>
controller中填充它和使用它
@Controller
@Scope("prototype")
@RequestMapping(value="/user")
@SessionAttributes({"userLoginForm"})
public class UserController {
@Autowired
ServletContext context;
@Autowired
UserSessionBean aO;
//登录表单:GET
@RequestMapping(value="/login",method={RequestMethod.GET})
public String login(
@RequestHeader(value="referer",required = false) String referer,
HttpServletRequest request,
HttpSession session,
SessionStatus status,
Model model){
//重复灯路
try{
if(aO.isOnline()){
return "redirect:/user/home";
}
}catch(NullPointerException e){
//LOG ETC
}
UserLoginForm ulf=new UserLoginForm();
model.addAttribute("userLoginForm", ulf);
return "user_login";
}
//登录表单:POST
@RequestMapping(value="/chkLogin",method=RequestMethod.POST)
public String submitLogin(
@ModelAttribute("userLoginForm")UserLoginForm ulf,
HttpServletRequest request,
HttpServletResponse response,
SessionStatus status,
Model model) throws IOException{
//校验
ulf.setSessionBean(aO);
ValidateForm vO=ulf.validate(true);
if(vO.isValidate()){
model.addAttribute("error",vO.getErrors());
return "user_login";
}
//业务方法
User u=userService.getUser(ulf.getToken(),ulf.getUsermail(), ulf.getUserpswd());
if(u.getUid()>0){
//填充session中的aO
aO.setUid(u.getUid());
aO.setMail(u.getMail());
aO.setToken(ulf.getToken());
//清空ModelAttribute:userLoginForm
status.setComplete();
//如果有ref
String nextPage="/user/home";
if(ApoUtil.isUsedField(ulf.getRef())){
nextPage=ulf.getRef();
}
return "redirect:"+nextPage;
}else{
vO.addMessage(new TipMessage("邮箱或密码错误"));
model.addAttribute("error",vO.getErrors());
}
return "user_login";
}
}
表单就普通写法就可以,你也可以用spring mvc的form 标签,但表单的name要在userLoginForm对象中有相应的属性