发表于: 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.完成了简单注册和登陆系统,虽然和预想的还有点差距,不过可以运行了


返回列表 返回列表
评论

    分享到