Servlets 如何过滤不同的url以使用相同的servlet?

Servlets 如何过滤不同的url以使用相同的servlet?,servlets,url-rewriting,servlet-filters,Servlets,Url Rewriting,Servlet Filters,假设我的代码中有一些名为/servlet1、/servlet2等的servlet 我的目标是使用同一组servlet为两个不同的应用程序提供服务: /myapp1/servlet1->使用/登录名为myapp1的参数 /myapp2/servlet2->使用/登录名为myapp2的参数 我想我必须使用过滤器和过滤器映射,但到目前为止我还没有成功。这里有一个过滤器示例: 公共类LoginFilter实现过滤器{ public LoginFilter() { // TODO Auto-gen

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

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

/myapp1/servlet1->使用/登录名为myapp1的参数

/myapp2/servlet2->使用/登录名为myapp2的参数


我想我必须使用过滤器和过滤器映射,但到目前为止我还没有成功。这里有一个过滤器示例:

公共类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>

逻辑过滤器
pack.LoginFilter

逻辑过滤器
/一些url模式

您还必须具有与servlet相同的url模式来添加过滤器。您可以有任意数量的过滤器。
它的工作原理如下:filter1->filter2->filter3->…->servlet

下面是一个filter示例:

公共类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>

逻辑过滤器
pack.LoginFilter

逻辑过滤器
/一些url模式

您还必须具有与servlet相同的url模式来添加过滤器。您可以有任意数量的过滤器。 它的工作原理如下:filter1->filter2->filter3->…->servlet