一、实验目的
通过编程和上机实验理解JSP各个页面之间的响应和传递的过程。并且能够熟练的获取表单中的内容,能够使用Session对象防止用户非法登录。
二、实验内容
1. 创建一个用户登录html页面。
2. 编写一个check.jsp程序验证用户的身份是否合法,若合法,则显示“登录成功,2秒钟后跳转到系统页面”,创建Session变量保存用户名和密码,若不合法则显示“验证失败,2秒钟后返回到登录页面”,并在登录页面上显示“用户名或密码有误,请重新输入。”
3. 编写一个success.jsp程序,读取用户名和密码的session信息,若session不存在,则提示“非法登录,2秒钟后返回登录页面”,否则显示“欢迎xxx进入本系统!”xxx为你登录时的用户名。该页面还有一个“注销”超级链接,点击该链接,session失效并返回到登录页面。
1 源程序代码:
1)login.html
<%@ page pageEncoding="UTF-8"%>
<%
String error = request.getParameter("error") ; // 接收错误信息
if (!(error == null || "".equals(error))) { // 错误信息不为空
%>
<h1>登录失败,错误的用户名或密码!</h1>
<% } %>
<form action="check.jsp" method="post">
用户名:<input type="text" name="uname" value="muyan"><br>
密 码:<input type="password" name="upass" value="yootk"><br>
验证码:<input type="text" name="code" maxlength="4" size="4"><img
src="image.jsp"><br>
<button type="submit">登录</button><button type="reset">重置</button>
</form>
2)check.jsp
<%@ page pageEncoding="UTF-8"%>
<%
String uname = request.getParameter("uname") ; // 接收参数
String upass = request.getParameter("upass") ; // 接收参数
if ("muyan".equals(uname) && "yootk".equals(upass)) { // 认证检查
response.setHeader("refresh","2;url=welcome.jsp"); // 跳转成功页
session.setAttribute("id",uname) ; // 保存session属性
%> <h1>登录成功,欢迎您的光临,2秒后跳转到欢迎页!</h1>
<% } else { // 认证失败
response.setHeader("refresh","2;url=login.jsp?error=err") ; // 跳转失败页
%> <h1>登录失败,请重新登录,2秒后跳转回登录页!</h1>
<% } %>
3) success.jsp
<%@ page pageEncoding="UTF-8"%>
<%
if (session.getAttribute("id") != null) { // session检查
%>
<img src="images/yootk.png" style="width: 200px;"><br><h1>欢迎薛荣慧进入本系统,请认真学习,<a href="logout.jsp">系统注销</a>!</h1>
<%
} else {
response.setHeader("refresh","2;url=login.jsp") ; // 页面跳转
%>
<h1>非法用户,不允许进行程序访问!</h1>
<% } %>
2.运行结果截图
1) 显示“登录成功,2秒钟后跳转到系统页面”
2) 显示“验证失败,2秒钟后返回到登录页面”
3) 显示“用户名或密码有误,请重新输入”信息的登录页面
4)显示“非法登录,2秒钟后返回登录页面”
5)显示“欢迎xxx进入本系统!”
三、实验心得体会
本次实验通过上机自己学习JSP页面的响应和联系,让我对Javaweb有了更进一步的了解,同时学会了如何通过eclipse进行页面代码编写,实验中遇到了大大小小的问题,最重要的就是一定要记得转换字符UTF-8,不然就会出现乱码。刚开始学习Javaweb时,就觉得这应该是比较复杂的。看到老师在课上运行,在浏览器能够出现网页,感觉好难,自己上手试一遍发现也没有那么难,这门课程一定要多学多练才行。