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

[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")

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


2.点击提交按钮之后

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

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

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