首页 > 其他分享 >会话管理技术实战(用户登录案例)

会话管理技术实战(用户登录案例)

时间:2023-02-13 15:07:19浏览次数:38  
标签:实战 http 登录 request javax 会话 import servlet response


会话管理技术实战(用户登录案例)_用户名

[1].创建一个User类,封装用户名和密码。
[2].提供一个首页面,欢迎用户登录:IndexServlet,提供一个退出的链接。
[3].提供一个登录的Servlet:处理登录请求。
[4].提供一个退出的Servlet:处理退出首页面的功能。

登录界面:login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/chapter05/LoginServlet" method="post">
用户名:<input type="text" name="username"><br/>
密码: <input type="password" name="password"/><br/>
<input type="submit" value="提交" id="bt"/>
</form>
</body>
</html>

User.java:

package cn.itcast.chapter05.example02;
/*
* alt+shift+a:一次性写多行代码
*/
public class User {
private String name;
private String password;
public User() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

LoginServlet.java(login.html表单的数据提交到了这里)

package cn.itcast.chapter05.example02;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
* Servlet implementation class LoginServlet
*/
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//1.获取用户名和密码
String name=request.getParameter("username");
String psw=request.getParameter("password");
// System.out.println("username="+name+"password="+psw);
//2.判断用户名和密码是否正确 用户名是传智播客 密码是123,就认为是正确的
if("传智播客".equals(name)&&"123".equals(psw)) {
//这里本应查数据库,代码量会更大,暂时模拟一下
//登陆成功,跳转到主页面,保存用户信息
User u=new User();
u.setName(name);
u.setPassword(psw);
HttpSession session=request.getSession();
session.setAttribute("key",u);
//自己创建cookie,让session使用自己的cookie,不用默认cookie
Cookie c=new Cookie("JESSIONID",session.getId());
c.setMaxAge(3600*24*7);
c.setPath("/chapter05");
response.sendRedirect("/chapter05/index");
}else {
//登录失败
response.getWriter().print("用户名和密码错误,登陆失败!");
}



}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}

IndexServlet.java(登陆成功之后的显示界面)

package cn.itcast.chapter05.example02;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
* Servlet implementation class IndexServlet
*/
public class IndexServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//用来欢迎用户登录,并且显示用户信息
response.setContentType("text/html;charset=utf-8");
//1.获取用户信息
HttpSession session=request.getSession();
User user=(User)session.getAttribute("key");
//2.判断用户是否存在
if(user==null) {//用户不存在,也就是用户根本没有登录
response.sendRedirect("/chapter05/login.html");
}else {
String name=user.getName();
String url="<a href='/chapter05/logOut'>退出</a>";
response.getWriter().print("欢迎您: "+name+" 登录本网站 "+url);
}
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}

退出界面:LogOutServlet.java(销毁session)

package cn.itcast.chapter05.example02;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
* 退出功能
*/
public class LogOutServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//清空session
HttpSession session=request.getSession();
session.removeAttribute("key");
session.invalidate();
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}

运行服务器之后:

1.现在login.html中输入正确的用户名和密码(用户名输入“传智播客”,密码输入"123")

会话管理技术实战(用户登录案例)_用户名_02


2.点击提交按钮之后

会话管理技术实战(用户登录案例)_cookie_03

3.点击退出按钮之后会跳转到LogOutServlet(这个页面功能是销毁session)

会话管理技术实战(用户登录案例)_cookie_04


标签:实战,http,登录,request,javax,会话,import,servlet,response
From: https://blog.51cto.com/u_15961549/6054129

相关文章

  • 会话管理技术实战(购物车案例)
    会话管理技术实战(购物车案例)**[1].创建Book封装图书信息:Book[2].创建BookDB,模拟数据库,里面是保存图书[3].提供图书的购买页面:ListBookServlet[4].添加购物车功能:Pu......
  • 会话及管理技术
    第五章会话以及会话管理技术1.会话概述:什么是会话:从打开浏览器,到访问网页,到最终关闭浏览器,整个过程就是一次会话。会话的特点:包含多个请求,一次完整的会话对应一个用户。......
  • 从原理到实战,彻底搞懂Nginx
    什么是Nginx?Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、FreeBSD、Solaris、MacOSX、AIX以及MicrosoftWindows。Nginx有自己的函数库,......
  • mac端忘记mysql登录密码,进行密码重置
    一、mac--系统偏好设置,找到最下方的mysql,点击关闭。二、点击stop命令或者在终端输入命令行,选择其中一个即可:sudo/usr/local/mysql/support-files/mysql.serverstop......
  • docker实战(8)使用docker-compose快速搭建zookeeper集群
    镜像下载dockerpullzookeeper复制zookeeper集群的搭建创建名为docker-compose.yml的文件输入以下内容version:'2'services:zk1:image:zookeeperrestart:......
  • HiveSQL 工作实战总结
    记录一些工作中有意思的统计指标,当然做过一些简化方便大家阅读,后续会不断更新,欢迎关注追踪~问题类型连续问题两种思路第一种:日期减去一列数字得出日期相同,主要是通过......
  • 点击登录
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Docu......
  • Docker-Compose实战<上篇>
    1什么是docker-compose?Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YML文件来配置应用程序需要的所有服务。然后,使用一个命令,就......
  • PDM——Windchill 记录用户登录系统
    方一:D:\ptc\Windchill_10.1\Apache\logs\access.log在网上找一个软件分析一下Apache的access.log日志,那里有记录用户的登录时间、IP等信息 方二:站点---实用程序---安......
  • 读Java实战(第二版)笔记08_默认方法
    1. 兼容性1.1. 二进制级的兼容性1.1.1. 只要不重新编译该类,即使不实现新的方法,现有类的实现依旧可以运行1.1.2. 现有的二进制执行文件能无缝持续链接(包括验证、准......