当前位置:首页 » 净水方式 » javafilter不过滤器

javafilter不过滤器

发布时间: 2021-03-06 04:52:41

『壹』 java 中的过滤器filter 都有什么作用

过滤器顾名思义就是进行过滤的,可以实现代码的定向执行和预处理。
通俗点说专法属filter相当于加油站,request是条路,response是条路,目的地是servlet,这个加油站设在什么地方对什么数据操作可以由你来控制。
备注:过滤器可以再请求和响应之前做一部分预处理,有效的过滤掉不需要的内容,而且过滤器可以被复用,节省了大量的复用代码,提高了java的代码执行效率

『贰』 java过滤器的问题

没有验证成功的原因很多,从你的XML中看,配置的没有问题,可能是程序中的问题.
如果有一个页面专不属想验证,靠配置是没有办法实现的,只能过滤指定的文件,或者指定文件夹的文件,或者是一定扩展名的文件.
所以一种方法是配置多个<filter-mapping>...</filter-mapping>,唯独不配置不想验证的页面,另一种方法是在程序里获得当前页面的名字,(HttpServletRequest)request.getHeader("referer")可以获得当前页面的名字,比如Welcome.html或者Login.cgi等等,用indexOf()判断,过滤掉这种情况,使之不进行判断或者操作.

『叁』 java过滤器filter能过滤某个包下的所有servlet吗

j2ee自带的filter好像不可以根据包来过滤,不过struts和sprint合起来就可以控制了。

『肆』 关于java过滤器(filter)的一个疑惑。。。

msg+="!!!"; 这句话 其实是NWE了一个String 对象了
msg是一个新的对象 不是你先前的那个对象了

已经不是以前的那个对象了
懂了吧

『伍』 为何java中的过滤器filter不起作用

过滤器配置正确,但却没有起到过滤作用,原因可能是排放位置的版问题。如下:权

错误:

<filter>
<filter-name>struts2</filter-name>
<filter-class>com.yiwo.base.web.filter.PrepareFilter</filter-class>
</filter>

<filter>
<filter-name>userFilter</filter-name>
<filter-class>com.yiwo.base.web.filter.UserFilter</filter-class>
</filter>

『陆』 java web中的filter权限过滤问题

是login.jsp被嵌入到iframe里吧?三种解决方案:

  1. 首页菜单栏就做权限控制,没有权限的菜单不展示

  2. 需要专权限的菜单点击时先属ajax请求后台判断权限,权限通过了再加载页面到iframe,否则页面重定向到登录页

  3. 登录页加入js判断该页面是否处于iframe中,如果是则重写parent.location到登录页

『柒』 java过滤器怎么指定不过滤哪些文件

port java.io.FilenameFilter;

/**
* 文件过滤器的简单实现
*
* @author ajaxfan
* @date 2010-04-17
*/
public class FileNameFilterDemo {
public static void main(String[] args) {
list("d:/");
}

/**
* 列出特定路径下的txt文件
*
* @param directoryName
* 路径名
*/
private static void list(String directoryName) {
File dir = new File(directoryName);
// 确定该路径指向一个目录
if (dir.exists() && dir.isDirectory()) {
// 列出所有结尾为txt的文件
File[] files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith("txt");
}
});
System.out.println(java.util.Arrays.toString(files));
}
}
}

『捌』 java web 过滤器跟拦截器的区别和使用

区别如下:

1 、拦截器是基于java的反射机制的,而过滤器是基于函数回调。

2 、拦截器不依赖与servlet容器,过滤器依赖与servlet容器。

3 、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

4 、拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

5 、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

使用如下:

在Servlet作为过滤器使用时,它可以对客户的请求进行处理。处理完成后,它会交给下一个过滤器处理,这样,客户的请求在过滤链里逐个处理,直到请求发送到目标为止。例如,某网站里有提交“修改的注册信息”的网页,当用户填写完修改信息并提交后,服务器在进行处理时需要做两项工作:判断客户端的会话是否有效;对提交的数据进行统一编码。

这两项工作可以在由两个过滤器组成的过滤链里进行处理。当过滤器处理成功后,把提交的数据发送到最终目标;如果过滤器处理不成功,将把视图派发到指定的错误页面。

(8)javafilter不过滤器扩展阅读

拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。

在Webwork的中文文档的解释为——拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。

过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请求信息。

『玖』 java过滤器不过滤某个货某一些路径

  • 首先在web.xml 配置 参数

<param-name>noLoginPaths</param-name> 参数名可自取

<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.imooc.filter.LoginFilter</filter-class>
<init-param>
<param-name>noLoginPaths</param-name>
<param-value>login.jsp;fail.jsp;LoginServlet</param-value>
</init-param>
<init-param>
<param-name>charset</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
  • 然后在 Filter 中,创建一个FilterConfig 的引用, 这个引用在init中初始化,并且能够通过它获取<init-param>中的key和value ,

StringnoLoginPaths=config.getInitParameter("noLoginPaths");

  • 然后通过判断用户请求的url 是否符合 noLoginPaths 中设置的不过滤选项,如果如何,就调用do.filter放行

关键代码 :

if(noLoginPaths!=null){
String[]strArray=noLoginPaths.split(";");
for(inti=0;i<strArray.length;i++){

if(strArray[i]==null||"".equals(strArray[i]))continue;

if(request.getRequestURI().indexOf(strArray[i])!=-1){
arg2.doFilter(arg0,arg1);
return;
}
}

}

完整代码:

importjava.io.IOException;

importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;

{

privateFilterConfigconfig;

@Override
publicvoiddestroy(){

}

@Override
publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1,FilterChainarg2)throwsIOException,ServletException{

HttpServletRequestrequest=(HttpServletRequest)arg0;
HttpServletResponseresponse=(HttpServletResponse)arg1;
HttpSessionsession=request.getSession();

StringnoLoginPaths=config.getInitParameter("noLoginPaths");

Stringcharset=config.getInitParameter("charset");
if(charset==null){
charset="UTF-8";
}
request.setCharacterEncoding(charset);

if(noLoginPaths!=null){
String[]strArray=noLoginPaths.split(";");
for(inti=0;i<strArray.length;i++){

if(strArray[i]==null||"".equals(strArray[i]))continue;

if(request.getRequestURI().indexOf(strArray[i])!=-1){
arg2.doFilter(arg0,arg1);
return;
}
}

}
if(session.getAttribute("username")!=null){
arg2.doFilter(arg0,arg1);
}else{
response.sendRedirect("login.jsp");
}

}

@Override
publicvoidinit(FilterConfigarg0)throwsServletException{
config=arg0;
}

}

『拾』 java过滤器怎么不过滤一个页面里包含的多个请求

abstract public class FilterPerRequest implements Filter {

private static final Boolean FILTERED = true;
private ThreadLocal<Boolean> statusLocal = new ThreadLocal<Boolean>();

@Override
final public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
if (hasNotFiltering()) {
doFilterAndDispatchRequest(req, resp, chain);
return;
}
//dispatch request only
chain.doFilter(req, resp);
}

private boolean hasNotFiltering() {
Boolean status = statusLocal.get();
if (status == null) {
return true;
}
return false;
}

private void doFilterAndDispatchRequest(ServletRequest req,
ServletResponse resp, FilterChain chain) throws IOException,
ServletException {
try {
doFilterPerRequest(req, resp);
setFiltered();
chain.doFilter(req, resp);
} finally {
cleanFilterStatus();
}
}

abstract protected void doFilterPerRequest(ServletRequest req,
ServletResponse resp);

private void setFiltered() {
statusLocal.set(FILTERED);
}

private void cleanFilterStatus() {
statusLocal.set(null);
}

}
那要就情况而定了。。。
如果是request范围内的话,就可以使用上面的过滤器。
如果是session范围内的话,就需要在session内存储一个标志变量,方式和request差不多。
如果是限制用户操作的话,那就必须将用户操作持久化。
由于你的问题不明确,我也不好多说...

热点内容
丁度巴拉斯情人电影推荐 发布:2024-08-19 09:13:07 浏览:886
类似深水的露点电影 发布:2024-08-19 09:10:12 浏览:80
《消失的眼角膜》2电影 发布:2024-08-19 08:34:43 浏览:878
私人影院什么电影好看 发布:2024-08-19 08:33:32 浏览:593
干 B 发布:2024-08-19 08:30:21 浏览:910
夜晚看片网站 发布:2024-08-19 08:20:59 浏览:440
台湾男同电影《越界》 发布:2024-08-19 08:04:35 浏览:290
看电影选座位追女孩 发布:2024-08-19 07:54:42 浏览:975
日本a级爱情 发布:2024-08-19 07:30:38 浏览:832
生活中的玛丽类似电影 发布:2024-08-19 07:26:46 浏览:239