发表于: 2018-06-11 19:53:24
1 773
今天完成的事情:
一、设计注册登陆系统
1.首先,因为注册系统是要有数据库的,而且其中用户名是不可以重复的,必须是唯一索引,所以这里涉及到一个数据库的建立和网页传参然后判断的机制,满足条件才算注册成功,可以增加一条判断两次密码是否输入相同的判断语句,则此时存在两个条件:用户名不重复,两次密码相同,否则就报错
2.登陆时,以用户输入的用户名为查找条件在数据库中查找对应的账户和密码,当判断此用户名对应的密码正确就会跳转到登陆之后的页面,如果失败,就会报错,需要重新登陆。
3.整理一下流程
①有账号的情况下——输入账号密码登陆——账号正确则跳转到homepage;账号错误则继续跳转此登陆页面,并有提示(账号密码错误)
②没有账号的情况下——先注册账号,判断是否账号冲突,两次密码是否一致——没有问题就注册成功,跳转到登陆页面;有问题就报错并且重新输入注册信息
二、设计user类
1.数据库
public class User {
// 用户数量自增id
private long userId;
// 用户名:由字母和数字成,不包含特殊符号
private String userName;
// 注册手机号,唯一索引
private String phoneNum;
// 注册邮箱,唯一索引
private String email;
// 设置密码:由字符和数字组成
private String passWord;
// 用户创建时间
private long createTime;
// 用户信息修改时间
private long updateTime;
设计思路和之前的两个类差不多,只不过这里只需要最简单的增删查改,查也只需要按照username来查找
public interface UserService {
int justAdd(User user)throws Exception;
Boolean justUpdate(User user)throws Exception;
Boolean justDelete(int id)throws Exception;
User listByName(String username)throws Exception;
三、设计登陆系统
1.首先设计登陆功能,先在数据库中存放一组账号密码
在login.jsp页面,要有输入框,输入账号和密码,然后通过post方法将其传到controller对应的方法中进行判断
<form method="post" action="${pageContext.request.contextPath}/login">
<table align="center" border="1" cellspacing="0" >
<tr>
<th>用户名</th>
<td><input type="text" placeholder="请输入用户名" size="20" name="username"></td>
</tr>
<tr>
<th>密码</th>
<td><input type="password" placeholder="请输入密码" size="20" name="password"></td>
</tr>
</table>
<%--判断输入的用户名和密码是否正确--%>
<p style="text-align: center"> <input type="submit" value="登陆修真院主页"/></p></form>
3.跳转到controller层对应的login方法中,需要进行判断,此用户名和密码是否存在于数据库之中,所以就需要使用按照用户名查找
@RequestMapping(value = "/login",method = RequestMethod.POST)
public String doLogin(@RequestParam String username, String password)throws Exception{
User user=userService.listByName(username);
//将输入的密码与正确的密码比对,正确就跳转到主页
if(user.getPassword().equals(password)){
return "redirect:/homepage";
}
else
//错误就跳转到错误页面
return "errorLogin";
}
这里主要就是判断账号和密码是否一致,不一致就会跳转到错误页面,在错误页面有个跳转,跳回主页
<body>
<p style="text-align: center"> <font size="6" color="red"><strong>账号密码错误,请确认后重新输入</strong> </font></p>
<p style="text-align:center"><a href="${pageContext.request.contextPath}/login.jsp">返回修真院首页</a><p/>
</body>
因为此时login.jsp是在WEB-INF外面的,而且并未携带数据所以是可以使用超链接的形式跳转的
但是此时逻辑是有一个错误的,那就是如果输入的用户名不存在,就会出现500,所以必须处理
增加一个try-catch即可
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String doLogin(@RequestParam String username, String password) throws Exception {
try {
User user = userService.listByName(username);
//将输入的密码与正确的密码比对,正确就跳转到主页
if (user.getPassword().equals(password)) {
return "redirect:/homepage";
} else
//错误就跳转到错误页面
logger.error("输入密码不正确");
return "errorLogin";
}catch (Exception e){
logger.error("用户不存在");
return "errorLogin";
}
明天计划的事情:
1.学习一下正则表达式,将其用在注册系统中
遇到的问题:
以上
收获:
1.完成了简单注册和登陆系统,虽然和预想的还有点差距,不过可以运行了
评论