- 浏览: 73597 次
- 性别:
- 来自: 临沂
文章分类
最新评论
-
yuanke:
呵呵,早就解决了!
JDIC做了一个IE浏览器 -
lzj0470:
兄弟,解决了吗?我这几天,也是遇到这样的问题。指定JRE,不能 ...
JDIC做了一个IE浏览器 -
yefansiping:
这个问题在3.0里面解决了,可是我的这块还是出现这样的问题了, ...
from提交的数据到后台是乱码 -
treblesoftware:
STRUTS2还是很好用,很简单的,把它有些鸡胁功能去掉之后, ...
学struts2有感 -
ranLoD:
恰巧我最痛恨的就是struts自带标签怎么办了,<s:f ...
学struts2有感
在jsp开发中,我们经常使用过滤器(filter)来过滤权限,我做了一个简单的过滤器,代码如下:
(1)web.xml中加入:
<filter>
<filter-name>adminfilter</filter-name>
<filter-class>org.frank.filter.AdminFilter</filter-class>
<init-param>
<param-name>jspDirectAccess</param-name>
<param-value>login,/img/</param-value>
</init-param>
<init-param>
<param-name>forwardPage</param-name>
<param-value>/login.do</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>adminfilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
注意:jspDirectAccess,是定义不登录的时候允许访问的地址,比如登录页面、登录页面用到的图片等等,多个地址使用逗号分开。
forwardPage是定义跳转的页面。
<filter-mapping> 一般是声明在其他过滤器的前面,避免引起过滤器失效等其他异常。
(2)定义过滤器AdminFilter类:
package org.frank.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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.seasar.struts.util.RequestUtil;
public class AdminFilter implements Filter {
private String access = "login";
private String forward = "/login";
private static final String[] SESSIONS = {"userInfoSessionDto"};
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)arg0;
HttpServletResponse res = (HttpServletResponse) arg1;
HttpSession session = req.getSession(true);
String path = RequestUtil.getPath(req);
if(processDirectAccess(path)){
arg2.doFilter(arg0, arg1);
}else{
if(session==null || session.getAttribute(SESSIONS[0])==null || "".equals(session.getAttribute(SESSIONS[0]))){
req.getRequestDispatcher(forward).forward(arg0, arg1);
res.setHeader("Cache-Control","no-store");
res.setDateHeader("Expires",1000);
res.setHeader("Pragma","no-cache");
return;
}else{
arg2.doFilter(arg0, arg1);
}
}
}
public boolean processDirectAccess(String path){
if(path==null && "".equals(path)){
return false;
}
if(access!=null){
String[] accs = access.split(",");
for(String acc:accs){
if(path.lastIndexOf(acc + ".do") >=0 || path.lastIndexOf(acc) >=0){
return true;
}
}
}
return false;
}
@Override
public void init(FilterConfig arg0) throws ServletException {
this.access = arg0.getInitParameter("jspDirectAccess");
this.forward = arg0.getInitParameter("forwardPage");
}
}
(3)登录成功保存session
session.setAttribute("userInfoSessionDto", userInfoSessionDto);
注意:
session中存入的userInfoSessionDto要和AdminFilter类中的SESSIONS[0]的值对应。
(1)web.xml中加入:
<filter>
<filter-name>adminfilter</filter-name>
<filter-class>org.frank.filter.AdminFilter</filter-class>
<init-param>
<param-name>jspDirectAccess</param-name>
<param-value>login,/img/</param-value>
</init-param>
<init-param>
<param-name>forwardPage</param-name>
<param-value>/login.do</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>adminfilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
注意:jspDirectAccess,是定义不登录的时候允许访问的地址,比如登录页面、登录页面用到的图片等等,多个地址使用逗号分开。
forwardPage是定义跳转的页面。
<filter-mapping> 一般是声明在其他过滤器的前面,避免引起过滤器失效等其他异常。
(2)定义过滤器AdminFilter类:
package org.frank.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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.seasar.struts.util.RequestUtil;
public class AdminFilter implements Filter {
private String access = "login";
private String forward = "/login";
private static final String[] SESSIONS = {"userInfoSessionDto"};
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)arg0;
HttpServletResponse res = (HttpServletResponse) arg1;
HttpSession session = req.getSession(true);
String path = RequestUtil.getPath(req);
if(processDirectAccess(path)){
arg2.doFilter(arg0, arg1);
}else{
if(session==null || session.getAttribute(SESSIONS[0])==null || "".equals(session.getAttribute(SESSIONS[0]))){
req.getRequestDispatcher(forward).forward(arg0, arg1);
res.setHeader("Cache-Control","no-store");
res.setDateHeader("Expires",1000);
res.setHeader("Pragma","no-cache");
return;
}else{
arg2.doFilter(arg0, arg1);
}
}
}
public boolean processDirectAccess(String path){
if(path==null && "".equals(path)){
return false;
}
if(access!=null){
String[] accs = access.split(",");
for(String acc:accs){
if(path.lastIndexOf(acc + ".do") >=0 || path.lastIndexOf(acc) >=0){
return true;
}
}
}
return false;
}
@Override
public void init(FilterConfig arg0) throws ServletException {
this.access = arg0.getInitParameter("jspDirectAccess");
this.forward = arg0.getInitParameter("forwardPage");
}
}
(3)登录成功保存session
session.setAttribute("userInfoSessionDto", userInfoSessionDto);
注意:
session中存入的userInfoSessionDto要和AdminFilter类中的SESSIONS[0]的值对应。
发表评论
-
30分钟学会如何使用Shiro
2017-07-21 17:37 457本篇内容大多总结自张开涛的《跟我学Shiro》原文地址:ht ... -
Spring+Quartz实现定时从FTP服务器读取文件并存入Oracel数据库
2017-07-17 17:32 682... -
java收集邮箱
2013-10-24 12:51 653java收集群邮箱,首先登陆自己的QQ 然后直接访问:8403 ... -
谁能帮我看一下仿这个网站多少钱
2013-10-23 12:14 605最近挺无聊的,想弄个网站,谁能帮我看一下仿这个网站多少钱? w ... -
MyEclipse9.0正式版的破解和激活方法(注册机)
2013-06-13 12:46 10MyEclipse 9.0的到期了很头 ... -
网址导航代码
2013-02-24 21:04 916本代码是本人精心为网友准备的,热门网址导航站网罗精彩实用网址, ... -
html删除a标签并且替换网址
2013-01-09 17:06 1130做网站开发的时候,复制样式会产生网址,加入说我们想批量替换,下 ... -
sa_framework,s2-tiger,s2-extension2.4 日文的api
2011-12-09 10:40 1124Seasar框架中常用的sa_framework,s2-t ... -
学struts2有感
2009-07-26 19:25 4242看到struts2.x,原以为是struts ... -
ejb中spring代理struts,action请求找不到,can not instance for path
2009-07-13 11:45 1574我在tomcat上struts集成spring没有问题, 但在 ... -
延迟加载 出问题了,有那位见过这个异常?
2009-04-08 17:18 2253我把 lazy 设 为 false 不行, 在web.x ... -
XLoadTree 基于AJAX + XML动态加载的JS树组件的文档
2009-04-08 10:39 2220最近 刚开始 树节点的加载,看了 一篇 文章不错,转转过来共享 ... -
strut2配置spring 用c3p0.ComboPooledDataSource 出现连接错误
2009-04-06 09:09 2072昨天 还可以了,今天 就不能连接了,报一下异常: HTTP S ... -
基于javaWEB学生管理系统需求分析
2009-03-11 19:53 1361这是我 做毕业设计的文档,包含 需求分析,结构设计,模块设计, ... -
JDIC做了一个IE浏览器
2008-09-19 17:04 3416有谁用过JDIC的,我们现在用JDIC做了一个IE浏览器,在E ... -
getHibernateTemplate.get()返回null
2008-08-25 14:15 4003[color=blue]Exception: HTTP St ... -
struts2 配置 exception求救
2008-08-16 10:38 2781我按要求配置,出现exception,没有找出来是什么原因,有 ... -
from提交的数据到后台是乱码
2008-08-13 16:55 3183请高手帮忙,在火狐浏览器插入中文没有问题,在遨游或IE就出现乱 ... -
ext 树状结构组成json格式
2008-08-05 09:41 3361public JSONArray loadOasys() { ... -
Ask help for lombox coonect to oracle10i
2008-04-27 07:23 1411当我配置好了后,还是报以下exception java.sq ...
相关推荐
本文将详细介绍如何在Java中使用Filter过滤器,以及如何配置相关的配置文件,让你一目了然。 ### 1. Filter接口与生命周期 Filter是Servlet API中的一个接口,位于`javax.servlet`包下。它定义了三个关键方法: -...
`Filter创建.exe`可能是一个用于创建过滤器实例或者配置过滤器的工具,而`说明.txt`可能包含了关于如何使用这个工具或者过滤器的详细步骤和注意事项。 过滤器还可以与其他框架集成,比如Spring MVC中的Filter,可以...
在这个方法中,可以释放过滤器使用的资源。 Filter 的应用场景 Filter 可以应用于多种场景,例如: * 认证和授权:可以使用 Filter 来实现认证和授权功能,例如检查用户的登录状态和权限。 * 日志记录:可以使用 ...
filter 过滤器 解释 MultipartHttpServletRequest表单
除了上述示例外,FFmpeg过滤器的使用还涉及了更多细节,例如filter的结构体和filter_frame调用流程。这些内容通常涉及底层编程,需要开发者具备一定的编程基础和对FFmpeg内部结构的深入理解。 当进行复杂操作时,...
SpringBoot的filter过滤器 一、过滤器的作用和概述 1.1 简述 1.2 使用场景 二、自定义过滤的两种方式 2.1 第一种方式 2.1.1 启动类增加注解@ServletComponentScan 2.1.2 定义一个filter类 2.1.3. 测试 2.2 第二种...
解决这个问题的一种常见方法是使用Filter过滤器。以下是配置Filter过滤器处理JSP中文乱码的详细步骤: 1. **配置web.xml文件** 在项目的`web.xml`文件中,你需要添加一个Filter来定义处理乱码的逻辑。首先,声明一...
自Java EE 6开始,除了传统的XML配置,还可以使用Servlet 3.0的注解来配置过滤器,如`@WebFilter`,这样可以简化配置过程。 7. **Filter接口的其他方法**: 过滤器接口还提供了其他方法,如`init(FilterConfig ...
在标题提到的"filter过滤器的简单使用.rar"压缩包中,很显然包含了一个关于如何在Maven项目和Spring Boot项目中使用Filter的示例。下面将详细介绍Filter的基本概念、工作原理以及如何在两种项目环境中应用。 **...
在Java Web开发中,`Filter`过滤器是一个关键的安全组件,用于拦截...总的来说,`URLfilter`展示了如何使用Java过滤器来防止SQL注入攻击的一个基本思路,但在实际应用中,需要结合更全面的安全策略来提高系统的安全性。
- **在JavaScript中**,使用 `$filter` 服务:`变量 = $filter("过滤器名称")(被过滤数据, 过滤条件1, 过滤条件2, ...)`。 总的来说,AngularJS的过滤器是增强数据表现力的重要手段,无论是内置的还是自定义的,...
下面我们就通过分析一个具体的示例代码来详细了解如何使用JSP Filter过滤器来判断用户是否已经登录。 #### 示例代码分析 首先,我们来看一下示例中的过滤器类`RightFilter`: ```java import javax.servlet....
在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它允许开发者在请求被处理之前或之后执行一些预定义的任务。本篇文章将基于提供的标题和描述,详细讲解过滤器的概念、工作原理以及如何通过源码实现一个...
主要介绍了zf框架的Filter过滤器使用示例,代码中有注释,需要的朋友可以参考下
在本实例中,我们将深入探讨Servlet过滤器(Filter)的使用和实现,以及它在实际应用中的重要性。 一、Servlet过滤器简介 Servlet过滤器遵循Java Servlet规范,通过实现`javax.servlet.Filter`接口来创建自定义过滤...
在探讨“hibernate过滤器使用例子”这一主题时,我们深入分析了如何在Hibernate框架中运用过滤器功能,以及如何结合分页技术优化数据查询效率。以下将详细阐述相关知识点,包括过滤器的基本概念、配置方法、源码解析...
为什么使用PHP Filter过滤器? 在Web应用程序中,数据通常来自各种不可信源,例如用户输入、cookies、服务器变量或外部API。这些数据可能包含错误或恶意内容,因此,对输入进行验证和过滤至关重要,以防止诸如SQL...
【Java Filter过滤器详解】 Java Filter是Java Servlet技术的一部分,它允许开发者在Servlet容器中对HTTP请求和响应进行拦截处理,实现数据过滤、权限控制、日志记录等多种功能。Filter的生命周期包括三个主要方法...