问题?首先我们知道,在我们登录网站的时候,点击一个又一个链接,但是用户显示依然存在,这是为什么呢,网站又是如何识别的呢?那怎么来做这个效果呢?接下来用一个例子及原理为大家说明。
原理:session的用法,当我们登陆验证成功后就在session中写一个标记,等点击链接的时候就会一直识别是否有这个标记。
HttpSession概述及原理探讨
得到HttpSession对象:
HttpServletRequest.getSession():根据特殊Cookie(JSESSIONID=HttpSession对象的id,由服务器生成,唯一的)的取值,在服务器的内存中根据id查找这个HttpSession对象,找到了,取出来继续服务;没有找到,创建一个新的HttpSession对象。
第一步:建立jsp或者html页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'Login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<!-- 该函数无法执行的话,可能是没有通知浏览器不要缓存的原因 -->
<script type="text/javascript">
function toreal(){
document.location.href="Login.jsp";
}
</script>
<body>
<form action="/day08/servlet/LandingServlet" method="post"> <br>
用 户 名:<input type="text" name="username"> <br>
密 码:<input type="password" name="password"> <br>
<input type="text" name="code">
<img alt="验证码" src="/day08/servlet/ImageServlet"><!-- 内部自动发送请求<span style="white-space:pre"> </span>,加载验证码 -->
<a href="javascript:toreal()">看不清</a><br/>