2014-03-27 105 views
1

不是在GlassFish上工作这是我的web.xml过滤器的servlet在NetBeans

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 

    <filter> 
      <display-name>MyFilter</display-name> 
      <filter-name>MyFilter</filter-name> 
      <filter-class>AB_DB.MyFilter</filter-class> 
      </filter> 
      <filter-mapping> 
      <filter-name>MyFilter</filter-name> 
      <url-pattern>/MyFilter</url-pattern> 
      </filter-mapping> 
      <servlet> 
      <description></description> 
      <display-name>Profile</display-name> 
      <servlet-name>Profile</servlet-name> 
      <servlet-class>AB_DB.Profile</servlet-class> 
      </servlet> 
      <servlet-mapping> 
      <servlet-name>Profile</servlet-name> 
      <url-pattern>/Profile</url-pattern> 
      </servlet-mapping> 
     </web-app> 

这是过滤器的servlet我试过

package AB_DB; 


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; 
import javax.servlet.http.HttpServletRequest; 

public class MyFilter implements Filter { 

    public MyFilter() { 
    } 

    public void destroy() { 
    } 

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
     String requri = ((HttpServletRequest) request).getRequestURI().substring(((HttpServletRequest) request).getContextPath().length() + 1); 
     System.out.println(requri); 
     //if request uri starts with user/ then system will forward the request to Profile servlet 
     if (requri.startsWith("user/")) { 
      //get userid from request uri 
      String id = requri.substring(5); 
      System.out.println(id); 

      //set attribute "user" with userid value 
      request.setAttribute("user", id); 

      //forward the request to Profile servlet 
      request.getRequestDispatcher("/Profile") 
        .forward(request, response); 
     } else { 
      chain.doFilter(request, response); 
     } 
    } 

    public void init(FilterConfig fConfig) throws ServletException { 
    } 

} 
在GlassFish 4服务器日志

然而,运行项目时完全没有错误。 URI甚至没有被打印出'System.out.println(id);'所以我认为这个过滤器甚至没有被注入。

任何人都可以看到我的代码的任何问题?该sevlet档案没有被跑

+1

你打哪个URL并期望登录控制台? –

+0

website.com/user/Surname1993 – user3078490

+0

你的'Filter'和你的'Servlet'映射到什么'url-pattern'? –

回答

1

已映射oyur滤波器/MyFilter

<url-pattern>/MyFilter</url-pattern> 

和不匹配的URL您请求

/user/Surname1993 

让你的无滤波器被调用

+0

所以url模式是/ user /? – user3078490

+0

根据您的要求使其成为'/ user/*'或更深的 –