利用Session完成用户的登录和注销
- 格式:docx
- 大小:60.35 KB
- 文档页数:10
登录session的用法一、什么是登录session在Web开发中,session是一种用来存储用户信息的机制。
当用户登录网站时,系统会为其创建一个session,并为该session分配一个唯一的标识符(session ID),该标识符通常存储在cookie中。
用户通过该标识符可以在访问网站的不同页面之间保持状态,并存储登录信息、购物车内容等。
二、session的工作原理1.用户访问网站:当用户访问网站时,服务器会为该用户创建一个session,并生成一个唯一的session ID。
2.session ID的传递:服务器通过响应头将session ID发送给客户端,通常是通过Set-Cookie头部字段将session ID存储到cookie中。
3.服务器端存储:服务器将session ID与相应的用户信息存储在服务器端的session存储区中,通常是在内存或数据库中。
4.客户端请求:在用户的后续请求中,客户端会通过Cookie头部字段将之前存储的session ID发送给服务器。
5.服务器端验证:服务器接收到客户端请求后,通过session ID获取对应的session信息,并验证用户的登录状态。
6.用户数据处理:服务器根据session信息,处理用户的请求,并将结果返回给客户端。
三、登录session的使用场景使用登录session可以实现以下常见的功能:1. 用户身份认证当用户登录网站时,系统会验证用户的用户名和密码。
如果验证成功,则将用户的登录状态存储在session中,以便在后续的请求中验证用户的身份。
2. 用户权限管理通过session可以方便地管理用户的权限。
系统可以根据用户的登录状态和权限级别,限制用户对某些功能和资源的访问。
同时,系统可以在session中存储用户的权限信息,以便在后续的请求中进行权限验证。
3. 购物车功能在电商网站中,用户可以将商品添加到购物车中,并在结算时进行支付。
session对象模拟用户登录实验总结在模拟用户登录实验中,session对象扮演着重要的角色。
Session对象是Web应用程序中用于跟踪用户会话的一种机制。
它通过在服务器上存储用户数据,使应用程序能够识别用户的身份并保持用户的会话状态。
实验过程:1. 创建session对象:在Web应用程序中,当用户首次访问页面时,服务器会创建一个session对象,并为其分配一个唯一的session ID。
这个ID通常以cookie的形式发送给用户的浏览器,以便在以后的请求中识别用户。
2. 存储用户数据:通过session对象,可以在服务器端存储有关用户的信息。
例如,可以将用户登录时提交的用户名和密码存储在session中,以便在以后的请求中进行身份验证。
3. 识别用户:当用户进行登录操作时,服务器将验证用户的凭证(例如用户名和密码)。
如果验证通过,则将用户的登录状态保存在session中。
这样,在以后的请求中,服务器可以通过session ID来识别用户,并获取存储在session中的用户数据。
4. 保持会话状态:通过session对象,可以在多个页面之间保持用户的会话状态。
例如,当用户在购物车中添加商品时,可以将商品信息存储在session中。
当用户继续浏览其他页面或进行其他操作时,可以从session 中获取商品信息,以保持购物车的状态。
实验总结:通过模拟用户登录实验,可以深入了解session对象在Web应用程序中的作用。
Session对象是实现用户身份验证和保持会话状态的重要机制。
通过使用session对象,可以实现单点登录、购物车功能、个性化设置等功能。
然而,需要注意的是,session对象的使用也存在一些安全风险,如会话劫持和跨站请求伪造攻击。
因此,在实际应用中,应采取必要的安全措施来保护用户的数据和会话状态。
linux中session详解Session是Linux中一种重要的概念,用于管理用户与系统之间的交互会话。
本文将详细解释Session的概念和功能,在不涉及具体的http地址和公式的前提下,探讨Session的相关内容。
一、Session的概念在Linux中,Session是指用户登录系统后与系统进行交互的一段时间。
它包括了用户登录、执行命令、注销等一系列操作。
Session 的基本特征是持续性和独立性,即用户在一个Session中可以执行多个命令,并且不同用户的Session是相互独立的。
二、Session的创建和管理用户登录系统后,系统会为每个用户创建一个独立的Session。
Session的创建是由登录管理器负责的,登录管理器会验证用户的身份并分配一个唯一的Session ID。
Session ID是一个唯一的标识符,用于区分不同的Session。
Session的管理是由操作系统内核完成的。
内核会为每个Session 分配一块内存空间,用于存储Session的信息。
这些信息包括用户的身份、权限、环境变量等。
内核还会维护一个Session列表,用于记录当前系统中所有活动的Session。
三、Session的生命周期Session的生命周期可以分为三个阶段:建立阶段、运行阶段和结束阶段。
1. 建立阶段:当用户登录系统时,系统会为用户创建一个新的Session,并分配一个唯一的Session ID。
在这个阶段,系统会对用户进行身份验证,并加载用户的配置文件和环境变量。
2. 运行阶段:在这个阶段,用户可以执行各种命令和操作。
用户在一个Session中可以打开多个终端窗口,并在不同的窗口中执行不同的命令。
每个窗口都属于同一个Session,它们共享相同的环境变量和权限。
3. 结束阶段:当用户注销或断开与系统的连接时,Session会进入结束阶段。
在这个阶段,系统会清理Session的相关资源,并记录用户的注销时间和活动时间。
sessionexpiredlogin方法注:本文中sessionexpiredlogin方法是虚构的一个方法,仅用于示范目的。
目录:1. 引言2. Session过期和登录状态的关系3. Sessionexpiredlogin方法的定义和作用4. 实现Sessionexpiredlogin方法的步骤4.1. 检测Session过期4.2. 跳转至登录页4.3. 登录成功后跳转回原页面5. Sessionexpiredlogin方法的应用场景6. 总结1. 引言在互联网应用中,用户登录状态的管理是非常重要的。
当用户登录后,服务器会为其创建一个Session来维持其登录状态。
然而,Session会有一定的时效性,当用户长时间不进行操作时,Session可能会过期失效。
本文将介绍一个名为sessionexpiredlogin的方法,用于处理Session过期后的自动登录行为。
2. Session过期和登录状态的关系在大多数情况下,登录状态是建立在Session的基础上的。
当用户登录后,服务器会为其创建一个Session,并将相关的登录信息存储在其中。
随着时间的推移,如果用户在一段时间内没有进行操作,那么Session可能会过期失效。
当用户再次进行操作时,服务器将无法识别用户的身份,需要重新登录。
3. Sessionexpiredlogin方法的定义和作用sessionexpiredlogin方法是一个用于处理Session过期后的自动登录行为的方法。
它可以帮助用户在Session过期后,自动跳转至登录页面,并在登录成功后返回原始访问页面,以实现无感知的登录体验。
4. 实现Sessionexpiredlogin方法的步骤4.1. 检测Session过期首先,需要在每次用户进行操作时,判断Session是否过期。
可以通过检查Session中的时间戳或者一些特定的标志来判断。
如果发现Session已过期,那么需要执行后续操作。
登录session的用法Session是Web开发中常用的一种机制,它可以在服务器端存储用户的会话信息,从而实现跨页面或跨请求的数据共享。
在本文中,我们将深入探讨Session的用法,并介绍如何使用它来实现Web应用程序中的各种功能。
一、什么是SessionSession是Web开发中常用的一种机制,它可以在服务器端存储用户的会话信息。
当用户第一次访问Web应用程序时,服务器会为该用户创建一个唯一的Session ID,并将该ID存储在浏览器的Cookie中。
随后,每次用户发送请求时,浏览器都会自动将该Cookie发送给服务器,并且服务器可以根据该ID来获取该用户对应的Session对象。
Session对象是一个键值对集合,它可以存储任何类型的数据。
通常情况下,我们使用Session来存储与当前用户相关的信息,例如登录状态、购物车内容等等。
由于Session对象是存储在服务器端的内存中或者硬盘上,因此它可以跨页面或跨请求地共享数据。
二、使用Session1. 创建和获取Session对象要使用Session对象,首先需要获取到当前请求对应的HttpSession对象。
在JavaEE中,我们可以通过HttpServletRequest接口提供的getSession()方法来获取HttpSession对象:```HttpSession session = request.getSession();```如果当前请求已经存在一个与之对应的Session对象,则返回该对象;否则,会创建一个新的Session对象并返回。
2. 存储和获取数据一旦获取到了HttpSession对象,我们就可以使用它来存储和获取数据了。
HttpSession接口提供了以下方法来实现数据的存储和获取:```void setAttribute(String name, Object value); // 存储数据Object getAttribute(String name); // 获取数据```其中,name参数表示要存储或获取的键名,value参数表示要存储的值或者返回值。
session概念Session是计算机领域中常用的一个概念,它可以在客户端和服务器之间存储和管理信息,以便在用户的连续请求中保持状态。
本文将介绍Session的概念、工作原理、使用场景以及一些相关的安全问题。
Session是一种在Web开发中用于存储用户数据的技术。
当用户通过表单提交请求到服务器时,服务器会为当前用户创建一个唯一的Session ID,并将该ID存储在Cookie中发送回客户端。
客户端的浏览器会保存这个Cookie,并在后续的请求中将其发送给服务器。
服务器根据Session ID来查找并加载相应的Session数据。
Session的工作过程可以分为以下几个步骤:1. 创建Session:当用户首次访问服务器时,服务器会为该用户创建一个唯一的Session ID,并将相关的用户数据保存在服务器端。
2. 发送Session ID:服务器将Session ID存储在Cookie中,并将其发送给客户端。
3. 客户端保存Cookie:客户端的浏览器会保存这个Cookie,并在后续的请求中将其发送给服务器。
4. 加载Session数据:服务器根据Session ID来查找并加载相应的Session数据。
服务器可以根据需要在Session中存储和读取数据。
5. 更新Session数据:服务器可以在用户请求的处理过程中更新Session数据,以保持最新的状态。
6. 销毁Session:当用户关闭浏览器或长时间不操作时,服务器可以销毁对应的Session数据。
Session的使用场景很广泛,下面列举了一些常见的应用场景:1. 用户认证:在用户登录认证过程中,可以使用Session来保存用户的登录状态和相关信息,以便在后续的请求中进行验证。
2. 购物车功能:在电商网站中,用户可以将商品添加到购物车中,并在结算时候使用Session保存购物车的信息。
3. 在线支付:在用户进行在线支付时,可以使用Session来保存订单相关的数据,在支付完成后清除相关数据,确保数据的安全性。
销毁session的方法在Web开发中,Session是一种存储在服务器端的一组数据,可以通过客户端的Cookie或URL参数进行访问。
一般来说,Session 会在用户登录时创建,用于存储用户的登录信息和相关状态数据,方便后续的访问和验证。
然而,当用户退出登录或者会话过期时,应该及时销毁Session以避免安全问题。
以下是几种常见的销毁Session的方法:1. 调用Session.invalidate()方法:该方法可以立即销毁当前Session中的所有数据,并释放所有相关资源。
例如,在用户退出登录时,可以调用该方法清空Session:```request.getSession().invalidate();```2. 设置Session超时时间:可以通过设置Session的最大存活时间来控制Session的自动销毁。
例如,设置Session在30分钟内没有活动就自动销毁:```session.setMaxInactiveInterval(1800); // 30 minutes```3. 使用Filter过滤器:可以使用Filter过滤器来拦截所有请求,检查Session是否过期或是否需要销毁。
例如,可以编写一个过滤器,在用户访问任何页面时检查Session是否过期,如果过期则立即销毁:```public class SessionFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletRequest httpRequest = (HttpServletRequest) request;HttpSession session = httpRequest.getSession(false);if (session != null && !session.isNew() &&session.getAttribute('user') == null) {session.invalidate();}chain.doFilter(request, response);}// ...}```总之,及时销毁Session是Web开发中非常重要的安全措施之一,应该在编写Web应用程序时予以考虑。
session用法在Web应用程序中,Session是一个重要的技术,它能够实现客户端和服务端之间的双向通信。
当用户请求网站的任何页面时,服务器会在客户端创建一个Session,并返回一个唯一的标识符给客户端。
当客户端发送一个新的请求时,它会将此标识符发送给服务器,服务器可以使用此标识符找到该请求者的Session 。
Session可以用来实现用户登录,存储购物车信息,跟踪用户状态等等。
它能够实现客户端和服务器之间双向通信,更加有效地发挥作用,而且也是安全的,因为它是在客户端保存,不会暴露服务器的安全信息。
使用Session的具体步骤如下:1.客户端发送一个请求,请求需要服务器响应一个Session ID;2.服务器创建一个新的Session,并生成一个唯一的Session ID;3.服务器将Session ID发送给客户端,客户端将此ID保存在客户端,以供以后使用;4.客户端发送一个新的请求,此请求中需要包含Session ID,以便服务器能够验证客户端;5.服务器根据Session ID查找客户端的Session,并给予响应; Session的主要作用是存储用户状态,例如用户登录状态,购物车状态等。
它可以帮助开发者保存用户的信息,从而实现有效的双向通信,而不需要客户端每次都发起新的请求,从而提高网站的用户体验。
此外,在使用Session时也需要注意一些问题,例如,要严格限制Session ID的访问权限,以避免被黑客窃取;要为每个Session 分配一个有效的期限,在超时后要及时删除;多次调用Session也会造成服务器性能的下降,所以也应该尽可能地减小对Session的调用次数。
总而言之,Session是一个非常重要的技术,它可以帮助开发者更有效地实现用户的双向通信,提高网站的用户体验。
虽然使用Session也可能带来一些安全问题,但只要正确使用,就可以有效地避免。
php session用法
Session是PHP用来处理使用者登入资料和一般变量等应用程序状态信息的一种方法.
使用Session的步骤:
1.启用Session函数
首先,在开始传送任何HTML前要启用Session的功能. 我们可以通过使用PHP的session_start() 函数来启动Session。
2.设定Session参数
一旦启动Session,我们就可以使用$_SESSION变量来设定和存取Session参数。
例如:$_SESSION['username'] 就可以设定使用者名称,
$_SESSION['password'] 就可以设定使用者密码等等。
3.取得Session参数
我们可以使用session_get_cookie_params()函数来取得Sessioncookie参数,并且使用相应的参数列来访问特定的Sessions值。
例如:$_SESSION['test']可以用来取得test变量的值。
4.销燬Session
在使用完Sessions后,我们可以使用session_destroy()函数来销燬Session,
用以释放存储器。
session会话的理解会话(session)是指在网络通信中,客户端和服务器之间建立的一种持续的交互状态。
它是为了在多次请求和响应之间维护用户的身份验证、数据传递和状态管理而设计的。
在Web开发中,会话通常用于跟踪用户的登录状态和保持用户的数据。
当用户首次访问网站时,服务器会为该用户创建一个唯一的会话标识符(session ID),并将该标识符存储在用户的浏览器中,通常以cookie的形式。
随后,用户的每个请求都会携带该会话标识符,服务器通过该标识符识别用户,并根据需要存储和检索与该用户相关的数据。
会话的主要作用是:1. 身份验证,通过会话,服务器可以跟踪用户的登录状态。
一旦用户成功登录,服务器会在会话中存储相关的身份验证信息,以便在用户的后续请求中验证其身份。
2. 数据存储,会话可以用于存储用户的临时数据,例如购物车内容、表单数据等。
服务器可以在会话中保存这些数据,并在用户的请求中读取和更新它们,从而实现数据的持久化。
3. 状态管理,会话还可以用于管理用户的状态。
例如,在多个页面之间共享用户的偏好设置或应用程序的配置信息,服务器可以使用会话来存储和传递这些状态。
4. 安全性,会话可以增强应用程序的安全性。
通过使用会话标识符,服务器可以防止跨站请求伪造(CSRF)攻击,因为攻击者无法伪造有效的会话标识符。
需要注意的是,会话的实现方式可以有多种。
常见的方式包括基于cookie的会话和基于URL重写的会话。
无论采用何种方式,会话都需要在客户端和服务器之间进行数据的传递和存储,因此需要一定的网络带宽和服务器资源。
总结起来,会话是一种用于跟踪用户状态、存储数据和管理状态的机制。
它在Web开发中起着重要的作用,提供了便捷的用户体验和数据管理方式。
利用Session完成用户的登录和注销用户的登录和注销是最常见的Web应用案例,当一个应用的客户登录了以后,其他所有的会话都得知道这个用户已经登录还很有可能得提取用户的昵称予以显示等等,所以,只有把登录成功的用户的信息放入到Session中才能够办到使所有的Servlet都能访问到用户的登录状态,下面把这个案例放上来。
第一是登录的界面,是HTML的一个表单,非常的简单[html]view plaincopy1.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd">2.<html>3.<head>4.<meta http-equiv="Content-Type"content="text/html; charset=UTF-8">5.<title>登陆界面</title>6.</head>7.<body>8.<form action="/Web/servlet/LoginServlet"method="post">9.帐号:<input type="text"name="username"><br>10.密码:<input type="password"name="password"><br>11.<input type="submit"value="登录">12.</form>13.</body>14.</html>[html]view plain copy1.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w/TR/html4/loose.dtd">2.<html>3.<head>4.<meta http-equiv="Content-Type"content="text/html; charset=UTF-8">5.<title>登陆界面</title>6.</head>7.<body>8.<form action="/Web/servlet/LoginServlet"method="post">9.帐号:<input type="text"name="username"><br>10.密码:<input type="password"name="password"><br>11.<input type="submit"value="登录">12.</form>13.</body>14.</html>第二是处理登录信息的LoginServlet[java]view plaincopy1.package com.bird.login;2.3.import java.io.IOException;4.import java.io.PrintWriter;5.import java.util.ArrayList;6.import java.util.List;7.8.import javax.servlet.ServletException;9.import javax.servlet.http.HttpServlet;10.import javax.servlet.http.HttpServletRequest;11.import javax.servlet.http.HttpServletResponse;12.13.public class LoginServlet extends HttpServlet {14.15./**16.* @category 使用Session处理用户登陆17.* @author Bird18.*/19.private static final long serialVersionUID = 1L;20.21.public void doGet(HttpServletRequest request, HttpServletResponse response)22.throws ServletException, IOException {23.response.setCharacterEncoding("UTF-8");24.response.setContentType("text/html;charset=UTF-8");25.PrintWriter out = response.getWriter();26.27.String username = request.getParameter("username");28.String password = request.getParameter("password");29.30.List<User> list = Db.getAll();31.for(User u: list){32.if(u.getUsername().equals(username) && u.getPassword().equals(password)){33.request.getSession().setAttribute("user", u);//登录成功,将用户数据放入到Session中34.response.sendRedirect("/Web/index.jsp");35.return;//进行重定向,并且下面的代码不再执行36.}37.}39.out.write("您的应户名或密码错误");40.}41.42.public void doPost(HttpServletRequest request, HttpServletResponse response)43.throws ServletException, IOException {44.doGet(request,response);45.}46.47.}48.49.class Db{50.public static List<User> list = new ArrayList<User>();51.static{52.list.add(new User("aaa","123"));53.list.add(new User("bbb","123"));54.list.add(new User("ccc","123"));55.}56.57.public static List<User> getAll(){58.return list;59.}60.}[java]view plain copy1.package com.bird.login;2.3.import java.io.IOException;4.import java.io.PrintWriter;5.import java.util.ArrayList;6.import java.util.List;7.8.import javax.servlet.ServletException;9.import javax.servlet.http.HttpServlet;10.import javax.servlet.http.HttpServletRequest;11.import javax.servlet.http.HttpServletResponse;12.13.public class LoginServlet extends HttpServlet {14.15./**16. * @category 使用Session处理用户登陆17. * @author Bird18. */19.private static final long serialVersionUID = 1L;21.public void doGet(HttpServletRequest request, HttpServletResponse response)22.throws ServletException, IOException {23. response.setCharacterEncoding("UTF-8");24. response.setContentType("text/html;charset=UTF-8");25. PrintWriter out = response.getWriter();26.27. String username = request.getParameter("username");28. String password = request.getParameter("password");29.30. List<User> list = Db.getAll();31.for(User u: list){32.if(u.getUsername().equals(username) && u.getPassword().equals(password)){33. request.getSession().setAttribute("user", u);//登录成功,将用户数据放入到Session中34. response.sendRedirect("/Web/index.jsp");35.return;//进行重定向,并且下面的代码不再执行36. }37. }38.39. out.write("您的应户名或密码错误");40. }41.42.public void doPost(HttpServletRequest request, HttpServletResponse response)43.throws ServletException, IOException {44. doGet(request,response);45. }46.47.}48.49.class Db{50.public static List<User> list = new ArrayList<User>();51.static{52. list.add(new User("aaa","123"));53. list.add(new User("bbb","123"));54. list.add(new User("ccc","123"));55. }56.57.public static List<User> getAll(){58.return list;59. }第三,用户的信息封装在User对象中[java]view plaincopy1.package com.bird.login;2.3./**4.* @category 封装用户的数据的对象5.* @author Bird6.*7.*/8.public class User {9.private String username;10.private String password;11.12.13.public User() {14.15.}16.public User(String username, String password) {17.ername = username;19.this.password = password;20.}21.public String getUsername() {22.return username;23.}24.public void setUsername(String username) {ername = username;26.}27.public String getPassword() {28.return password;29.}30.public void setPassword(String password) {31.this.password = password;32.}33.}[java]view plain copy1.package com.bird.login;2.4. * @category 封装用户的数据的对象5. * @author Bird6. *7. */8.public class User {9.private String username;10.private String password;11.12.13.public User() {14.15. }16.public User(String username, String password) {17.ername = username;19.this.password = password;20. }21.public String getUsername() {22.return username;23. }24.public void setUsername(String username) {ername = username;26. }27.public String getPassword() {28.return password;29. }30.public void setPassword(String password) {31.this.password = password;32. }33.}第四是处理用户注销的Servlet[java]view plaincopy1.package com.bird.login;2.3.import java.io.IOException;4.5.import javax.servlet.ServletException;6.import javax.servlet.http.HttpServlet;7.import javax.servlet.http.HttpServletRequest;8.import javax.servlet.http.HttpServletResponse;9.import javax.servlet.http.HttpSession;10.11.public class LoginOutServlet extends HttpServlet {12.13./**14.* @category 退出登录的Servlet,注销15.* @author Bird16.*/17.private static final long serialVersionUID = 1L;18.19.public void doGet(HttpServletRequest request, HttpServletResponse response)20.throws ServletException, IOException {21.HttpSession session = request.getSession(false);//防止创建Session22.if(session == null){23.response.sendRedirect("/Web/index.jsp");24.return;25.}26.27.session.removeAttribute("user");28.response.sendRedirect("/Web/index.jsp");29.}30.31.public void doPost(HttpServletRequest request, HttpServletResponse response)32.throws ServletException, IOException {33.34.}35.36.}[java]view plain copy1.package com.bird.login;2.3.import java.io.IOException;4.5.import javax.servlet.ServletException;6.import javax.servlet.http.HttpServlet;7.import javax.servlet.http.HttpServletRequest;8.import javax.servlet.http.HttpServletResponse;9.import javax.servlet.http.HttpSession;10.11.public class LoginOutServlet extends HttpServlet {12.13./**14. * @category 退出登录的Servlet,注销15. * @author Bird16. */17.private static final long serialVersionUID = 1L;18.19.public void doGet(HttpServletRequest request, HttpServletResponse response)20.throws ServletException, IOException {21. HttpSession session = request.getSession(false);//防止创建Session22.if(session == null){23. response.sendRedirect("/Web/index.jsp");24.return;25. }26.27. session.removeAttribute("user");28. response.sendRedirect("/Web/index.jsp");29. }30.31.public void doPost(HttpServletRequest request, HttpServletResponse response)32.throws ServletException, IOException {33.34. }35.36.}第五是最终的显示界面[html]view plaincopy1.<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>2.3.4.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">5.<html>6.<head>7.8.9.<title>My JSP 'index.jsp' starting page</title>10.11.</head>12.13.<body>14.欢迎您,${ername} <br>15.<a href="/Web/servlet/LoginOutServlet">退出登录</a>16.</body>17.</html>[html]view plain copy1.<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>2.3.4.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">5.<html>6.<head>7.8.9.<title>My JSP 'index.jsp' starting page</title>10.11.</head>12.13.<body>14.欢迎您,${ername} <br>15.<a href="/Web/servlet/LoginOutServlet">退出登录</a>16.</body>17.</html>效果如下登录成功后注销后。