Http Server 版本3 - 实现完整的登录过程(Cookie & Session)

要想能够支持返回一个 html 文件,就需要让代码读取一个 类似 /index.html 这样的文件,要想读文件,需要先知道文件路径 (但我们只知道文件名)

解决方法:

new 一个 和 src 同级的 Directory

在这里插入图片描述

右击新创建的 xxx (Directory):Mark Directory as — xxx Root

在这里插入图片描述

然后 new 一个 file:index.html

登录界面

写到这里,服务器已经可以返回一个指定的静态页面了

这个页面中包含了一个 form 表单,借助表单来实现登录操作

在这里插入图片描述

此时,启动服务器

在这里插入图片描述

由于表单是把数据提交到 /login 这个 path 中

服务器紧接着就要实现 POST 请求下的 /login 的处理

doPost 方法:

private void doPost(Request request, Response response) {

//2.实现 /login 的处理

if(request.getUrl().startsWith(“/login”)) {

//读取用户提交的用户名和密码

String userName = request.getParameter(“username”);

String password = request.getParameter(“password”);

System.out.println("userName: " + userName);

System.out.println("password: " + password);

}

}

再次重启服务器,使用 fiddler 抓包:

在这里插入图片描述

流程:

接着,请求到达服务器上,解析成 Request 对象

用户名和密码这种键值对,就保存到 body 中,同时会把 body 中的键值对解析保存到 parameters 表中

在这里插入图片描述

doPost 方法获取参数:

在这里插入图片描述

在这里插入图片描述

在这个基础上,在继续实现验证用户名密码是否正确

private void doPost(Request request, Response response) {

//2.实现 /login 的处理

if(request.getUrl().startsWith(“/login”)) {

//读取用户提交的用户名和密码

String userName = request.getParameter(“username”);

String password = request.getParameter(“password”);

//登录逻辑需要验证用户名密码是否正确

// 此处为了简单,把用户名和密码在代码中写死

// 更科学的处理方式: 从数据库中读取用户名对应密码,检验密码是否一致

if(“hh”.equals(userName) && “666”.equals(password)){

// 登陆成功

response.setStatus(200);

response.setMessage(“OK”);

response.setHeader(“Content-Type”,“text/html;charset=utf-8”);

response.writeBody(“”);

response.writeBody(“

欢迎您!” + userName + “
”);

response.writeBody(“”);

}

else{

// 登陆失败

response.setStatus(403)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值