2011-03-17 20 views
6

Tomcat'te, sayfanın ortasındaki başka bir JSP dosyasını içeren bir ana JSP dosyasına sahip bir web sunucum var. Bu dosyaya doğrudan erişimi reddetmek ve sadece ana dizin sayfasına doğrudan erişime izin vermek istiyorum.tomcat belirli dosyalara erişimi reddediyor

Ayrıca, kullanıcıların doğrudan webapp'ımdan görüntü alabilmesini istemiyorum.

Bu istekleri Tomcat ile nasıl reddedebilirim? Tüm isteklerin ana sayfama iletilmesini istiyorum.

<filter> 
    <filter-name>MyFilter</filter-name> 
    <filter-class>package.FilterImplementation</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>MyFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

DÜZENLEME

Her şey size: web.xml''deki aşağıdakileri ekleyin

package package; 

import javax.servlet.*; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class FilterImplementation implements Filter 
{ 
    public void init(FilterConfig filterConfig) throws ServletException {...} 

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException 
    { 
     // if you detect an illegal request, throw an exception or return without calling chain.doFilter. 
     chain.doFilter(request, response);  
    } 

    public void destroy() {...} 
} 

:

cevap

4

bir yolu Örneğin bir Filter

uygulamak olacaktır WHI hakkında bilmeniz gerekenler ch sayfası talep ediliyor request parametresinde. parametre türü ServletRequest ancak hemen hemen her zaman bir HttpServletRequest böylece aşağıdakileri yapabilirsiniz olacaktır: dahil JSP dosyaları İlişkin

if (request instanceof HttpServletRequest) 
{ 
    HttpServletRequest hrequest = (HttpServletRequest) request; 
    String uri = hrequest.getRequestURI(); // you should be able to just use this 
    String uri = hrequest.getRequestURL(); // otherwise there are more in-depth fields 
} 
+0

nasıl ben istenen sayfayı alabilirim? – shay

3
  1. , sen WEB-INF klasörü altında koyun gerekir. Bu şekilde, doğrudan tarayıcıdan erişilemezler, ancak ana JSP dosyanızın bunları içermesine izin verir.

  2. Resimlerle aynı şey, ancak resimler biraz zor, ancak yapılabilir. Bunları WEB-INF klasörünün altına yerleştirin ve bu nedenle, görüntülere statik olarak <img> etiketinden erişemezsiniz. Ne yapmak gerekir senin <img> şuna benzer, ... görüntü almak ve dışarı akışı için bir vekil olarak hizmet veren servlet oluşturmak yani: -

====== ====

<img src="/webapp/imageServlet?img=world.jpg"> 

==========

Sizin ImageServlet sonra WEB-INF klasörden world.jpg dosyayı okumak ve görüntü akışı olacaktır.

9

Sayfanın Prevent access to include files.

web.xml''deki ekleyin:

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Include files</web-resource-name> 
     <description>No direct access to include files.</description> 
     <url-pattern>/inc/*</url-pattern> 
     <http-method>POST</http-method> 
     <http-method>GET</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <description>No direct browser access to include files.</description> 
     <role-name>NobodyHasThisRole</role-name> 
    </auth-constraint> 
</security-constraint>