2012-05-16 15 views
38

Sto utilizzando Tomcat 6 che utilizza Servlet 2.5. Esiste un metodo fornito in Servlet 3.0 nell'API ServletRequest che fornisce un handle all'oggetto ServletContext associato allo ServletRequest. C'è un modo per ottenere l'oggetto ServletContext da ServletRequest mentre si utilizza l'API Servlet 2.5?Come ottenere il contesto servlet da ServletRequest in Servlet 2.5?

risposta

74

Si può ottenere dal HttpSession#getServletContext().

ServletContext context = request.getSession().getServletContext(); 

Ciò può tuttavia creare inutilmente la sessione quando non desiderato.

Tuttavia, quando si è già seduti in un'istanza della classe HttpServlet, è sufficiente utilizzare il metodo ereditato GenericServlet#getServletContext().

@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    ServletContext context = getServletContext(); 
    // ... 
} 

O quando si è già seduto in un'istanza dell'interfaccia Filter, basta usare FilterConfig#getServletContext().

private FilterConfig config; 

@Override 
public void init(FilterConfig config) { 
    this.config = config; 
} 

@Override 
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
    ServletContext context = config.getServletContext(); 
    // ... 
} 
+0

E in una JSP http://stackoverflow.com/questions/2898390/java-jsp-servlet-equivalent-of-getservletcontext-from-inside-a-jsp – tgkprog

+3

@tgkprog: Santo, per favore no! – BalusC

+0

Solo per testare, quindi inserire un filtro – tgkprog