当前位置: 首页 > news >正文

Web配置过滤器,Cookie对象的简单使用

Web配置过滤器

创建一个类实现Filter接口,重写三个方法
示例:
将所有接收到的参数。转码为 utf-8

package com.hz.filter;

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.annotation.WebFilter;

/**
 * Servlet Filter implementation class CharEncodingFilter
 *   /admin/LoginServlet
 *   /admin/ProviderServlet
 *   /order/OrderInfoServlet
 *   
 *   /admin/*
 *   /admin/LoginServlet
 */


@WebFilter("/*")
public class CharEncodingFilter implements Filter {

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * /LoginServlet
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		request.setCharacterEncoding("utf-8");
		chain.doFilter(request, response);
	}

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		
	}
}

request.setCharacterEncoding() : 设置编码格式
chain.doFilter(request, response): 放行

可以对获取到的session中是否有值进行判断,如果有值则放行,若没有的话,重定向到首页
示例:

package com.hz.filter;

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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet Filter implementation class LoginFilter
 */
@WebFilter("/web/*")
public class LoginFilter implements Filter {

    /**
     * Default constructor. 
     */
    public LoginFilter() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		
		HttpServletRequest req = (HttpServletRequest)request;
		
		HttpServletResponse res = (HttpServletResponse)response;
		if(req.getSession().getAttribute("user")!=null) {
			chain.doFilter(request, response);
		}else {
			res.sendRedirect(req.getContextPath()+"/login.jsp");
		}
		
		
		
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}

由于重定向获取前登陆的路径,所以要在所有url前加个统一的路径信息。

使用Cookie

使用Cookie存值流程,示例:

String username = URLEncoder.encode(uname,"utf-8");
				Cookie cookie = new Cookie("uname",username);
				cookie.setPath("/");   			//设置使用路径
				cookie.setMaxAge(20);			//设置Cookie时间   秒为单位
				response.addCookie(cookie);		//向浏览器中添加Cookie信息

Cookie中是用键值的形式存入值,在存入值前,要先转码,否则可能会乱码

使用JQuary操作Cookie

引入

1.添加一个"会话cookie"

$.cookie('the_cookie', 'the_value');

2.创建一个cookie并设置有效时间为 7天

$.cookie('the_cookie', 'the_value', { expires: 7 });

3.创建一个cookie并设置 cookie的有效路径
$.cookie(‘the_cookie’, ‘the_value’, { expires: 7, path: ‘/’ });

4.读取cookie

$.cookie('the_cookie');

5.删除cookie

$.cookie('the_cookie', null);   //通过传递null作为cookie的值即可

6.可选参数

$.cookie('the_cookie','the_value',{
    expires:7,  
    path:'/',
    domain:'jquery.com',
    secure:true
})

expires:(Number|Date)有效期;设置一个整数时,单位是天;也可以设置一个日期对象作为Cookie的过期日期;
path:(String)创建该Cookie的页面路径;
domain:(String)创建该Cookie的页面域名;
secure:(Booblean)如果设为true,那么此Cookie的传输会要求一个安全协议,例如:HTTPS;

相关文章:

  • 进程入门与PCB基础知识.
  • 【云原生】设备云之基于FlexManager的C#SDK开发案例代码
  • Rust(7):数组类型
  • STM32——FLASH闪存编程原理与步骤
  • 计算机毕业设计之java+javaweb的大学生就业帮助系统-就业招聘网站
  • 跳表论文解读
  • 1061:求整数的和与均值
  • Day04JavaWeb第四次笔记---Maven的使用
  • Unrecognized option: --no-transfer-progress
  • 加载指定 having lines separator 时max_data_processor 不起作用
  • 高薪程序员面试题精讲系列150之电商专题(上)-你们的电商项目有什么特色?是B2B还是B2C、还是C2C的?直播电商你了解吗?
  • kafka是啥?虽然很难学,但是实验入门很简单
  • MySQL8.0 索引优化-invisible index
  • 基于java仓库管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  • C++对象内存故事, 一个对象是如何由子对象来构成的?
  • 【技术性】Search知识
  • Angular6错误 Service: No provider for Renderer2
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Docker下部署自己的LNMP工作环境
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript类型识别
  • Meteor的表单提交:Form
  • React-Native - 收藏集 - 掘金
  • Vue全家桶实现一个Web App
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 经典排序算法及其 Java 实现
  • 深度学习在携程攻略社区的应用
  • 收藏好这篇,别再只说“数据劫持”了
  • 我的zsh配置, 2019最新方案
  • 我看到的前端
  • 系统认识JavaScript正则表达式
  • 以太坊客户端Geth命令参数详解
  • 阿里云服务器购买完整流程
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (1)常见O(n^2)排序算法解析
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • **PHP二维数组遍历时同时赋值
  • .htaccess 强制https 单独排除某个目录
  • .java 9 找不到符号_java找不到符号
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET6 命令行启动及发布单个Exe文件
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .NET命令行(CLI)常用命令
  • .net项目IIS、VS 附加进程调试
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • :中兴通讯为何成功
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)