前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >会话管理技术实战(用户登录案例)

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

作者头像
别团等shy哥发育
发布2023-02-27 10:12:40
3990
发布2023-02-27 10:12:40
举报
文章被收录于专栏:全栈开发那些事
在这里插入图片描述
在这里插入图片描述

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

登录界面:login.html

代码语言:javascript
复制
<!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:

代码语言:javascript
复制
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表单的数据提交到了这里)

代码语言:javascript
复制
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(登陆成功之后的显示界面)

代码语言:javascript
复制
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)

代码语言:javascript
复制
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")

在这里插入图片描述
在这里插入图片描述

2.点击提交按钮之后

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档