session登录和退出

session登录和退出

用户登录存到session中整个会话都可以访问到,退出清楚session域中的值

页面代码

在WebContent下创建一个login文件夹在login文件夹中创建login.jsp、main.jsp、other.jsp。

login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页</title>
</head>
<body>
	
	<!-- 相对路径 -->
	<!-- <form action="../LoginServlet" method="post"> -->
	
	<!-- 绝对路径 -->
	<form action="/11_session/LoginServlet" method="post">
		<p>账号:<input type="text" name="username" /></p>
		<p>密码:<input type="password" name="password" /></p>
		<p>
			<!-- <input type="checkbox" name="rememberMe" />记住密码 -->
			<input type="submit" value="登录" />
		</p>
	</form>

</body>
</html>
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>主页</title>
</head>
<body>
	
	<div>
		<span style="float: left;">${user.nickName },欢迎登录</span>
		<a style="float: right; margin-right: 10px;" href="/11_session/LogoutServlet">
			退出
		</a>
		<div style="clear:both;"></div>
	</div>
	
	<br />
	<br />
	<br />
	<a href="other.jsp">其他页</a>

</body>
</html>
other.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>其他页面</title>
</head>
<body>

	<h1>${user.nickName },其他页面</h1>

	<a href="main.jsp">回到主页</a>

</body>
</html>

后台代码

后台登录代码

导jar包

commons-dbutils-1.6.jar
druid-1.1.10.jar
jstl-1.2.jar
mysql-connector-java-5.1.47.jar

创建user
package com.lanou3g.bean;

public class User {
	private Integer id;
	private String nickName;
	private String userName;
	private String password;
	private String createtime;
	public User() {
		
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getNickName() {
		return nickName;
	}
	public void setNickName(String nickName) {
		this.nickName = nickName;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getCreatetime() {
		return createtime;
	}
	public void setCreatetime(String createtime) {
		this.createtime = createtime;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", nickName=" + nickName + ", userName=" + userName + ", password=" + password
				+ ", createtime=" + createtime + "]";
	}
	
}

创建utils包

(以后utils包中的工具类就不展示代码了)
创建CookieUtil

package com.lanou3g.utils;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;

public class CookieUtil {

	/**
	 * 按照cookie的key获取对应的value
	 * @param key
	 * @param req
	 * @return
	 */
	public static String getCookieValue(String key, HttpServletRequest req) {
		Cookie cookie = getCookie(key, req);
		return cookie != null ? cookie.getValue() : null;
	}
	
	/**
	 * 按照cookie的key获取对应的cookie对象
	 * @param key
	 * @param req
	 * @return
	 */
	public static Cookie getCookie(String key, HttpServletRequest req) {
		Cookie[] cookies = req.getCookies();
		if (cookies == null) {
			return null;
		}
		for (Cookie cookie : cookies) {
			if (cookie.getName().equals(key)) {
				return cookie;
			}
		}
		return null;
	}
	
	
}

创建DateUtils

package com.lanou3g.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtils {

	private final static String PATTERN_NORMAL = "yyyy-MM-dd HH:mm:ss";
	
	public static String formatDate(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_NORMAL);
		return sdf.format(date);
	} 
	
	public static Date parseDate(String dateStr) {
		Date date = null;
		SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_NORMAL);
		try {
			date = sdf.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}
	
}

创建DBTools

package com.lanou3g.utils;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.alibaba.druid.pool.DruidDataSource;

/**
 * 数据库相关工具类
 * 
 *
 */
public class DBTools {
	
	
	public static final String JDBC_URL = "jdbc:mysql://localhost:3306/jsp_01?characterEncoding=utf8";
	public static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
	public static final String JDBC_USERNAME = "root";
	public static final String JDBC_PASSWORD = "123456";
	
	private static DruidDataSource ds;
	
	static {
		try {
			Class.forName(JDBC_DRIVER);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 获取数据源
	 * @return
	 */
	public static DataSource getDataSource() {
		if(ds != null) {
			return ds;
		}
		DruidDataSource ds = new DruidDataSource();
		ds.setUrl(JDBC_URL);
		ds.setUsername(JDBC_USERNAME);
		ds.setPassword(JDBC_PASSWORD);
		ds.setMaxActive(5);
		ds.setMinIdle(1);
		return ds;
	}
	
	public static Connection getConnection() throws SQLException {
		return getDataSource().getConnection();
	}
	
	public static void main(String[] args) throws SQLException {
		DataSource ds = DBTools.getDataSource();
		System.out.println(ds.getConnection());
	}
	
}

创建StringUtils

package com.lanou3g.utils;

public class StringUtils {
	/**
	 * 判断字符串是否为空
	 * @param str
	 * @return
	 */
	public static boolean isEmpty(String str) {
		return str == null || str.equals("") || str.trim().equals("");
	}
}

创建接口IUSerDao

package com.lanou3g.dao;
import com.lanou3g.bean.User;
public interface IUserDao {

	User findUserByUserName(String username);

}

创建接口IUserDao的实现类(UserDaoImpl)

package com.lanou3g.dao.impl;

import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import com.lanou3g.bean.User;
import com.lanou3g.dao.IUserDao;
import com.lanou3g.utils.DBTools;

public class UserDaoImpl implements IUserDao {

	@Override
	public User findUserByUserName(String username)  {
		String sql = "select * from user where username=?";
		QueryRunner qr = new QueryRunner(DBTools.getDataSource());
		User user = null;
		try {
			user = qr.query(sql, new BeanHandler<User>(User.class), username);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return user;
	}

}

LoginServlet.java

登录

package com.lanou3g.web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.lanou3g.bean.User;
import com.lanou3g.dao.IUserDao;
import com.lanou3g.dao.impl.UserDaoImpl;
import com.lanou3g.utils.StringUtils;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
	
	/**
	 * 
	 */
	IUserDao userDao = new UserDaoImpl();
	private static final long serialVersionUID = 1L;
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		// 响应响应编码
		resp.setContentType("text/html;charset=utf-8");
		PrintWriter out = resp.getWriter();
		//空值检查
		if(StringUtils.isEmpty(username)||StringUtils.isEmpty(password)) {
			out.println("<script>alert('用户名获密码不能为空!');location.href='login/login.jsp';</script>");
			return;
		}
		// 检查账号合法性
		User user = userDao.findUserByUserName(username);
		if(user == null) {
			// 账号未注册
			out.println("<script>alert('账号不存在,请重新登录!');location.href='login/login.jsp';</script>");
			return;
		}
		if(!password.equals(user.getPassword())) {
			// 密码错误
			out.println("<script>alert('用户名或密码错误,请重新登录!');location.href='login/login.jsp';</script>");
			return;
		}
		
		// 将用户登录信息存储到session域
		req.getSession().setAttribute("user", user);
		
		// 跳转到主页
		resp.sendRedirect("login/main.jsp");
	}
}

LogoutServlet

退出

package com.lanou3g.web;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/LogoutServlet")
public class LogoutServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 让session失效
		/*
		 * 如果不用下面这行代码,你点完退出后session还存在,
		 * 如何证明呢?你直接访问项目中的other.jsp就可以看出来
		 */
		req.getSession().invalidate();
		// 跳转到登录
		resp.sendRedirect("login/login.jsp");
	}
}

在url中输入地址根据数据库中的信息进行登录
在这里插入图片描述
main主页
在这里插入图片描述
其他页
在这里插入图片描述
当退出后,直接访问other页面可以看到session销毁
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值