电商网站搭建(二)

电商网站搭建(二)

2 登录页面设计

2.1 初始设计

接下来完成登录页面的功能实现,这里先搭起 login.jsp 的框架,框架和注册页面基本相同,唯一不同的地方是,当表单提交到该页面时,将提交的数据传入 testlogin.tag 文件中进行验证,查看用户是否存在。

因此在 login.jsp 中需要加入如下代码:

<testLogin:testlogin usrtest="<%= usrlog %>" pwdtest="<%= pwdlog %>" />

而在 tag 文件中,首先要引入 Mysql 驱动并设置字符编码(防止乱码),使用 arrtibute 标签进行传值。

<%@ attribute name="usrtest" required="true" %>
<%@ attribute name="pwdtest" required="true" %>
<%@ tag import="java.sql.*" %>
<%@ tag pageEncoding="utf-8" %>
  • 注意不是 page 而是 tag

2.2 验证用户名密码

为了区分是否登陆成功,需要设置一个标记 flag 用于记录是否登录成功。

// 设置标记用于记录用户名密码是否匹配
int flag = 0;

如果用户名密码匹配,输出“登陆成功”信息,并将其置为 1 ,否则还保留初始值 0 。如果 flag 为 0 ,则输出“登陆失败”信息。

以下为尝试登陆的核心代码:

// 尝试登录
try{
   con = DriverManager.getConnection(url, user, password);
   sql = con.createStatement();
   
   String SQL = "SELECT * FROM userInfo";
   rs = sql.executeQuery(SQL);

   while(rs.next()) {
		if(usrtest.equals(rs.getString(2)) && pwdtest.equals(rs.getString(3))){
			session.setAttribute("username", usrtest);		// 将username放入session中
			out.println("您好,登陆成功" + usrtest);
			flag = 1;
			// response.sendRedirect("shoplist.jsp");
		}
   }

   con.close();
}
catch(SQLException e) { 
   out.print("<h1>"+e);
}

if(flag==0){
	out.println("对不起,登陆失败");
}
  • 需要注意:如果登陆成功,即用户名密码匹配成功,则要使用 session 记录下登陆状态。

登录成功显示如下:

在这里插入图片描述

登陆失败显示如下:

在这里插入图片描述

此时确实可以实现登录的功能,但是在这里其实是有一个小漏洞,就是当用户名为中文时,登陆页面提交表单将用户名传递到 tag 文件的过程中,由于字符编码问题, tag 文件接收到的中文已经是乱码状态,此时如果进行字符串比较,一定不会匹配成功,因此要在最开始接收到乱码中文用户名时就要重新设置字符编码,使用如下代码:

// 为解决用户名乱码导致无法匹配
String usrtestok = new String(usrtest.getBytes("ISO-8859-1"), "utf-8");
  • Q:为什么会出现乱码?

由于 Tomcat 中对于 post 方法提交的表单采用的默认编码为 ISO-8859-1 ,而这种编码格式不支持中文字符,因此要先进行转换编码格式。

此时验证中文用户名和密码是否匹配结果如下:

在这里插入图片描述

至此,注册登录功能基本实现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值