如何过滤不同的 url 以便与相同的 servlet 一起工作?

Posted

技术标签:

【中文标题】如何过滤不同的 url 以便与相同的 servlet 一起工作?【英文标题】:How to filter different url in order work with same servlets? 【发布时间】:2015-10-26 00:52:14 【问题描述】:

假设我的代码中有一些名为 /servlet1、/servlet2 等的 servlet。

我的目标是使用同一组 servlet 为两个不同的应用程序提供服务:

/myapp1/servlet1 -> 使用 /login 和一个名为 myapp1 的参数

/myapp2/servlet2 -> 使用 /login 和一个名为 myapp2 的参数

我想我必须使用过滤器和过滤器映射,但到目前为止我还没有成功。

【问题讨论】:

【参考方案1】:

这里是一个过滤器的例子:

公共类 LoginFilter 实现过滤器

public LoginFilter() 
    // TODO Auto-generated constructor stub



public void destroy() 
    // TODO Auto-generated method stub


public String clean(String s)
    s=s.replaceAll("[^a-zA-Z0-9]", "");
    s=s.trim();
    return s;


public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException 
    HttpServletRequest req=(HttpServletRequest) request;
    HttpServletResponse resp=(HttpServletResponse) response;

    String user=req.getParameter("username");
    String pass=req.getParameter("password");
    req.removeAttribute("username");
    req.removeAttribute("password");

    user=clean(user);
    pass=clean(pass);

    req.setAttribute("username", user);
    req.setAttribute("password", pass);

    chain.doFilter(req, response);



public void init(FilterConfig fConfig) throws ServletException 


这里是 web.xml

 <filter>
<filter-name>LoginFilter</filter-name>
<filter-class>pack.LoginFilter</filter-class>  </filter>

<filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/some-url-patter</url-pattern> </filter-mapping>

您必须具有与 servlet 相同的 url 模式,也可以添加过滤器。你可以有任意数量的过滤器。 它的工作原理是这样的:filter1->filter2->filter3->...->servlet

【讨论】:

以上是关于如何过滤不同的 url 以便与相同的 servlet 一起工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS WKWebView 中过滤来自不同 URL 的确认对话框

如何使用dplyr过滤相同名称但不同编号的列[重复]

Filter及FilterChain的使用详解

day22(过滤器Filter)

如何在同一页面中使用相同的javascript过滤器两次使用不同的表?

sql 如何过滤重复记录