Java Servlet常用到的几个Filter
一、使浏览器不缓存页面的过滤器
Java代码
public class ForceNoCacheFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
((HttpServletResponse) response).setHeader("Cache-Control", "no-cache");
((HttpServletResponse) response).setHeader("Pragma", "no-cache");
((HttpServletResponse) response).setDateHeader("Expires", -1);
filterChain.doFilter(request, response);
}
public void destroy() {
}
}
二、检测用户是否登陆的过滤器
Java代码
/**
* 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指的登录页面 配置参数 checkSessionKey 需检查的在 Session 中保存的关键字
* redirectURL 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath notCheckURLList
* 不做检查的URL列表,以分号分开,并且 URL 中不包括 ContextPath
*/
public class CheckLoginFilter implements Filter {
protected FilterConfig filterConfig = null;
private String redirectURL = null;
private List notCheckURLList = new ArrayList();
private String sessionKey = null;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
redirectURL = filterConfig.getInitParameter("redirectURL");
sessionKey = filterConfig.getInitParameter("checkSessionKey");
String notCheckURLListStr = filterConfig
.getInitParameter("notCheckURLList");
if (notCheckURLListStr != null) {
StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
notCheckURLList.clear();
while (st.hasMoreTokens()) {
notCheckURLList.add(st.nextToken());
}
}
}
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpSession session = request.getSession();
if (sessionKey == null) {
filterChain.doFilter(request, response);
return;
}
if ((!checkRequestURIIntNotFilterList(request))
&& session.getAttribute(sessionKey) == null) {
response.sendRedirect(request.getContextPath() + redirectURL);
return;
}
filterChain.doFilter(servletRequest, servletResponse);
}
private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) {
String uri = request.getServletPath()
+ (request.getPathInfo() == null ? "" : request.getPathInfo());
return notCheckURLList.contains(uri);
}
public void destroy() {
notCheckURLList.clear();
}
}
三、字符编码的过滤器
Java代码
/**
* 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题
*/
public class CharacterEncodingFilter implements Filter {
protected FilterConfig filterConfig = null;
protected String encoding = "";
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
if (encoding != null)
servletRequest.setCharacterEncoding(encoding);
filterChain.doFilter(servletRequest, servletResponse);
}
public void destroy() {
filterConfig = null;
encoding = null;
}
}
四 利用Filter限制用户浏览权限
Java代码
public class RightFilter implements Filter {
public void init(FilterConfig arg0) throws ServletException {
}
public void doFilter(ServletRequest sreq, ServletResponse sres,
FilterChain arg2) throws IOException, ServletException {
// 获取uri地址
HttpServletRequest request = (HttpServletRequest) sreq;
String uri = request.getRequestURI();
String ctx = request.getContextPath();
uri = uri.substring(ctx.length());
// 判断admin级别网页的浏览权限
if (uri.startsWith("/admin")) {
if (request.getSession().getAttribute("admin") == null) {
request.setAttribute("message", "您没有这个权限");
request.getRequestDispatcher("/login.jsp").forward(sreq, sres);
return;
}
}
// 判断manage级别网页的浏览权限
if (uri.startsWith("/manage")) {
// 这里省去
}
}
public void destroy() {
}
}
<!-- 判断页面的访问权限 -->
Xml代码
<filter>
<filter-name>RightFilter</filter-name>
<filter-class>cn.itkui.filter.RightFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RightFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>RightFilter</filter-name>
<url-pattern>/manage/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
在Tomcat中实现跨域CORS,通常涉及以下几个步骤: 1. **配置CORS过滤器**:在`web.xml`中添加`<filter>`和`<filter-mapping>`,并将`CorsFilter`类绑定到所有请求或特定请求路径。 2. **定义CORS策略**:配置过滤器...
6. **Servlet API**:为了在服务器端处理HTTP请求,可能包含`servlet-api.jar`,这是Java Servlet规范的一部分,提供了Servlet和Filter接口以及相关的类。 这些jar包在JSP开发中起着至关重要的作用,它们能够帮助...
购物车通常由以下几个关键部分组成: 1. **商品添加**:用户选择商品后,系统将商品信息(如ID、名称、价格、数量等)添加到购物车中。这需要一个服务接口用于接收请求并处理数据。 2. **商品展示**:购物车页面...
通常,这样的项目结构会包括以下几个部分: 1. **源码目录**:存放Java源代码,可能分为Model(业务模型)、View(视图)、Controller(控制器)三个部分,对应MVC设计模式。 2. **资源目录**:存储静态资源,如...
这个项目的源代码可能涵盖以下几个关键知识点: 1. **Servlet和JSP**:作为Java EE的基础,Servlet负责处理HTTP请求,而JSP则用于生成动态网页内容。开发者可能使用它们来实现用户界面和服务器端逻辑的交互。 2. *...
3. 用户管理:注册、登录、权限控制等功能,可能利用Java Servlet和JSP技术实现前后端分离,配合过滤器(Filter)进行权限验证。 4. 搜索与查询:支持按书名、作者、类别等多种条件进行检索,这需要对数据库查询...
在这个部分中,我们可以深入学习到以下几个关键的Java Web开发知识点: 1. **Servlet技术**:Servlet是Java Web应用程序的基础,用于接收和响应来自Web客户端(如浏览器)的请求。在宠物商店项目中,Servlet可能被...
在JavaWeb开发中,主要涉及以下几个核心知识点: 1. **Servlet**:Servlet是JavaWeb开发的基础,它是一个运行在服务器端的小程序,用于接收和响应HTTP请求。Servlet生命周期包括加载、实例化、初始化、服务、销毁等...
2. **了解Java Web开发**:如Servlet、JSP、Filter等,以及MVC(Model-View-Controller)设计模式。 3. **掌握相关框架**:例如Spring Boot、MyBatis或Hibernate,它们简化了Java Web应用的开发和配置。 4. **数据库...
Tomcat 8.0源码主要分为以下几个部分: 1. `common`:包含了所有版本的Tomcat都会用到的通用类。 2. `catalina`:核心服务组件,如`Engine`、`Host`、`Context`和`Wrapper`,它们构成了Tomcat的容器模型。 3. `jdbc...
* SpringMVC 是基于过滤器对 Servlet 进行了封装的一个框架,我们使用的时候就是在文件中配置 DispatcherServlet 类。 * SpringMVC 工作时主要是通过 DispatcherServlet 管理接收到的请求并进行处理。 * Spring 用的...
该系统的实现主要涉及以下几个核心知识点: 1. **JSP基础**:JSP页面由HTML和嵌入的Java代码组成,通过`<jsp:include>`、`<jsp:forward>`等指令进行页面间的跳转和数据传递。在本系统中,JSP文件可能包含用户界面...
在JavaWeb开发中,我们通常会涉及到以下几个重要的知识点: 1. **Servlet**:Servlet是Java语言中用于扩展服务器功能的接口,它是JavaWeb开发的核心组件。通过实现Servlet接口或继承HttpServlet类,开发者可以处理...
在【OA_Plate】项目中,我们可以预期以下几个方面的内容: 1. **MVC架构**:为了组织和分离关注点,项目很可能采用了Model-View-Controller(MVC)设计模式。在这种模式下,模型负责业务逻辑,视图负责用户界面,而...
在项目中,主要涉及以下几个关键知识点: 1. **URL重写规则**:UrlReWriteDemo的核心是定义URL重写规则,这通常通过配置文件(如`.htaccess`或自定义配置)来实现。在Java环境中,可能使用开源库如`Tuckey ...
在JavaEE平台上,开发云盘管理系统的关键技术主要包括以下几个方面: 1. **Servlet与JSP**:Servlet是JavaEE中处理HTTP请求的核心组件,负责接收和响应客户端请求。JSP(JavaServer Pages)用于生成动态网页内容,...
1. **Filter的实现**:在JavaWeb中,创建一个Filter需要实现`javax.servlet.Filter`接口,并且在web.xml中进行配置。选项B正确描述了这一点。 2. **自定义标签配置**:自定义标签的配置文件通常放在`WEB-INF`目录下...
实现这个过滤器通常需要以下几个步骤: 1. 创建一个实现了javax.servlet.Filter接口的类,如`XSSSecurityFilter`。 2. 在`doFilter`方法中,获取请求参数并进行XSS防护处理。这可能包括对字符串进行HTML实体编码,...
JavaWeb是指使用Java技术来开发Web应用程序的一系列技术和框架的集合,包括Servlet、JSP、JavaBean、Filter、Listener等。这些技术共同构成了动态Web应用的基础,使得开发者能够构建交互性强、功能丰富的Web应用。 ...
Struts2是一个强大的Java EE应用程序框架,用于构建和部署企业级Web应用。它结合了Model-View-Controller(MVC)设计模式,并提供了强大的动作调度、国际化、异常处理等功能,大大简化了Java Web开发。马士兵老师是...