cookie、session和java过滤器
package models; /** * 用户信息实体类 * * @author tuzongxun123 * */ public class UserModel { private String userName; private String password; // 单例模式,保证只有一个用户对象实例 public static UserModel getInstance() { UserModel user = new UserModel("zhangsan", "123456"); return user; } private UserModel(String userName, String pasword) { this.userName = userName; this.password = pasword; } public String getUserName() { return userName; } public String getPassword() { return password; } }
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!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>cookieAndFilterTest</title> </head> <body> <form action="<%=request.getContextPath() %>/loginServlet" method="post"> userName:<input type="text" name="userName" /></br> password:<input type="password" name="password" /></br> <input type="submit" value="login"/> </form> </body> </html>
package servletTest; 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; import models.UserModel; public class LoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String userName = req.getParameter("userName"); String password = req.getParameter("password"); // 模拟数据库数据 UserModel user = UserModel.getInstance(); String dbUserName = user.getUserName(); String dbPassword = user.getPassword(); if (dbUserName.equals(userName) && dbPassword.equals(password)) { // 用户名和密码都匹配,证明登陆成功,设置session和cookie HttpSession session = req.getSession(); session.setAttribute("userName", userName); session.setAttribute("password", password); Cookie cookie = new Cookie("userName", userName); Cookie cookie2 = new Cookie("password", password); // 设置cookie的存储时长 cookie.setMaxAge(60); cookie2.setMaxAge(60); // 把cookie发送给浏览器 resp.addCookie(cookie); resp.addCookie(cookie2); // 转发请求到用户列表 req.getRequestDispatcher("/userList").forward(req, resp); } else { // 转发请求到登陆页面 req.getRequestDispatcher("index.jsp").forward(req, resp); } ; } }
package servletTest; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import models.UserModel; public class UserListServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { UserModel user = UserModel.getInstance(); //在浏览器中打印出用户列表书数据 resp.getWriter().write( "userName:" + user.getUserName() + "," + "password:" + user.getPassword()); } }
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <!-- 访问时的项目名称 --> <display-name>cookieAndFilterTest</display-name> <!-- servlet配置 --> <servlet> <servlet-name>login</servlet-name> <servlet-class>servletTest.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>/loginServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>userList</servlet-name> <servlet-class>servletTest.UserListServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>userList</servlet-name> <url-pattern>/userList</url-pattern> </servlet-mapping> <!-- 过滤器设置,浏览其发送请求后首先会走这里 --> <filter> <filter-name>loginFilter</filter-name> <filter-class>filterTest.FilterTest</filter-class> </filter> <filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 输入项目名访问的默认页面 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
package filterTest; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import models.UserModel; public class FilterTest implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 登陆请求、初始请求直接放行 HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; String uri = req.getRequestURI(); if ("/cookieAndFilterTest/loginServlet".equals(uri) || "/cookieAndFilterTest/".equals(uri)) { // 放行 chain.doFilter(request, response); return; } // 不是登陆请求的话,判断是否有cookie Cookie[] cookies = req.getCookies(); if (cookies != null && cookies.length > 0) { String userName = null; String password = null; // 判断cookie中的用户名和密码是否和数据库中的一致,如果一致则放行,否则转发请求到登陆页面 for (Cookie cookie : cookies) { if ("userName".equals(cookie.getName())) { userName = cookie.getValue(); } if ("password".equals(cookie.getName())) { password = cookie.getValue(); } } UserModel user = UserModel.getInstance(); if (user.getUserName().equals(userName) && user.getPassword().equals(password)) { chain.doFilter(request, response); return; } else { // 重定向到登陆界面 req.getRequestDispatcher("/index.jsp").forward(req, resp); return; } } else { req.getRequestDispatcher("/index.jsp").forward(req, resp); return; } } @Override public void init(FilterConfig arg0) throws ServletException { } }
cookie、session和java过滤器的更多相关文章
- Java web学习 Cookie&&Session
cookie&&session 会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会 话技术就是记录这次会话中客户端的状态与数据的. 会话技术分为Coo ...
- java ->会话技术Cookie&Session
会话技术Cookie&Session 会话技术简介 存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪里?因为Http协议是无状态的,也就是说每个客户 ...
- Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期
servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...
- 会话管理(Cookie/Session技术)
什么是会话:用户打开浏览器,点击多个超链接,访问服务器的多个web资源,然后关闭浏览器,整个过程就称为一个会话: 会话过程需要解决的问题:每个用户在使用浏览器与服务器进行会话的过程中,都可能会产生一些 ...
- Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求
Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 >>>>>>>>>>>>>>&g ...
- 【转】Cookie/Session机制详解
Cookie/Session机制详解 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息 ...
- Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求
Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求 Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 java ...
- Python Web学习笔记之Cookie,Session,Token区别
一.Cookie,Session,Token简介 # 这三者都解决了HTTP协议无状态的问题 session ID or session token is a piece of data that i ...
- JavaWeb -cookie&session&application
cookie&session&application总结 Cookie[key-value](不是内置对象必须new): 1. Cookie 是由服务端生成的,在发送给客户端保存 2. ...
随机推荐
- [JavaScript]自执行函数
最近在接触mui的时候,遇到了一段代码: (function($, doc) { $.init({ statusBarBackground: '#f7f7f7' }); $.plusReady(fun ...
- java web 整合开发王者归来学习总结
第一章java web开发概述 胖客户端CS,瘦客户端BS(Browser) 网址请求---服务器处理响应-----返回结果-----浏览器显示 CGI可以动态生成页面,但是每个进程都要启动一个CGI ...
- weighted_cross_entropy_with_logits
weighted_cross_entropy_with_logits 原创文章,请勿转载!!! weighted_cross_entropy_with_logits(targets, logits, ...
- 学习dos命令行总结
dir:列出当前目录下的所有文件及文件夹. md 文件夹:创建文件夹 rd 文件夹:删除文件夹 echo 文件内容>文件名(扩展名):创建带文件内容的新文件 echo 文件内容>>文 ...
- IIS 加载 JSON 错误 404 解决办法
MIME设置:在IIS的站点属性的HTTP头设置里,选MIME 映射中点击”文件类型”-”新类型”,添加一个文件类型:关联扩展名:*.json内容类型(MIME):application/x-java ...
- vue1.0中$index一直报错的解决办法
原文链接:https://www.cnblogs.com/liqiong-web/p/8144925.html 看学习视频,因为年份比较早了,其实vue早已迭代到vue2.0了,遇到一些问题: v-f ...
- sparksql工程小记
最近做一个oracle项目迁移工作,跟着spark架构师学着做,进行一些方法的总结. 1.首先,创建SparkSession对象(老版本为sparkContext) val session = Spa ...
- 数据库之mac上mysql root密码忘记或权限错误的解决办法
[转自 http://blog.csdn.net/u014410695/article/details/50630233] 以下方法亲测有效,过程使用的工具只有mac的终端无需workbench 当 ...
- NFS工作原理
很多同学都知道NFS的使用场景,也知道如何配置和使用,但对NFS的工作原理了解的很少. NFS是C/S模式,首先要有一台服务端跑NFS服务,然后各个客户端直接挂载共享目录使用.NFS服务本身不会监听端 ...
- Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型
1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...