在上一篇中,我们简单的实现了一个登陆的界面,并且后台能从jsp中读取到了数据,现在我们做一个简单的注册功能来完善下我们这个简单的案例。
这里我们先不使用数据库,所以首先在user类中添加如下属性
private int id;
private static int i=0;
public int getId() {
return id;
}
public void setId() {
id=i++;
}
public static List<User> list=new ArrayList<User>();
其中,i是用于给用户生成id,list用来记录新增的用户
接下来是注册界面register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用户注册界面</title>
</head>
<body>
<div id="msg"><font color="red">${message}</font></div>
<form id="registerform" method="post" name="registerform" action="register.do?register">
用户名:<input type="text" id="username" name="username"/><p/>
密 码:<input type="password" id="password" name="password"/><p/>
密 码:<input type="password" id="repass" name="repass"/><p/>
<input name="submit" type="submit" value="注册" />
<input type="reset" name="reset" value="重置" onclick="document.getElementById('userName').focus();"/>
<!-- 重置后定位到用户名框 -->
</form>
<a target="_self" href="login.jsp">返回登录</a>
</body>
</html>
然后是RegisterController.java类
@Controller
@RequestMapping(value = "register")
public class RegisterController {
@RequestMapping(params = "register")
public ModelAndView registerUser(User user, HttpSession session,
HttpServletRequest request) {
ModelAndView modelView = new ModelAndView();
String name = request.getParameter("username");
String pass = request.getParameter("password");
String repass = request.getParameter("repass");
String res = isOk(name, pass, repass);
if ("注册成功".equals(res)) {
modelView.addObject("message", res);
modelView.setViewName("/login");
} else {
modelView.addObject("message", res);
modelView.setViewName("/register");
}
return modelView;
}
public String isOk(String name, String pass, String repass) {
if (!pass.equals(repass)) { // 两次密码不一致
return "两次密码不一致";
} else {
for (User tuser : User.list) {
if (tuser != null && tuser.getUserName() != null) {
if (tuser.getUserName().equals(name)) { // 重名了
return "您的注册用户已存在";
}
}
}
User user = new User();
user.setId();
user.setUserName(name);
user.setPassword(pass);
User.list.add(user);
return "注册成功";
}
}
}
此类用于处理注册时候的请求,其中isOK()方法对两次输入的密码进行判断,对注册的用户的用户名是否重复也进行了判断
之后我们对login.java类再进行部分的修改
@RequestMapping(params = "main") //当参数是main的时候
public ModelAndView login(User user) { //User参数在model,对应jsp中的user获取输入的参数,标签中的name属性对应user类中的属性名称
ModelAndView modelView = new ModelAndView();
for (User tuser : User.list) {
if (tuser != null && tuser.getUserName() != null) {
if (tuser.getUserName().equals(user.getUserName()) && tuser.getPassword().equals(user.getPassword())) {
modelView.addObject("message", "登录成功");
modelView.setViewName("/login");
return modelView;
}
}
}
modelView.addObject("message", "登录失败");
modelView.setViewName("/login");
return modelView;
}
login方法从User类中的静态属性list中取到注册过的值,然后进行密码的判断,确定是否正确。