2014-03-27 104 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/*'或更深的 –