- 浏览: 109242 次
- 性别:
- 来自: 北京
文章分类
最新评论
package com.filter;
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_mm.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 ((checkRequestURIIntNotFilterList(req))
&& session.getAttribute("userId") == 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_mm.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;
}
}
--------------------------------web.xml
<filter>
<filter-name>onlineFilter</filter-name>
<filter-class>com.filter.OnlineFilter</filter-class>
<init-param>
<param-name>notCheckURLList</param-name>
<param-value>/login.do</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>onlineFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
发表评论
-
解决excel文字读取错误 可能某些数字格式已丢失
2018-12-29 09:11 618ServletOutputStream ... -
struts上传下载多个文件
2015-04-30 11:24 511实例: 第一步导入包: 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 566//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 14:03 1102<filter> <filte ... -
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 1873JACOB是一个JAVA到微软的COM接口的桥梁。使用JACO ... -
hibernate 查询乱码
2010-10-06 15:12 746在使用HQL进行查询时,如果查询语句中存在中文字符,则会有乱码 ... -
java 多线程代码
2010-09-30 12:44 1489package com.jacob.activeX; imp ... -
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 ...
相关推荐
在本例中,要实现一个简单的登录验证过滤器,可以阻止未登录用户访问除了登录页面以外的其他后台管理页面。通过实现javax.servlet.Filter接口,我们创建了一个LoginFilter类。这个过滤器会在每个请求到达目标页面...
如果`username`不存在或为空,即用户未登录,则重定向到登录页面;反之,则允许请求继续通过`FilterChain`传递给目标资源。 3. **销毁**:`destroy()`方法用于在Web应用停止或过滤器被卸载时释放资源,本例中未做...
5. **考虑异常处理**:在实现过程中,还要考虑异常处理,如用户未登录但尝试访问受保护资源时的错误提示,以及可能出现的网络问题。 6. **优化与扩展**:可以考虑使用Spring Security等框架,它们提供了更强大、...
// 用户未登录,重定向到登录页面 res.sendRedirect(req.getContextPath() + "/login"); return; } // 如果用户已登录,允许请求继续 chain.doFilter(request, response); } // 实现其他Filter接口方法,...
在Play for Scala框架中,实现SessionFilter的主要目的是为了确保只有已登录的用户才能访问特定的受保护页面,而未登录的用户会被重定向到登录页面。以下是对标题和描述中涉及知识点的详细解释: 1. **Scala编程...
因此,这个过滤器的主要作用是限制未登陆用户的访问,从而保护某些资源的安全。 在实际应用中,这个过滤器可以应用于各种Web应用程序中,以保护用户数据的安全和隐私。 用户登陆过滤器是一个非常重要的安全机制,...
通过使用Java EE中的过滤器,我们可以有效地管理项目的字符编码,并且可以实现对未登录用户的访问权限控制。这两种方法不仅可以提高系统的安全性,还能提升用户体验。在实际项目开发过程中,开发者可以根据具体需求...
- 如果 `username` 为空或者等于空字符串,表示用户未登录,重定向到登录页面;否则继续执行链中的下一个过滤器或目标资源。 3. **销毁方法 `destroy`**:当过滤器被卸载时调用,可以在此处清理资源等操作。 #### ...
3. **处理**:如果发现用户未登录,过滤器会阻止请求继续,并将响应重定向到登录页面。如果用户已登录,过滤器则允许请求继续到目标资源。 4. **销毁**:在应用关闭或过滤器不再需要时,过滤器会被销毁,释放所占用...
- **过滤器拦截**:过滤器检查请求,如果用户未登录,过滤器会阻止请求继续,并重定向到登录页面。 - **用户输入**:用户在登录页面输入凭证(用户名和密码)。 - **验证**:服务器端接收登录信息,验证其正确性...
// 用户未登录,重定向到登录页面 filterContext.Result = new RedirectResult("/Account/Login"); } } } ``` 然后,我们可以在控制器或特定动作上应用这个自定义的授权过滤器,确保只有登录的用户才能访问: ...
如果用户未登录,过滤器将拦截请求并重定向到登录页面。一旦用户成功登录,通常会将用户信息(如用户名或ID)存储在会话(session)中。 3. **Session和Cookie**: - **Session**:在Java Web中,session用于在...
在这个场景下,登录验证过滤器会检查每个请求,如果用户未登录,则重定向他们到登录页面,或者如果已经登录,允许请求继续。 5. **过滤器链(Filter Chain)**:多个过滤器可以串联起来形成过滤器链,按照定义的...
例如,将所有与管理员相关的请求路径映射到登录过滤器,防止未授权访问。 5. **异常处理**:在过滤器中捕获登录相关的异常,如用户名或密码错误,可以统一处理这些异常,提供友好的错误提示,而不是暴露系统的具体...
在我们的登录实例中,过滤器会拦截所有请求,检查用户是否已经登录,未登录的用户将被重定向到登录页面。 实现过滤器的步骤通常包括以下几步: 1. **创建过滤器类**:首先,我们需要创建一个实现`Filter`接口的类...
例如,我们可以指定只有已登录用户才能访问`/admin/*`这样的路径: ```xml <filter-name>LoginFilter <filter-class>com.example.filter.LoginFilter</filter-class> <filter-name>LoginFilter ...
如果你的过滤器设置正确,未登录用户将会被重定向到登录页面。你可以使用工具如Eclipse(`.classpath`和`.project`文件表明这是一个Eclipse项目)来调试和测试过滤器。 5. **扩展与优化**: 这只是一个基础的权限...
1. **权限验证**:对每个请求进行过滤,检查用户是否已登录,如果未登录则重定向到登录页面。 2. **安全过滤**:过滤非法字符,防止SQL注入攻击,确保输入的数据安全。 3. **日志记录**:记录用户的登录尝试,便于...
我们可以通过配置Spring Security的XML配置文件,指定哪些URL需要过滤,以及未登录时的行为。 5. **请求拦截器**:除了过滤器,Spring MVC还提供了`HandlerInterceptor`接口,用于实现更高级别的请求拦截。你可以...