- 浏览: 109246 次
- 性别:
- 来自: 北京
文章分类
最新评论
<filter>
<filter-name>onlineFilter</filter-name>
<filter-class>com.filter.OnlineFilter</filter-class>
<init-param>
<param-name>notCheckURLList</param-name>
<param-value>/userManager.do</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>onlineFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class OnlineFilter implements Filter {
private static final long serialVersionUID = 1L;
private List notCheckURLList = new ArrayList();
public void init(FilterConfig filterConfig) throws ServletException {
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 request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
RequestDispatcher dispatcher = request
.getRequestDispatcher("login.jsp");// 这里设置如果没有登陆将要转发到的页面
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
// System.out.println(((HttpServletRequest) request).getRequestURI());
// 从session里取的用户名信息
String username = (String) session
.getAttribute("userId");// 这里获取session,为了检查session里有没有保存用户信息,没有的话回转发到登陆页面
if(username==null){
username = request.getParameter("userId");
session.setAttribute("userId", username);
}
// 判断如果没有取到用户信息,就跳转到登陆页面
if ((checkRequestURIIntNotFilterList(req))
&& username == null) {
chain.doFilter(request, response);
}
if (username == null || "".equals(username)) {
// 跳转到登陆页面
response.setCharacterEncoding("GBK");
PrintWriter out=null;
try{
out= response.getWriter();
} catch(Exception e){e.printStackTrace();}
out.println("<script>location.href='login.jsp';</script>");
// System.out.println("用户没有登陆,不允许操作");
res.setHeader("Cache-Control", "no-store");
res.setDateHeader("Expires", 0);
res.setHeader("Pragma", "no-cache");
} else {
// 已经登陆,继续此次请求
chain.doFilter(request, response);
// System.out.println("用户已经登陆,允许操作");
}
}
public void destroy() {
notCheckURLList.clear();
}
private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) {
String uri = request.getServletPath()
+ (request.getPathInfo() == null ? "" : request.getPathInfo());
boolean url = notCheckURLList.contains(uri);
return url;
}
}
发表评论
-
解决excel文字读取错误 可能某些数字格式已丢失
2018-12-29 09:11 618ServletOutputStream ... -
struts上传下载多个文件
2015-04-30 11:24 512实例: 第一步导入包: commons-fileupload- ... -
jdcob--Could not initialize class com.jacob.com.ComThread
2015-02-27 09:00 19081--dll 文件 放在tomcat/bin 下面 ... -
ntko打印公章
2014-12-02 09:04 567//TANGER_OCX_OBJ.ActiveDocument ... -
hibernate 映射文件生成数据库表脚本
2011-03-28 16:20 865import org.hibernate.cfg.Config ... -
java换肤改变页面肤色
2011-03-02 14:05 994import java.io.IOException;impo ... -
java 在线用户统计
2011-03-02 13:47 1629web.xml <listener> ... -
java 过滤乱码
2011-03-02 13:44 947web.xml <filter> <f ... -
jacob资料
2011-02-13 23:48 1874JACOB是一个JAVA到微软的COM接口的桥梁。使用JACO ... -
hibernate 查询乱码
2010-10-06 15:12 746在使用HQL进行查询时,如果查询语句中存在中文字符,则会有乱码 ... -
java 多线程代码
2010-09-30 12:44 1489package com.jacob.activeX; imp ... -
过滤未登录的用户
2010-09-15 10:59 880package com.filter; import jav ... -
jacob操作word 解决换页问题
2010-09-13 08:17 3765package audit.pub.word; imp ... -
jacob操作word增加表格 行列
2010-08-10 09:52 2940import com.jacob.activeX.Activ ... -
jsp导出word 带图片
2010-04-12 17:28 33881.将word另存为html格式,然后将html格式的文件另存 ... -
读取blob格式图片上传到服务器目录
2010-04-12 17:21 1989//得到blob格式图片 String fileUrl = ... -
批量导入图片保存成blob格式
2010-03-31 15:15 1688/** * 创建目录 * @param director ... -
org.apache.tools包 解压缩zip 解决中文乱码 ant 版本冲突
2010-03-30 12:50 3039private void createDirectory(St ... -
java 获取文件大小
2010-03-29 14:32 15807import java.io.*; public class ... -
xml的读取分析 key value
2010-03-23 15:20 1588package com.basedata.xml; impo ...
相关推荐
首先,让我们了解一下Java过滤器的基础知识。在Java Servlet规范中,Filter接口定义了过滤器的行为。一个过滤器可以通过实现`doFilter()`方法来拦截请求和响应,并对其进行处理。通过在web.xml配置文件中定义过滤器...
### JAVA过滤器标准代码解析与应用 在Java Web开发中,过滤器(Filter)是一种用于拦截请求和响应的重要机制,可以实现对用户请求的预处理和后处理,以及对响应的处理。本文将深入解析“JAVA过滤器标准代码”,探讨...
- 预测评分:对目标用户未评分的物品,利用相似度计算预测其可能的评分。 - 推荐生成:选择预测评分最高的若干物品作为推荐结果。 4. 优点:协同过滤算法简单易懂,能够捕捉用户的实时兴趣变化,且适用于大规模...
在Java开发中,实现敏感词过滤功能是一项常见的需求,特别是在社交媒体、论坛或评论系统中,以防止用户发布不当或违规内容。本项目的核心是通过Java编程实现敏感词的检测和替换,确保信息的安全和合规性。 `...
在Java编程中,"java过滤html代码"是一个常见的需求,主要目的是为了安全考虑,比如防止XSS(跨站脚本攻击)或者为了提取纯文本内容。这个任务可以通过使用正则表达式来实现,正如描述中提到的那样。下面我们将详细...
- **权限验证**:过滤器可以检查用户是否已登录,未登录的请求会被拦截。 - **字符编码转换**:确保请求和响应的数据使用正确的字符编码。 - **日志记录**:记录用户请求和响应信息,便于分析和调试。 - **性能...
- **预测评分**:对于目标用户未评分的电影,UCF会找到与其最相似的一些用户,然后根据这些用户的评分预测目标用户对该电影的评分。 - **Top-N推荐**:根据预测评分,为每个用户推荐N个未评价但预测评分最高的项目...
如果`username`不存在或为空,即用户未登录,则重定向到登录页面;反之,则允许请求继续通过`FilterChain`传递给目标资源。 3. **销毁**:`destroy()`方法用于在Web应用停止或过滤器被卸载时释放资源,本例中未做...
未通过过滤的节点将不会在视图中出现。 5. **显示树形结构**:使用`JTree`组件,将过滤后的节点列表传递给它。可以设置`TreeModel`来改变树的结构,并通过监听`TreeModelListener`来实时更新视图。 在这个过程中,...
为了解决这个问题,我们可以创建一个名为`SqlInjectionFilter`的Java过滤器,该过滤器将在HTTP请求到达实际处理请求的Servlet之前运行。过滤器的主要任务是检查请求参数,确保它们不包含任何可能导致SQL注入的恶意...
Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许我们在数据处理前后插入自定义逻辑,对请求和响应进行拦截、修改或增强。本教程将深入讲解Java过滤...
Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许我们在请求被发送到目标资源(如Servlet、JSP页面)之前或之后进行预处理和后处理。在这个场景中,...
- `redirectURL`:如果用户未登录,重定向的URL(不包括ContextPath)。 - `notCheckURLList`:一个以分号分隔的URL列表,表示这些URL不需要进行登录检查(同样不包含ContextPath)。 过滤器检查每个请求的...
在这个过滤器中,我们可以看到它主要由两部分组成:一部分是web.xml中的配置,另一部分是Java代码中的实现。 首先,在web.xml中,我们可以看到filter的配置,包括filter-name和filter-class两个参数。filter-name是...
3. **过滤条件设置**:用户可以设定过滤规则,比如只显示ERROR级别的日志,或者只显示包含特定关键字的日志。这些条件通常通过构造函数或配置文件传递给程序。 4. **过滤操作**:根据设定的规则,FilterFile会遍历...
`CheckLoginFilter` 过滤器用于检查用户是否已登录,如果未登录则重定向到登录页面。配置参数包括 `checkSessionKey`,用于检查的会话(Session)关键字;`redirectURL`,未登录时重定向的URL(不包含ContextPath)...
如果用户未登录,则拦截器会重定向用户到登录页面;如果已登录,则放行请求,让用户可以正常访问资源。 #### 三、实现细节 以下是对给定代码片段的详细解析: 1. **包声明与导入** ```java package util; ...
### Java过滤器实现原理与应用 #### 过滤器概述 在Java Web开发中,过滤器(Filter)是一种非常实用的技术,它可以在客户端发送请求到服务器端的过程中进行一系列的预处理工作,比如设置字符编码、身份认证等。...
协同过滤的核心思想是通过分析用户的历史行为(如购买记录、评分、浏览历史等),找出具有相似行为模式的用户群体,然后将这些用户喜欢的但目标用户还未接触过的物品推荐给目标用户。协同过滤可分为用户-用户协同...
XSS攻击是一种常见的网络安全问题,攻击者通过注入恶意脚本,利用用户浏览器执行,从而窃取用户的敏感信息,如cookies、登录凭证等。XXSProtect通过过滤输入数据,防止恶意代码在网页上被执行。 在提供的描述中,...