44

サーブレット2.5を使用するTomcat6を使用しています。ServletRequestAPIのサーブレット3.0で提供されるメソッドがあり、にServletContext関連付けられたオブジェクトへのハンドルを提供しますServletRequest。サーブレット2.5APIを使用しているときにServletContextオブジェクトを取得する方法はありますか?ServletRequest

4

1 に答える 1

83

で入手できますHttpSession#getServletContext()

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

ただし、これにより、望ましくない場合に不必要にセッションが作成される場合があります。

しかし、すでにHttpServletクラスのインスタンスに座っている場合は、継承されたGenericServlet#getServletContext()メソッドを使用してください。

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

または、すでにインターフェイスのインスタンスに座っている場合はFilter、単に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();
    // ...
}
于 2012-05-16T16:45:38.110 に答える