Session 起航 登录会话和注销请求 重定向和转发
【LoginServlet】
@WebServlet(name="loginServlet",urlPatterns = "/login")
public class LoginServlet extends HttpServlet{
private static final Map<String,String> userDatabase = new Hashtable<>(); static {
userDatabase.put("user1","123456");
userDatabase.put("user2","123456");
userDatabase.put("user3","123456");
userDatabase.put("user4","123456");
} @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
if (req.getParameter("logout")!=null){
session.invalidate();
resp.sendRedirect("login");
return;
// 已经登录上的
}else if (session.getAttribute("username")!=null){
resp.sendRedirect("tickets");
return;
}
req.setAttribute("loginFailed",false);
req.getRequestDispatcher("/WEB-INF/jsp/view/login.jsp").forward(req,resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
//注销
if (req.getParameter("logout")!=null){
session.invalidate();
resp.sendRedirect("login");
return;
// 登录会话
}else if (session.getAttribute("username")!=null){
resp.sendRedirect("tickets");
return;
}
String username = req.getParameter("username");
String userpassword = req.getParameter("userpassword");
if (username == null || userpassword == null ||
!LoginServlet.userDatabase.containsKey(username)||
!userpassword.equals(LoginServlet.userDatabase.get(username))){
req.setAttribute("loginFailed",true);
req.getRequestDispatcher("/WEB-INF/jsp/view/login.jsp")
.forward(req,resp);
}else {
session.setAttribute("username",username);
req.changeSessionId();//登录更新会话id
resp.sendRedirect("tickets");
}
}
}
【重定向和转发】
转发是服务器行为。
重定向是客户端行为。
【login.jsp】
<h2>登录</h2>
<%
if ((boolean)request.getAttribute("loginFailed")){
out.println("您输入的密码或用户名不对");
}
%>
<form action="<c:url value="/login"/>" method="post">
用户名<br />
<input type="text" name="username" /><br />
密码<br />
<input type="password" name="userpassword" value="banana" /><br />
<input type="submit" value="登录"/>
</form>
Session 起航 登录会话和注销请求 重定向和转发的更多相关文章
- java web Servlet学习笔记-2 请求重定向和请求转发的区别
请求转发与请求重定向的区别 请求重定向和转发 1.请求重定向:浏览器的行为(通过响应对象HttpServletResponse来执行) 特点:可以重新定向访问其他Web应用下的资源 浏览器发出了2次请 ...
- python接口自动化: CAS系统验证,自动完成登录并获取token,遇到302请求重定向设置(requests模块 allow_redirects=False)即可
import requestsimport re import requests import re class Crm_token(object): try: username=int(input( ...
- python测试开发django-43.session机制(登录/注销)
前言 当我们登录访问一个网站时,服务器需要识别到你已经登录了,才有相应的权限访问登录之后的页面.用户退出登录后,将无权限访问再访问登录后的页面. 从登录到退出的一整个流程,可以看成是与服务器的一次会话 ...
- Django框架基于session的登录/注销实现
博主最近想基于Django框架开发一个测试平台,第一版先实现查看下载自动化的测试报告文件 第一步:前端框架 网上选择一款开源boostrap的前端框架 AdminLTE,这里给个链接 https:/ ...
- [原创]java WEB学习笔记15:域对象的属性操作(pageContext,request,session,application) 及 请求的重定向和转发
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Express + Session 实现登录验证
1. 写在前面 当我们登录了一个网站,在没有退出登录的情况下,我们关闭了这个网站 ,过一段时间,再次打开这个网站,依然还会是登录状态.这是因为,当我们登录了一个网站,服务器会保存我们的登录状态,直到我 ...
- django之cookies,session 、中间件及跨站请求伪造
cookies 和session 为什么会有cookie? 由于http协议是无状态的,即用户访问过后,不留痕迹(状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被 ...
- express session 实现登录
https://www.cnblogs.com/mingjiatang/p/7495321.html Express + Session 实现登录验证 1. 写在前面 当我们登录了一个网站,在没有 ...
- cookie和session实现登录验证
回话技术,比如在做登录功能的时候,需要配合是用存储在客户端的cookie信息,以及存储在服务端的session来实现登录功能.在cookie中保存了用户的信息,特别是一个特殊的令牌信息,当用户拿着这个 ...
随机推荐
- HDU 6319 Problem A. Ascending Rating(单调队列)
要求一个区间内的最大值和每次数过去最大值更新的次数,然后求每次的这个值异或 i 的总和. 这个序列一共有n个数,前k个直接给出来,从k+1到n个数用公式计算出来. 因为要最大值,所以就要用到单调队列, ...
- A1017. Queueing at Bank
Suppose a bank has K windows open for service. There is a yellow line in front of the windows which ...
- Linux基本命令总结(三)
接上篇: 11,more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上. more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示 ...
- c# WebApi之解决跨域问题:Cors
什么是跨域问题 出于安全考虑,浏览器会限制脚本中发起的跨站请求,浏览器要求JavaScript或Cookie只能访问同域下的内容.由于这个原因,我们不同站点之间的数据访问会被拒绝. Cors解决跨域问 ...
- MVC WebAPI框架里设置异常返回格式统一
webApi里设置全局异常返回格式今天为了设置api返回格式统一,在网上找了一推资料,各种资料参差不齐的,最后自己捣鼓,终于弄出来了,直接上代码 /// <summary> /// 消息代 ...
- django(七)之数据库表的单表-增删改查QuerySet,双下划线
https://www.cnblogs.com/haiyan123/p/7738435.html https://www.cnblogs.com/yuanchenqi/articles/6083427 ...
- Remote debugger is in a background tab which may cause apps to perform slowly. Fix this by foregrounding the tab (or opening it in a separate window).
先上代码: /** * Sample React Native App * https://github.com/facebook/react-native * * @format * @flow * ...
- Vue+Django2.0 restframework打造前后端分离的生鲜电商项目(3)
1.drf前期准备 1.django-rest-framework官方文档 https://www.django-rest-framework.org/ #直接百度找到的djangorestframe ...
- JS验证身份证
话不多说,直接看代码 JS部分 /** * 身份证15位编码规则:dddddd yymmdd xx p * dddddd:地区码 * yymmdd: 出生年月日 * xx: 顺序类编码,无法确定 * ...
- 3.git 分支操作
1.git branch 查看分支 git branch -a 查看远程仓库分支 结果显示,只有一个master分支,项目刚开始默认只有一个分支,名字叫做master,一般都不会直接在master上 ...