0

我有這樣一個servlet:訪問servlet的init參數從過濾器


@WebServlet("https://stackoverflow.com/a/path") 
@WebInitParam(name="name", value="name_value") 
public class MyServlet extends HttpServlet { 
//... 

在這個servlet我已經把一個過濾器:


@WebFilter(dispatcherTypes = { DispatcherType.REQUEST }, urlPatterns = { "https://stackoverflow.com/a/*" }) 
public class MyFilter implements Filter { 

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
//... 
     HttpServletRequest req = (HttpServletRequest)request; 
     //problem comes here 
     System.out.println(req.getServletContext().getInitParameter("name")); 
//... 
} 

的問題是,即使我設置@ WebInitParameter MyServlet,程序打印出一個空字符串(請參閱註釋行//問題在這裏MyFilter)。我驗證並看到init()方法從servlet執行之前的doFilter()。 所以任何人都可以在這個問題上點亮我?爲什麼initParameter「name」爲空,如果它設置爲一個值?

謝謝!

回答

1

我覺得WebInitParam是爲Servlet定義初始化參數,而不是整個應用程序上下文,所以如果你想通過ServletContext對象訪問acces參數,那麼在你的web.xml部署描述符中定義上下文參數。

+0

並可以從過濾器訪問我的servlet的ServletConfig? – artaxerxe 2011-12-20 11:45:13

+0

我不這麼認爲,也許是更好的選擇使用過濾器初始參數,然後servlet init參數。 – designerrr 2011-12-20 12:04:53