Servlets 如何过滤不同的url以使用相同的servlet?
假设我的代码中有一些名为/servlet1、/servlet2等的servlet 我的目标是使用同一组servlet为两个不同的应用程序提供服务: /myapp1/servlet1->使用/登录名为myapp1的参数 /myapp2/servlet2->使用/登录名为myapp2的参数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
我想我必须使用过滤器和过滤器映射,但到目前为止我还没有成功。这里有一个过滤器示例: 公共类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