实训——开发一个用户登录模块
基于本博客前面讲的JSP基础知识,本篇进行一个实训,开发一个简单的用户登录模块(没有用到数据库)。
一. 需求描述
首先要有一个登录页面,页面上面要填写用户名,密码,登录按钮,重置按钮。单击 “登录” 则将信息提交到一个JSP页面。该JSP页面进行判断(实际开发中会查找数据进行判断)输入的信息是否正确,如果正确,则跳转到 “登录成功” 页面,否则,跳转到 “登录失败” 页面。
二. 模块实现
文件 | 功能 |
---|---|
loginForm.jsp | 提交用户信息 |
loginConf.jsp | 对输入的信息进行判断,并且根据结果进行跳转 |
loginSuccess.jsp | 提示用户登录成功 |
loginFailure.jsp | 提示用户登录失败 |
三. 程序清单
loginForm.jsp
<%@ page language = "java" pageEncoding = "gb2312" %>
<html>
<head>
<title>
登录页面
</title>
</head>
<body>
<form action = "loginConf.jsp" method = "post" >
<table>
<tr>
<td>用户名</td>
<td><input type = "text" name = "username" /></td>
</tr>
<tr>
<td>密码</td>
<td><input typt = "text" name = "upassword" /></td>
</tr>
<tr>
<td> <input type = "submit" value = "登录" ></td>
<td> <input type = "reset" value = "重置" ></td>
</tr>
</table>
</form>
</body>
</html>
loginConf.jsp (这里使用固定的用户名:root 固定的密码:dmin)
<%@ page language = "java" pageEncoding = "gb2312" %>
<html>
<head>
<title>
loginConf
</title>
</head>
<body>
<c:choose> <%-- 是<c:when>和<c:otherwise>的父标签 --%>
<c:when test = "${param.username == 'root'}">
<%-- 如果用户名合法,则再进行判断密码是否正确 --%>
<c:if test = "${param.upassword == 'admin'}">
<jsp:forward page = "loginSuccess.jsp"></jsp:forward>
</c:if>
<jsp:forward page = "loginFailure.jsp"></jsp:forward>
</c:when>
<c:otherwise>
<jsp:forward page = "loginFailure.jsp"></jsp:forward>
</c:otherwise>
</c:choose>
</body>
</html>
loginSuccess.jsp
<%@ page language = "java" pageEncoding = "gb2312" %>
<html>
<head>
<title>
登录成功页面
</title>
</head>
<body>
<h1>登录成功</h1>
</body>
</html>
loginFailure.jsp
<%@ page language = "java" pageEncoding = "gb2312" %>
<html>
<head>
<title>
登录失败
</title>
</head>
<body>
<h1>登录失败</h1>
</body>
</html>
在浏览器输入 http://localhost:8080/LoginModule/loginForm.jsp。如下图:
用户名输入“root”,密码输入“admin”,点击“登录”,则看到下图:
用户名输入“root”,密码随意输入,点击“登录”,则看到下图:
用户名随意输入,不管密码是什么,点击“登录”,则看到下图:
四. 扩展
增加需求:
1.当用户名为空时,点击“登录”,页面跳转回当前页面,并且提示“用户名为空”。
2.当密码为空时,点击“登录”,页面跳转回当前页面,并且提示“密码为空”。
4.1 需求分析
修改登录判断页loginConf.jsp,添加判断用户名密码是否为空,并且添加页面跳转。
4.2 程序清单
loginConf.jsp
<%@ page language = "java" pageEncoding = "gb2312" %>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>
loginConf
</title>
</head>
<body>
<%-- 判断用户名是否为空 --%>
<c:if test = "${empty param.username}"> <%-- 如果用户名为空 --%>
<% request.setAttribute("error", "用户名不能为空"); %>
<jsp:forward page="loginForm.jsp"></jsp:forward><%-- 跳转登录页面 --%>
</c:if>
<%-- 判断密码是否为空 --%>
<c:if test = "${empty param.upassword}"> <%-- 如果密码为空 --%>
<% request.setAttribute("error", "密码不能为空"); %>
<jsp:forward page="loginForm.jsp"></jsp:forward><%-- 跳转登录页面 --%>
</c:if>
<c:choose> <%-- 是<c:when>和<c:otherwise>的父标签 --%>
<c:when test = "${param.username == 'root'}">
<%-- 如果用户名合法,则再进行判断密码是否正确 --%>
<c:if test = "${param.upassword == 'admin'}">
<jsp:forward page = "loginSuccess.jsp"></jsp:forward>
</c:if>
<jsp:forward page = "loginFailure.jsp"></jsp:forward>
</c:when>
<c:otherwise>
<jsp:forward page = "loginFailure.jsp"></jsp:forward>
</c:otherwise>
</c:choose>
</body>
</html>
loginForm.jsp
<%@ page language = "java" pageEncoding = "gb2312" %>
<html>
<head>
<title>
loginForm
</title>
</head>
<body>
<form action = "loginConf.jsp" method = "post" >
<table>
<tr>
<%-- colspan属性是表格的列合并,数字代表有几列合并,font标签是设置字体 --%>
<td colspan = "2"><font color = "red">${requestScope.error}</font> </td>
</tr>
<tr>
<td>用户名</td>
<td><input type = "text" name = "username"/></td>
</tr>
<tr>
<td>密码</td>
<td><input type = "password" name = "upassword"/></td>
</tr>
<tr>
<td> <input type = "submit" value = "登录" ></td>
<td> <input type = "reset" value = "重置" ></td>
</tr>
</table>
</form>
</body>
</html>
在浏览器输入 http://localhost:8080/LoginModule/loginForm.jsp。如下图:
不填用户名信息,密码随便填,点击“登录”,如下图:
不填密码信息,用户名随便填,点击“登录”,如下图:
欢迎小伙伴来评论