实现一个简易版的Tomcat(十四)

前言

此版本实现登录业务(流程与注册相像)


登录的流程:

1:用户访问登录页面(可以在首页上点击超链接进入登录页面)


2:在登录页面输入用户名和密码并点击登录按钮提交表单

3:表单提交路径action="loginUser"

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录</title>
    </head>
    <body>
        <center>
            <h1>Login</h1>
            <form action="./loginUser" method="GET">
                <table border="2">
                    <tr>
                        <td>用户名</td>
                        <td><input name="username" type="text"></td>
                    </tr>
                    <tr>
                        <td>密码</td>
                        <td><input name="password" type="password"></td>
                    </tr>
                    <tr>
                        <td colspan="2" align="center">
                            <input type="submit" value="点击登录">
                        </td>
                    </tr>
                </table>
            </form>
        </center>
    </body>
</html>


4:ClientHandler处理请求环节发现这是这个请求时就实例化一个处理
  登录的业务类LoginServlet,并调用它的serveice方法处理

返回到ClientHandler类添加如下代码


5:LoginServlet处理中如果用户输入的用户名密码都对则设置响应
  登录成功提示页面:login_success.html
  否则设置响应登录失败:login_fail.html
  登录失败有两种情况:用户名不对,或者用户名对但密码不对。

/**
 * @Author JIANG
 */
public class LoginServlet {
    public void service(HttpRequest request, HttpResponse response) {
        System.out.println("LoginServlet:开始处理登录...");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username+","+password);
        File file = new File("user.dat");

        try (
            RandomAccessFile raf = new RandomAccessFile("user.dat","r")
        ){
            for (int i = 0;i<file.length()/100;i++) {
                raf.seek(i*100);
                byte[] data = new byte[32];
                raf.read(data);
                String name = new String(data,"UTF-8");
                data = new byte[32];
                raf.read(data);
                String pwd = new String(data,"UTF-8");
                if (!(name.equals(username) && pwd.equals(password))) {
                    response.setEntity(new File("webapps/myweb/login_info_err.html"));
                    return;
                }
            }

            response.setEntity(new File("webapps/myweb/login_success.html"));

        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("LoginServlet:处理登录完毕!");
    }
}

 


至此,登录和注册功能已经全部实现,但是,目前的两个业务所在的页面都属于静态页面,在下一个版本,将实现如何生成动态页面。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值