鍍金池/ 問答/HTML5  HTML/ 在eclipse中訪問WEB-INF下css文件的問題

在eclipse中訪問WEB-INF下css文件的問題

我用的開發(fā)工具是eclipse,這個問題可能對開放工具無關(guān),但是有必要說明一下。如圖1,在WebContent下創(chuàng)建了一個index.jsp文件,在WebContent的WEB-INF中也創(chuàng)建了一個index.jsp文件。
在webcontent下的index.jsp中使用<jsp:forward>,代碼如下

<body>
    <jsp:forward page = "/WEB-INF/jsp/index.jsp" ></jsp:forward>
</body>

在WEB-INF里的index.jsp怎么樣才能訪問到同級的css文件?

謝謝大神指教

圖1圖1

回答
編輯回答
奧特蛋

WEB-INF中創(chuàng)建的文件不能直接從外部訪問到, 這是servlet api的標準里規(guī)定的, 所有web容器也都是按此實現(xiàn)的。
想用的話,可以通過代碼(如spring mvc)或在可以訪問到的jsp里用include標簽來間接訪問。

靜態(tài)資源的保護區(qū)訪問

package com.example;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import org.apache.catalina.servlets.DefaultServlet;

public class StaticServlet extends DefaultServlet
{
   protected String pathPrefix = "/static";

   public void init(ServletConfig config) throws ServletException
   {
      super.init(config);

      if (config.getInitParameter("pathPrefix") != null)
      {
         pathPrefix = config.getInitParameter("pathPrefix");
      }
   }

   protected String getRelativePath(HttpServletRequest req)
   {
      return pathPrefix + super.getRelativePath(req);
   }
}


在應用web.xml配置

   
    
<servlet>
    <servlet-name>StaticServlet</servlet-name>
    <servlet-class>com.example.StaticServlet</servlet-class>
    <init-param>
        <param-name>pathPrefix</param-name>
        <!--這里是你靜態(tài)資源的地址 -->
        <param-value>/WEB-INF/static</param-value>
    </init-param>       
</servlet>

<servlet-mapping>
    <servlet-name>StaticServlet</servlet-name>
    <url-pattern>/static/*</url-pattern>
</servlet-mapping>  



2017年8月3日 01:29
編輯回答
尐潴豬

問題已經(jīng)解決
主要原因就是,在項目開發(fā)中,把jsp頁面應該放在WEB-INF下,通過瀏覽器直接訪問該jsp時,是訪問不到的。如果把jsp頁面放在webcontent下,直接訪問就行,就不多說了;如果把jsp頁面放在WEB-INF下,用幾種不同的方法,我用的方法是,在webcontent下建一個index.jsp,直接訪問webcontent下的文件從而跳轉(zhuǎn)WEB-INF中的jsp。代碼如下

<jsp:forward page = "/WEB-INF/jsp/index.jsp" ></jsp:forward>

而css,js,images等文件不可以放在WEB-INF下,這樣會找不到,直接放在webcotent下面,用相對路徑外部導入css就可以了。代碼如下

<link rel="stylesheet" href="css/index.css" type="text/css"></link>

圖片描述

2018年7月29日 02:18