java过滤器filter过滤某个包_java过滤器filter能过滤某个包下的所有servlet吗

展开全部

不能直接过滤。过滤器是根据URL路径来过滤的,不是根据包名来拦截的。但636f70793231313335323631343130323136353331333363393631是你可以按照这样的规则配置你的web.xml文件,间接实现你的需求。

① 你的servlet的访问路径,根据包名来命名。设计二级路径。比如你有一个user.servlet包。你可以把里面的所有Servlet路径全部设置为/user/xxxServlet。你的filter拦截路径就改为

/user/*//1 AServlet代码

package user.servlet;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class AServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

System.out.println(456);

}

}

//2BServlet代码

package user.servlet;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class BServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

System.out.println(123);

}

}

//3 filter代码

package 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;

public class Myfilter implements Filter {

@Override

public void destroy() {}

@Override

public void doFilter(ServletRequest arg0, ServletResponse arg1,

FilterChain arg2) throws IOException, ServletException {

System.out.println("执行了"+arg0.getParameter("name"));

arg2.doFilter(arg0, arg1);

}

@Override

public void init(FilterConfig arg0) throws ServletException {}

}

//4 web.xml配置

AServlet

user.servlet.AServlet

AServlet

/user/AServlet

Bservlet

user.servlet.BServlet

Bservlet

/user/BServlet

Myfilter

filter.Myfilter

Myfilter

/user/*

//5测试 我的工程应用名是HelloWorld

http://localhost/HelloWorld/user/AServlet?name=aaa

http://localhost/HelloWorld/user/BServlet?name=bbb

会发现控制台分别打印出取出的参数aaa和bbb证明。拦截成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值