1、login.jsp

咱们先来看登录的入口页面。这个login.jsp的核心任务其实很明确:收集用户输入的账户密码,然后把它们交给LoginSelect.jsp去进行真伪校验。
页面设计上,它包含两个关键输入框:username和password。用户体验的一个细节在于错误提示:当用户输入为空时,页面需要给出友好提醒。这里用了一个巧妙的办法——利用Session对象来传递消息。具体来说,通过session.setAttribute(“login_msg”,“用户名或密码为空”)来设置提示内容,再在页面上通过<%=session.getAttribute(“login_msg”)%>这段JSP表达式获取并显示出来。下面的Ja vaScript脚本则负责控制这个提示框的显隐:只有当有实际错误消息时,它才会出现,否则就保持隐藏,让界面保持干净。
<%@ page contentType="text/html;charset=UTF-8" language="ja va" %>登录界面 欢迎登录
<%=session.getAttribute("login_msg")%>
2、 loginSelect.jsp
登录请求提交后,就进入了核心的校验环节loginSelect.jsp。由于是示例程序,这里并没有连接真实的数据库,而是用一个HashMap集合来模拟用户数据存储,这种方式在演示和测试中非常常见。
来看具体的实现逻辑:
- 数据初始化:通过
map.put(“20201234”,“123456”)预设了一组初始的账户密码,相当于在“数据库”里先存好一个测试账号。 - 动态纳入新用户:这步是关键。当有用户通过注册页面成功注册后,其账户信息会以
username为键、password为值的形式暂存在Session里。所以,在处理登录时,代码会先检查Session中是否存在这个键:if (session.getAttribute(username)!=null)。如果存在,就通过map.put(username,session.getAttribute(username).toString())把这组新的账户密码也加入到模拟的“数据库”中,这样新用户就能马上登录了。 - 校验流程:流程非常清晰。首先进行非空检查,如果账户或密码为空,则设置错误消息并跳回登录页。接着,调用自定义的
compare方法,在Map中查找用户名对应的密码,并进行比对。匹配成功,则跳转到系统主页index.jsp;匹配失败,则同样携带错误消息返回登录页。
<%@ page import="ja va.util.*" %><%@ page contentType="text/html;charset=UTF-8" language="ja va" %>判断登录界面 <%! Mapmap = new HashMap (); public boolean compare(String username,String password){ String pwd = map.get(username); if(pwd!=null&&password.equals(pwd)){ return true; } else{ return false; } }%><% String username = request.getParameter("username"); String password = request.getParameter("password"); //设置初始值 map.put("20201234","123456"); //注册后的值存入map集合 if (session.getAttribute(username)!=null){ map.put(username,session.getAttribute(username).toString()); } System.out.println(map); //判断输入内容是否正确,给出提示信息 if (username==null||username =="" || password==null || password==""){ session.setAttribute("login_msg","用户名或密码为空"); response.sendRedirect("login.jsp"); return; } boolean compare = compare(username, password); if (compare){ session.setAttribute("username",username); session.setAttribute("password",password); response.sendRedirect("index.jsp"); } else { session.setAttribute("login_msg","用户名或密码错误或用户名不存在"); response.sendRedirect("login.jsp"); }%>
3、register.jsp

说完了登录,再看注册功能。从界面可以看到,register.jsp和登录页的设计思路同宗同源,同样包含了用户名和密码的输入框,表单的提交目标换成了RegisterSelect.jsp。
其错误提示机制与登录页几乎一模一样,只是Session中使用的属性名换成了register_msg。也就是说,通过session.setAttribute(“register_msg”,“用户名或密码为空”)来设置提示,并通过<%=session.getAttribute(“register_msg”)%>在页面上动态显示。前端Ja vaScript的显隐控制逻辑也完全一致,确保了界面交互的一致性。
<%@ page contentType="text/html;charset=UTF-8" language="ja va" %>注册界面 欢迎注册
<%=session.getAttribute("register_msg")%>