JavaWeb Servlet 登录功能 注销功能


有三个逻辑:
处理登陆的逻辑,用户主页的逻辑,退出登录逻辑

登陆的逻辑LoginServlet.java

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;
import javax.servlet.http.HttpSession;/*** 处理登陆的逻辑*/
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");// 1.接收参数String userName = request.getParameter("userName");String userPwd = request.getParameter("userPwd");String yanzheng = request.getParameter("yanzheng");// 2.判断逻辑if ("admin".equals(userName) && "123456".equals(userPwd)) {// 登陆成功/** 分析: context域对象:不合适,可能会覆盖数据。 request域对象: 不合适,整个网站必须得使用转发技术来跳转页面* session域对象:合适。*/
//           request.setAttribute("loginName", userName);
//           //request.getRequestDispatcher("/IndexServlet").forward(request,
//           response);
//           response.sendRedirect(request.getContextPath()+"/IndexServlet");
//          // 把用户保存在session对象中// 1.创建session对象HttpSession session = request.getSession();// 2.把数据保存到session域中session.setAttribute("loginName", userName);// 3.跳转到用户主页(可以使用重定向)response.sendRedirect(request.getContextPath() + "/IndexServlet");} else {// 登录失败// 请求重定向response.sendRedirect(request.getContextPath() + "/error.html");}}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

用户主页的逻辑IndexServlet.java

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 javax.servlet.http.HttpSession;/*** 用户主页的逻辑*/
@WebServlet("/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");// 设置返回的数据类型PrintWriter writer = response.getWriter();String html = "";// 创建一个html字符串// // 接收request域对象的数据// String loginName = (String)request.getAttribute("loginName");// 从session域中获取会话数据// 1.得到session对象HttpSession session = request.getSession(false);if (session == null) {// 没有登录成功,跳转到登录页面response.sendRedirect(request.getContextPath() + "/login.html");return;}// 2.取出会话数据String loginName = (String) session.getAttribute("loginName");if (loginName == null) {// 没有登录成功,跳转到登录页面(涉及到LogoutServlet)response.sendRedirect(request.getContextPath() + "/login.html");return;}html = "<html><body>欢迎回来," + loginName + "<br><br><a href='"+ request.getContextPath()+ "/LogoutServlet'><button>安全退出</button></a></body></html>";writer.write(html);// 用write()写出一个html}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

退出登录逻辑Logout.java

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;
import javax.servlet.http.HttpSession;/*** 退出逻辑*/
@WebServlet("/LogoutServlet")
public class LogoutServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 安全退出: 删除掉session对象中指定的loginName属性即可// 1.得到session对象HttpSession session = request.getSession(false);if (session != null) {// 2.删除属性session.removeAttribute("loginName");}// 2.返回登录页面response.sendRedirect(request.getContextPath() + "/login.html");}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录界面</title>
</head>
<body><form action="/day0309Login/LoginServlet" method="post">用户名:<input type="text" name="userName" placeholder="英文字母或数字, 长度3-15"><br>密码:<input type="password" name="userPwd" placeholder="必填且长度6-15"><br><button><input type="submit" value="登录"></button></form>
</body>
</html>

login2.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录界面</title>
<style>
div {width: 50px;height: 36px;background-color: #f40;line-height: 36px;text-align: center;color: #fff;font-size: 16px;margin: 30px left; /* auto */cursor: pointer;-webkit-user-select: none; /*禁止用户选中文字*/
}
</style>
</head>
<body><form action="/day0309Login/LoginServlet" method="post">用户名:<input type="text" name="userName" placeholder="英文字母或数字, 长度3-15"><br>密码:<input type="password" name="userPwd" placeholder="必填且长度6-15"><br>验证码:<input type="text"  placeholder="请输入验证码"><input type="submit" value="登录"></form><div id="code_box">Af3D</div><script>var code_box = document.getElementById("code_box");function refreshCode() {//62个字符 随机选择4位var code = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM',char = '',result = '';for (var i = 0; i < 4; i++) {//随机选择一位  (0,61) 写出0到61的随机的索引数字var code_index = Math.round(Math.random()*61);//得到随机的索引  取出随机地字符var char = code[code_index];//随机取出的字符 存在几个相同重复的问题 ,而且对于字母,不能区分大小写。// 避免重复的思路是:取出字符之后,和最后的result对比一下,看看里边是不是已经存在了,如果存在本次循环就终止,进行下一次if (result.toUpperCase().indexOf(char.toUpperCase()) > -1)//indexOf() == -1 说明结果里边没有要找的字符 那么 > -1 就是 里边有重复的字符{i --;//为什么会 --? 因为如果条件成立,那么本轮循环就结束进行下一轮循环(自然i就加1了),那么本轮本应该取出的字符就没有了//到最后会少一个字符 缺席continue;//终止本轮循环 进行下一轮}result += char;}code_box.innerHTML = result;}//点击事件code_box.onclick = refreshCode;</script></body>
</html>

error.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>error</title>
</head>
<body><font color="red" size='5'>用户名或密码输入有误,请重新输入</font><br><a href="/day0309Login/login.html"><button>重新登陆</button></a></body>
</html>




JavaWeb Servlet 登录功能 注销功能相关推荐

  1. Android 实现 登录注册注销功能

    Android用SharedPreferences实现登录注册注销功能 前言 本文用SharedPreferences本地缓存账号信息来实现登录注册功能,以及退出注销功能. 一.本文逻辑 本文的注册登 ...

  2. 【Vue3.0实战逐步深入系列】为问卷系统重新布局并添加登录及注销功能

    [千字长文,熬夜更新,原创不易,多多支持,感谢大家] 前言 小伙伴们大家好.到目前为止我们的问卷调查已经实现了配置问卷,填写问卷,保存问卷,提交问卷,提交记录以及提交结果展示等基本功能.其实到这里关于 ...

  3. 【超详细Django网站开发过程9】便利店管理系统之——管理员登录、注销功能

    管理系统当然要有管理员登录功能啦,怎么做呢? Lynjay的便利店管理系统,登录API如下: 1.请求消息: POST /api/mgr/signin HTTP/1.1 Content-Type: a ...

  4. node.js+vue.js+mysql实现登录注册的功能(前后端分离)

    参考教程:github源码地址 Node.js+Mysql+Vue+ElementUI 实现登录注册注销功能 1 准备 1.1 MySQL数据库 参考教程:NodeJS连接MySql.易百教程.菜鸟教 ...

  5. django用户注销_Django中的用户注册,登录和注销指南

    django用户注销 This article will cover how to allow user registration, login, and logout functionality o ...

  6. javaweb(servlet)+jsp+Mysql实现的简单相册管理系统(功能包含登录、管理首页、添加图片、分类管理、修改密码、图片详情等)

    博客目录 javaweb(servlet)+jsp+Mysql实现的简单相册管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 javaweb(servlet)+jsp+Mysql实现的简单相 ...

  7. javaweb(servlet)+jsp+Mysql实现的酒店客房管理系统(功能包含登录、用户管理、住客信息管理、房型管理、房间管理、会员星级管理、订单管理等)

    博客目录 javaweb(servlet)+jsp+Mysql实现的酒店客房管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 javaweb(servlet)+jsp+Mysql实现的酒店客 ...

  8. java实现注销功能_8.6.2 登录注销功能的实现

    8.6.2  登录注销功能的实现 9.6.1节介绍了登录页面的搭建,本节将介绍如何实现登录的业务功能,包括Servlet端的业务逻辑和数据库端的用户名和密码验证等. 在开发一个Servlet之前,需要 ...

  9. 书店管理系统(Servlet+MySQL)登录与注册功能篇

    书店管理系统(Servlet+MySQL) 这个工程主要是对之前的一些总结吧,尽可能地用上所学的所有功能来实现,具体代码稍后也会上传到Github上. 在前端上并没有用上CSS等技术,只用上了基础的H ...

最新文章

  1. java培训面试技巧分享
  2. 皮一皮:这是谁的脚???
  3. 超有趣的几个Linux小命令
  4. Spring启动和缓存抽象
  5. 微软移除Visual Studio 2015中的UML
  6. C语言将字符串s连接到t的后面,下列给定程序中,函数fun的功能是:先将字符串s中的字符按正序存放到字符串t..._考试资料网...
  7. labVIEW学习笔记(二)公式节点、数组
  8. 工具推荐:三款自动化代码审计工具
  9. 流畅的python(一)python数据模型
  10. 高阶面试官应掌握哪些面试技巧
  11. 期货真的可以做到长期稳定盈利吗?
  12. 华师大计算机专业怎么样,2019年二本科班上岸华东师范大学计算机学硕,初试387分排名第四初复试经验分享!...
  13. java pdf水印排布问题_Java——PDF水印接口设计
  14. 花式感染 Windows PE 病毒的一百种方法,你中过招吗?
  15. html 设置不同字体,在html中怎么设置一行字两个不同样式的字体
  16. “黑盒”下的攻击实现,真实世界的“人脸识别”遭遇危险!
  17. MYSQL 递归树表函数
  18. 一劳永逸的解决jquery的本地引入的方法
  19. “Open3d:ImportError: DLL load failed: 找不到指定的模块”解决思路和方法
  20. 两性情感关系中的核心价值是什么?

热门文章

  1. C++ 返回值优化 RVO
  2. foxmail基本操作
  3. CF1656E Equal Tree Sums题解
  4. 亚马逊listing如何提高?测评要满足什么条件?
  5. 软件测试实验:基于 PMD 的静态测试
  6. c++之静态数据成员与静态成员函数
  7. 微积分之七——欧拉公式与傅里叶级数
  8. web常见页面错误浅谈
  9. 原生Quartz 使用与配置
  10. Excel_日期和时间函数、EDATE、EOMONTH