过虑器基础3—页面缓存和生成验证码(48)

设置某些页面缓存或是不缓存

要想让所有浏览器不缓存页面:

<%

response.setHeader("expires","-1");

response.setHeader("pragma","no-cache");

response.setHeader("cache-control","no-cache");

%>

分析:通过一个过虑器,对所有*.jsp过虑,设置三个头,全部不缓存。

第一步:实现过虑器接口

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

//转换

HttpServletResponse resp = (HttpServletResponse) response;

resp.setHeader("expires","-1");

resp.setHeader("pragma","no-cache");

resp.setHeader("cache-control","no-cache");

//都放行

chain.doFilter(request, response);

}

第二步:配置过虑器,url-pattern=*.jsp

<!-- 配置控制缓存的filter -->

<filter>

<filter-name>cache</filter-name>

<filter-class>cn.itcast.filter.CacheFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>cache</filter-name>

<url-pattern>*.jsp</url-pattern>

</filter-mapping>

第三步:设置对某些页面缓存N天

HttpServletResponse resp = (HttpServletResponse) response;

//计算2天以后的毫秒值

//日历

Calendar cl = Calendar.getInstance();

//日历上加2天

cl.add(Calendar.DATE, 2);

long time = cl.getTimeInMillis();

resp.setDateHeader("expires", time);[W2]

//resp.setHeader("expires",""+time);

//         resp.setHeader("pragma","no-cache");

//         resp.setHeader("cache-control","no-cache");

//都放行

chain.doFilter(request,resp);


生成验证码:

public void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//设置响应类型

resp.setContentType("image/jpeg");

int width=60;

int height=30;

BufferedImage img = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);

Graphics g = img.getGraphics();

g.setColor(Color.WHITE);

g.fillRect(0,0, width, height);

g.setFont(new Font("宋体", Font.BOLD,18));

Random r = new Random();

for(int i=0;i<4;i++){

Color c = new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256));

int code = r.nextInt(10);

g.setColor(c);

g.drawString(""+code,i*15,10+r.nextInt(20));

}

for(int i=0;i<10;i++){

Color c = new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256));

g.setColor(c);

g.drawLine(r.nextInt(60),r.nextInt(30),r.nextInt(60),r.nextInt(30));

}

//图片生效

g.dispose();

//写到

ImageIO.write(img, "JPEG",resp.getOutputStream());

}

时间: 2024-08-08 02:14:56

过虑器基础3—页面缓存和生成验证码(48)的相关文章

过虑器基础(47)

在web项目中就只有三大组件: Filter过虑器 监听器. Servlet 在web中过虑器就是一个类javax.servlet.Filter. 过虑器是用于在执行时,过虑用户的请求(request),或是过虑从请求的资源中返回的响应(response). 实现一个最基本的过虑器 1:过虑器只对url(路径)进行过虑. 2:过虑器开发人员来实现. 3:过虑器由于是web的核心组,所以这个filter的实现者也必须要配置到web.xml中. 4:三个生命周期方法:init,destory,doF

过虑器基础2(48)

过虑器链FilterChain 当一个web项目中有多个连接器,且这些过虑器对同个url进行过虑.这时就形成了过虑器链/. 在filter的配置当中,有两个配置:filter,filter-mapping. Filter-mapping在前,则先执行,在后则后执行. <filter> <filter-name>first</filter-name> <filter-class>cn.itcast.filter.FirstFilter</filter-c

asp.net如何实现生成验证码的登录界面

先要新建validate aspx验证页面.然后生成验证码控件imagebutton,再生成picture窗体. 代码如下: using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.Htm

【OPENGL】第三章 着色器基础(一)

在这一章,我们会学习什么是着色器(Shader),什么是着色器语言(OpenGL Shading Language-GLSL),以及着色器怎么和OpenGL程序交互. 首先我们先来看看什么叫着色器. Shader(着色器)是用来实现图像渲染的,用来替代固定渲染管线的可编程程序. 着色器替代了传统的固定渲染管线,可以实现3D图形学计算中的相关计算,由于其可编程性,可以实现各种各样的图像效果而不用受显卡的固定渲染管线限制.这极大的提高了图像的画质. 在上一篇文章( http://www.cnblog

缓存插件 EHCache 页面缓存CachingFilter

Ehcache基本用法 CacheManager cacheManager = CacheManager.create(); // 或者 cacheManager = CacheManager.getInstance(); // 或者 cacheManager = CacheManager.create("/config/ehcache.xml"); // 或者 cacheManager = CacheManager.create("http://localhost:8080

探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存)

其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.html#mvc 本章Demo:https://github.com/dunitian/LoTCodeBase/blob/master/NetCode/6.网页基础/BMVC5/MVC5Base/Controllers/CacheController.cs 这次来篇放松的,咱们不要老是说安全相关的东西.

JSP 页面缓存以及清除缓存

一.概述 缓存的思想可以应用在软件分层的各个层面.它是一种内部机制,对外界而言,是不可感知的. 数据库本身有缓存,持久层也可以缓存.(比如:hibernate,还分1级和2级缓存) 业务层也可以有缓存(但一般来说,这是一个过程域,不会设缓存). 表现层/数据服务层(传统web的表现层)也可以设置缓存(jsp cache 就是这一层,实现在app server上的缓存机制) 另外Browser也有缓存(如IE)这个大家也都知道(实现在 web server 上的缓存机制).越上层的缓存效果越好,越

自制MVC框架的插件与拦截器基础

上篇谈到我自己写的MVC框架,接下来讲讲插件及拦截器! 在处理一些通用的逻辑最好把它封装一个插件或者拦截器,以便日后可以直接拿过来直接使用.在我的框架中可以通过继承以下抽象类来实现插件或者拦截器. 1. AspectInterceptor抽象类 处理动态织入的AOP拦截器,Stephen.View框架中的拦截器抽象类,所有需要动态拦截器必须实现该类,该拦截器原理是通过aspectsharp实现的.该拦截器适用于控制层的拦截,且要使控制器类支持动态拦截必须给控制器加上DynamicAttribut

.NET 页面缓存

ASPX.NET 页面缓存页面缓存的使用方法非常的简单,只需要在aspx页的顶部加一句声明<%@ OutputCache Duration="60" VaryByParam="none" %>这样整个页面的内容都会被缓存,页面中的ASP.NET代码.数据源在缓存期间都不会被运行,而是直接输出缓存的页面内容.页面缓存是针对所有这个页面的访问者.这样1个访问者和1万个访问者.一次访问和100万次访问对数据库的压力是一样的. Duration="60