实验二 服务器端简单程序设计
一、实验目的
通过一个小型网站的开发,掌握JSP基础知识,加深对session,request,response,cookie等对象的理解,掌握其使用方法,进一步深入掌握HTML、CSS和JavaScript等知识。
二、实验内容和基本要求
1) 编写index.jsp文件,展示某一类物品或知识的介绍,可以是歌曲、人物、名胜古迹等。要求至少有三个条目,用户登录后才能浏览这三个条目的内容。如果用户尚未登录,需要显示用户为“游客”,否则显示用户名。页面下端设置超链接,指向login.jsp。如果用户尚未登录,单击了某一条目的内容,则系统自动转向login.jsp。
2) 编写login.jsp文件,该页面包含一个表单,表单中有两个input标记,分别让用户输入用户名和密码,还有一个登录按钮。当用户单击“登录”后,将表单数据以post的方式提交给check.jsp。
3) 编写check.jsp,该页面使用request对象获取客户端发送过来的用户名和密码,并对用户的合法性进行验证。如果用户输入的用户名和密码不相同,则提示用户登录失败,2秒钟之后自动转向login.jsp页面。如果用户输入的用户名和密码相同,则提示用户登录成功,2秒钟之后转入登录前页面。(提示:登录前页面的记录可以在用户单击的每个网页中,使用session对象的某个属性记录用户访问的当前网页)。
4) 编写三个条目的内容网页。每个网页的上端都需要展示登录的用户名。下端需要“回到首页”的超链接。这三个条目的内容网页只有用户登录后才能浏览。
5) 当用户合法登录后,客户端保留5分钟的Cookie。当用户关闭浏览器后,5分钟之内再次访问时可以免登陆。
6) 将网页源代码和浏览器截图写入实验报告。
三、实验步骤
浏览器截图:
代码:
1.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.*" %>
<%@ page session="true" %>
<!DOCTYPE html>
<html>
<head>
<title>学长介绍</title>
</head>
<body>
<%
String username = (String) session.getAttribute("username");
if(username == null) {
username = "游客";
}
%>
<h1>你好,<%= username %>!</h1>
<ul>
<li><a href="song1.jsp">蒲熠星</a></li>
<li><a href="song2.jsp">石凯</a></li>
<li><a href="song3.jsp">郭文韬</a></li>
</ul>
<a href="login.jsp">登录</a>
</body>
</html>
2.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.*" %>
<%@ page session="true" %>
<!DOCTYPE html>
<html>
<head>
<title>验证结果</title>
</head>
<body>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
if(username != null && password != null && username.equals(password)) {
session.setAttribute("username", username);
Cookie loginCookie = new Cookie("username", username);
loginCookie.setMaxAge(300); // 设置Cookie持续时间为5分钟
response.addCookie(loginCookie);
String lastPage = request.getParameter("lastPage");
if (lastPage == null || lastPage.trim().isEmpty()) {
lastPage = "index.jsp"; // 默认页面
}
response.sendRedirect(lastPage); // 重定向到原试图访问的页面
return;
} else {
out.print("登录失败,用户名和密码不匹配!");
response.setHeader("Refresh", "2; URL=login.jsp");
}
%>
</body>
</html>
3.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.*" %>
<%@ page session="true" %>
<!DOCTYPE html>
<html>
<head>
<title>登录</title>
</head>
<body>
<%
String username = (String) session.getAttribute("username");
if(username == null) {
username = "游客";
}
%>
<h1>你好,<%= username %>!</h1>
<form action="check.jsp" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<!-- 添加隐藏字段保存最后页面 -->
<input type="hidden" name="lastPage" value="<%= session.getAttribute("lastPage") != null ? session.getAttribute("lastPage").toString() : "index.jsp" %>">
<input type="submit" value="登录">
</form>
</body>
</html>
4.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.*" %>
<%@ page session="true" %>
<!DOCTYPE html>
<html>
<head>
<title>蒲熠星</title>
</head>
<body>
<%
if (session.getAttribute("username") == null) {
session.setAttribute("lastPage", request.getRequestURI()); // 保存试图访问的页面
response.sendRedirect("login.jsp");
return;
}
String username = null; // 初始化用户名为null
if (session.getAttribute("username") != null) {
username = session.getAttribute("username").toString();
} else {
response.sendRedirect("login.jsp");
return; // 重要:在重定向后调用 return,防止继续执行后续代码
}
%>
<h1>欢迎, <%= username != null ? username : "游客" %>!</h1>
<h2>蒲熠星的详细介绍</h2>
<p>蒲熠星,1994年4月20日出生于四川省绵阳市,中国内地男游戏主播、演员、影评人、作家,本科毕业于南京大学,硕士毕业于约翰斯·霍普金斯大学。
2014年,参加CETV-1全国大学生益智节目《天才知道》南京大学专场赛 ,最终获得全国第4名。
2015年,参加CCTV-6电影益智青春真人秀节目《电影新青年》。
2016年,参加江苏卫视答题闯关类电视节目《一站到底》,成功守擂6期。
2017年,参加《一站到底》五年巅峰会,成为最终胜者,并获得“战神之神”称号。
2018-2023,参加芒果多部综艺。
2023年,作为导演拍摄记录片《卡车维修技术与猫》。
2023年8月,出版长篇悬疑小说《有人自林中坠落》,该书入选央视网年度荐书盛典文学类推荐书单。
2024年,发布新歌,开始参加音乐节。</p>
<a href="index.jsp">回到首页</a>
</body>
</html>
5.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.*" %>
<%@ page session="true" %>
<!DOCTYPE html>
<html>
<head>
<title>石凯</title>
</head>
<body>
<%
if (session.getAttribute("username") == null) {
session.setAttribute("lastPage", request.getRequestURI()); // 保存试图访问的页面
response.sendRedirect("login.jsp");
return;
}
String username = null; // 初始化用户名为null
if (session.getAttribute("username") != null) {
username = session.getAttribute("username").toString();
} else {
response.sendRedirect("login.jsp");
return; // 重要:在重定向后调用 return,防止继续执行后续代码
}
%>
<h1>欢迎, <%= username != null ? username : "游客" %>!</h1>
<h2>石凯的详细介绍</h2>
<p>石凯,1999年12月14日出生于湖南省岳阳市,中国内地男歌手、影视演员,毕业于四川师范大学 。
2018年11月,以演唱成员的身份参加湖南卫视声乐演唱节目《声入人心第一季》 出道。
2019年3月,推出个人首支数字单曲《麋鹿王》,跨出了他擅长的美声领域,在旋律上充满着符合青春气质的轻快明亮。
11月,以“名侦探学院学员”的身份参加益智成长真人秀《明星大侦探之名侦探学院第一季》,后成为该节目的固定嘉宾。
2020年6月3日,发行参与作词并演唱的益智成长真人秀节目《明星大侦探之名侦探学院》主题曲《NO.1——南波万》。
7月29日参加芒果实景密室逃脱真人秀《密室大逃脱大神版第二季》,之后又接连录制了该节目的第三至第五季。
4月15日,发布个人单曲《纸面战场》。
2022年,相继发布个人单曲《独家听众》《YOU》《终场表演》《别明天就现在》 。
2023年9月30日,石凯开启“K计划”个人巡演长沙站。
2023年11月30日,石凯发布新专辑先行曲《数星一整夜》。
12月14日,发布单曲《没留住你》。
2024年1月30日,发布个人单曲《风》。</p>
<a href="index.jsp">回到首页</a>
</body>
</html>
6.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.*" %>
<%@ page session="true" %>
<!DOCTYPE html>
<html>
<head>
<title>郭文韬</title>
</head>
<body>
<%
if (session.getAttribute("username") == null) {
session.setAttribute("lastPage", request.getRequestURI()); // 保存试图访问的页面
response.sendRedirect("login.jsp");
return;
}
String username = null; // 初始化用户名为null
if (session.getAttribute("username") != null) {
username = session.getAttribute("username").toString();
} else {
response.sendRedirect("login.jsp");
return; // 重要:在重定向后调用 return,防止继续执行后续代码
}
%>
<h1>欢迎, <%= username != null ? username : "游客" %>!</h1>
<h2>郭文韬的详细介绍</h2>
<p>郭文韬,1994年4月10日出生于青海西宁大通县,中国内地男演员,毕业于北京大学光华管理学院。
他2012年以671分的高考总分获得青海省高考理科状元,毕业后主演了微电影《少城旧事》《浮尘弥漫》及《赵姑娘》。
2017年作为“北大站队”队员参加江苏卫视答题闯关类电视节目《一站到底》世界名校争霸赛。
2024年4月12日,发行单曲《勇敢的人先享受世界》。</p>
<a href="index.jsp">回到首页</a>
</body>
</html>
四、心得体会
通过本次实验,完成这个JSP实验后,我对于Web开发中的关键概念和技术有了更深入的理解。通过实际的开发实践,更加深入地理解了JSP(JavaServer Pages)的基本原理和用法。实验中频繁使用到了session、request、response、cookie等对象,这些是Web开发中非常常用的对象。学会了如何使用它们来传递数据、管理用户会话以及实现用户认证功能。加强了对HTML、CSS和JavaScript等前端技术的应用能力,使页面更加美观、交互更加友好。实验要求用户登录后才能查看特定内容,这就涉及到了用户认证和会话管理。我意识到了在实际的Web开发中,保护用户隐私和安全是非常重要的,同时也需要提供良好的用户体验。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!