在eclipse中访问WEB-INF下css文件的问题

我用的开发工具是eclipse,这个问题可能对开放工具无关,但是有必要说明一下。如图1,在WebContent下创建了一个index.jsp文件,在WebContent的WEB-INF中也创建了一个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

阅读 4.5k
2 个回答

WEB-INF中创建的文件不能直接从外部访问到, 这是servlet api的标准里规定的, 所有web容器也都是按此实现的。
想用的话,可以通过代码(如spring mvc)或在可以访问到的jsp里用include标签来间接访问。

静态资源的保护区访问

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>
        <!--这里是你静态资源的地址 -->
        <param-value>/WEB-INF/static</param-value>
    </init-param>       
</servlet>

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



问题已经解决
主要原因就是,在项目开发中,把jsp页面应该放在WEB-INF下,通过浏览器直接访问该jsp时,是访问不到的。如果把jsp页面放在webcontent下,直接访问就行,就不多说了;如果把jsp页面放在WEB-INF下,用几种不同的方法,我用的方法是,在webcontent下建一个index.jsp,直接访问webcontent下的文件从而跳转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>

图片描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题