问题引入:
在登录页面(login.jsp)中输入用户名及口令并点击“登录”按钮,将输入的用户名和口令提交到 check.jsp 页面处理验证,若用户名和口令正确则自动跳转到管理页面(admin.jsp),若验证失败则跳转回登录页面(login.jsp)并显示错误信息。若用户在地址栏中直接输入管理页面的 URL 地址进行访问,管理页面要验证用户是否登录,若登录则显示管理页面,否则跳转到登录页面。
图 1 登陆验证流程图
问题解决:
login.jsp核心代码:
<body>
<h2 align="center">系统登录</h2>
<%//显示登录错误信息
Object errMsg = session.getAttribute("errMsg");
if(errMsg != null){%>
<div style="color:red;text-align:center"><%=errMsg%></div>
<%session.removeAttribute("errMsg");}%>
<form method="post" action="check.jsp">
<p align="center">用户名:<input type="text" name="uName"></p>
<p align="center">口 令:<input type="password" name="uPassword"></p>
<p align="center"><input type="submit" name="submit" value="登录"></p>
</form>
</body>
check.jsp核心代码:
<body>
<%//确保获取的中文不会乱码
request.setCharacterEncoding("UTF-8");
//获取客户端提交的用户名
String uName = request.getParameter("uName");
//获取客户端提交的口令
String uPassword = request.getParameter("uPassword");
if("张三".equals(uName) && "123456".equals(uPassword)){
//将用户名保存到会话中,后面页面通过检查此对象的存在与否判断用户是否登录,并将用户名显示到页面
session.setAttribute("uName",uName);
//重定向到被保护页面
response.sendRedirect("admin.jsp");
}else{
//设置错误信息,用于登录页面提示
session.setAttribute("errMsg","用户名或口令不正确...");
//重定向到登录页面
response.sendRedirect("login.jsp");
}%>
</body>
admin.jsp核心代码:
<body>
<%Object uName = session.getAttribute("uName");
//判断用户是否登录
if(uName == null){
session.setAttribute("errMsg","你还没登录,请登录...");
//重定向到登录页面
response.sendRedirect("login.jsp");
}%>
<h1>嗨!<%=uName%>,欢迎来到你的月亮我的心!!</h1>
</body>
结果验证:
在浏览器输入:登陆http://localhost:8080/Demo/login.jsp,显示如下页面:
输入由于设置登陆用户为“张三”,密码为“123456”,当输入“李四”“123456”,显示输入错误:
登陆成功,显示如下: