用户的登录和注销是最常见的Web应用案例,当一个应用的客户登录了以后,其他所有的会话都得知道这个用户已经登录还很有可能得提取用户的昵称予以显示等等,所以,只有把登录成功的用户的信息放入到Session中才能够办到使所有的Servlet都能访问到用户的登录状态,下面把这个案例放上来。
第一是登录的界面,是HTML的一个表单,非常的简单
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登陆界面</title>
</head>
<body>
<form action="/Web/servlet/LoginServlet" method="post">
帐号:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
第二是处理登录信息的LoginServlet
package com.bird.login;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
/**
* @category 使用Session处理用户登陆
* @author Bird
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
List<User> list = Db.getAll();
for(User u: list){
if(u.getUsername().equals(username) && u.getPassword().equals(password)){
request.getSession().setAttribute("user", u);//登录成功,将用户数据放入到Session中
response.sendRedirect("/Web/index.jsp");
return;//进行重定向,并且下面的代码不再执行
}
}
out.write("您的应户名或密码错误");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
class Db{
public static List<User> list = new ArrayList<User>();
static{
list.add(new User("aaa","123"));
list.add(new User("bbb","123"));
list.add(new User("ccc","123"));
}
public static List<User> getAll(){
return list;
}
}
第三,用户的信息封装在User对象中
package com.bird.login;
/**
* @category 封装用户的数据的对象
* @author Bird
*
*/
public class User {
private String username;
private String password;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
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;
}
}
第四是处理用户注销的Servlet
package com.bird.login;
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 LoginOutServlet extends HttpServlet {
/**
* @category 退出登录的Servlet,注销
* @author Bird
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(false);//防止创建Session
if(session == null){
response.sendRedirect("/Web/index.jsp");
return;
}
session.removeAttribute("user");
response.sendRedirect("/Web/index.jsp");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
第五是最终的显示界面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
欢迎您,${user.username} <br>
<a href="/Web/servlet/LoginOutServlet">退出登录</a>
</body>
</html>
效果如下
登录成功后
注销后
分享到:
相关推荐
《web开发技术(java)》实验四——利用Session完成用户登录功能
该例程利用session全面解决了用户在线数量统计及控制用户重复登录。
利用Session验证用户登录,及Session的一些常见用法
java编程视频-利用session完成用户登陆
实验做得成果,有需要的话可以看看 功能一般 不复杂
简单的struts2拦截器利用session拦截用户登录.docx
.net MVC使用Session验证用户登录,直接输入URL的页面地址跳转到登陆页 ,必须经过用户登录授权才可以。例如输入:http://localhost:14613/Home/index 由于没有登录将直接跳转到http://localhost:14613/Account/Login...
用WebStorm工具实现用户登录和退出,用户名用session记录,用户登录过后,session会记录下来用户名字
用session记录用户的登录状态 1.登录 2.登录成功后将此“已登录”状态保存。 3.实现“显示员工列表”功能。 4.当用户点击“显示员工列表”的时候,验证用户是否已登录,已登录继续显示员工列表,没有登录则跳转到...
用servlet作为控制器,session来储存登录时间和点击页面次数。如有不足请提出。
Web后端开发-使用Session会话跟踪技术,实现用户登录、注销
javaweb中用到的用户密码验证码一体的登录例子,主要是利用session原理的例子。
主要给大家介绍在php中是如何使用session实现保存用户登录信息的,涉及到php session 用户登录等一些知识点,使用session保存用户登录信息要比cookie安全很多。感兴趣的朋友一起学习吧
http://blog.csdn.net/qq_22778717/article/details/52622259 两个点 一个是session登录注销 一个是jsp和servlet间数据传输的配置
实验一:使用Session Bean和JDBC技术完成登录和注册功能 实验二:使用Entity Bean替代JDBC完成登录和注册 实验三:在登录或注册成功之后,使用Message-Driven Bean对客户端发送消息 实验四:使用Servlet和JSP技术...
本篇文章是对session判断用户登录用户权限进行了详细的分析介绍,需要的朋友参考下
为了安全起见,session常常用来保存用户的登录信息。那么服务器是怎么来实现的呢?下面这篇文章就来给大家介绍了关于JavaWeb基于Session实现的用户登陆注销的相关资料,需要的朋友可以参考借鉴,下面随着小编来一起...
该例程利用session全面解决了用户在线数量统计及控制用户重复登录。
它处理登录、注销和长时间记住用户会话的常见任务。 Flask登录不绑定到任何特定的数据库系统或权限模型。唯一的要求是您的用户对象实现几个方法,并且您提供对扩展的回调,该扩展能够从用户ID加载用户。 Flask-Login...