实验目的
•掌握JSP的基本构成
•掌握JSP的指令、动作标签
•掌握J SP内置对象的使用等
实验环境
•Chrome
•vscode
•Eclipse
•Tomcat
实验内容
- 利用JSP全部变量和JSP的内置对象分别为某一网站编写一个JSP程序,统计该网站的访问次数。重点理解JSP内置对象的作用域范围。(可参考如下的运行结果)
图1. 统计网站访问次数的举例
(下面给出相应代码和实现的截图)
如index.jsp: ***
- 编写一个JSP登录页面,可输入用户名和密码,提交请求到另一个JSP页面,该JSP页面获取请求的相关数据并显示出来。请求的相关数据包括用户输入的请求数据和请求本身的一些信息(请求使用的协议getProtocol()、请求的URIrequest.getServletPath()、请求方法request.getMethod()、远程地址request.getRemoteAddr())。同时将用户名信息添加到浏览器的cookie中,一旦再次访问登录页面将在用户名框中自动填写cookie中的用户名。(可参考如下的运行结果)
图2. 第一次访问登录页面的情况(cookie中无信息)
图3. 登录页面提交信息后跳转到的新页面显示的情况
图4. 再次访问登录页面的情况(由cookie中读取保存的用户名)
(下面给出相应代码和实现的截图)
如login.jsp: ***
Loginsuccess.jsp: ***
实验步骤
1.之前在自己博客用过百度统计的网站分析工具,其中就有网页访问次数,这个实验应该也是做相似的内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <%@ page language="java" contentType="text/html; charset=UFT-8" pageEncoding="UFT-8"%> <!DOCTYPE html> <html> <head> <meta charset="UFT-8"> <title>Insert title here</title> </head> <body> <% if (application.getAttribute("count") == null) { application.setAttribute("count", new Integer(0)); } Integer count = (Integer) application.getAttribute("count"); application .setAttribute("count", new Integer(count.intValue() + 1)); count = (Integer) application.getAttribute("count"); %> <div> 这是第<%=count.intValue()%>个访问者! </div> </body> </html>
|
statistic.jsp
2.登录注册
index.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>登录</title>
</head> <body> <% String account=""; String pwd=""; Cookie[] cookies=request.getCookies(); if(cookies!=null&&cookies.length>0) { for(Cookie c:cookies){ if(c.getName().equals("account")){ account=c.getValue(); } if(c.getName().equals("pwd")){ pwd=c.getValue(); } if(c.getName().equals("account")){ request.setAttribute("flag", 1); request.getRequestDispatcher("show.jsp").forward(request, response); } } } %>
<form name="logmes" action="show.jsp" method="post"> 账号<input type="text" name="account" value="<%=account%>"><br> 密码<input type="password" name="pwd" value="<%=pwd%>"><br> <input type="submit" value="登录"> 是否保存登录状态<input name="log" type="radio" value="yes">是 <input name="log" type="radio" value="no">否
</form> </body> </html>
|
show.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>欢迎页面</title> </head> <body> <% Integer f=(Integer)request.getAttribute("flag"); String log=" "; log=request.getParameter("log"); if(log!=null&&log.equals("yes")){ String account=request.getParameter("account"); String pwd=request.getParameter("pwd"); Cookie cookie1=new Cookie("account",account); Cookie cookie2=new Cookie("pwd",pwd); cookie1.setMaxAge(600*24); cookie2.setMaxAge(600*24); response.addCookie(cookie1); response.addCookie(cookie2); } if(f==null){ System.out.println("123"); Cookie cookies[]=request.getCookies(); for(int i=0;i<cookies.length;i++) { cookies[i].setMaxAge(0); response.addCookie(cookies[i]); } response.sendRedirect("index.jsp"); } %> <div> 登录成功 </div> <body> <% if (application.getAttribute("count") == null) { application.setAttribute("count", new Integer(0)); } Integer count = (Integer) application.getAttribute("count"); application .setAttribute("count", new Integer(count.intValue() + 1)); count = (Integer) application.getAttribute("count"); %> <div> 这是第<%=count.intValue()%>个访问者! </div> </body> </html>
|
清除cookies
集成前两个题目
实验心得
Cookies是存储在客户机的文本文件,它们保存了大量轨迹信息。在servlet技术基础上,JSP显然能够提供对HTTP cookies的支持。
通常有三个步骤来识别回头客:
服务器脚本发送一系列cookies至浏览器。比如名字,年龄,ID号码等等。
浏览器在本地机中存储这些信息,以备不时之需。
当下一次浏览器发送任何请求至服务器时,它会同时将这些cookies信息发送给服务器,然后服务器使用这些信息来识别用户或者干些其它事情。
之前都是用django搭配vue写得前后台交互,没接触过java后台,这个实验也让我对cookies有了更好的了解,为后面的数据池Durid做了铺垫
本文使用 CC BY-NC-SA 3.0 中国大陆 协议许可
具体请参见 知识共享协议
本文链接:https://zyhang8.github.io/2019/11/05/javaweb-exp3/