【问题标题】:Spring MVC - include static files / javascript , cssSpring MVC - 包含静态文件/javascript、css
【发布时间】:2012-01-24 20:05:51
【问题描述】:

我已经创建了 MVC 应用程序。

我想将 js 或 css 文件包含到 jsp 中。

我的静态文件位于:

- 网络应用 -js/jquery.js -WEB-INF| | - jsp/*.jsp

我包含 jquery 的代码是:

<script type="text/javascript" src="<c:url value="js/jquery.js" />"></script>

我无法将 js 文件加载到视图中。

我看到了带有信息的日志:

WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/pool/js/jquery.js] in DispatcherServlet with name 'appServlet'

这意味着,MVC 尝试将 url 映射到 js 文件。

我认为我的配置有问题,但我不知道是什么。

我的 web.xml 是:

<?xml version="1.0" encoding="UTF-8"?>

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Processes application requests -->
<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

  <filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>hibernateFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

【问题讨论】:

标签: spring model-view-controller


【解决方案1】:

将此添加到您的配置中,并根据您的需要修改位置。

  <mvc:resources mapping="/static/**" location="/WEB-INF/static/"/>

看到这个How to handle static content in Spring MVC?

【讨论】:

    【解决方案2】:

    将您的 DispatcherServlet 映射更改为例如:

    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>*.jsp</url-pattern>
    </servlet-mapping>
    

    或其他不冲突的url-pattern,如*.htm/controllers/*。请记住,从现在开始,您的所有控制器都只能通过此模式使用。

    现在它正在拦截您的 Web 应用程序中的所有内容,包括 .js 文件、图像等。

    hibernateFilter 相同 - 在获取.js 文件时,您真的不需要打开的 Hibernate 会话,不是吗?

    【讨论】:

    • 但是,当我这样做时,我的实际映射被破坏了。更改我的网址后:localhost:8080/pool/main 不起作用
    • 一个 chenge - 我用 *.js 添加了另一个 servlet-mapping
    【解决方案3】:

    为什么不用简单的jsp核心呢?

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>    
    <link rel="stylesheet" type="text/css" href="<c:url value='/resources/css/bootstrap.css'/>" />
    

    【讨论】:

      【解决方案4】:

      使用 spring JSTL 标签来包含外部脚本文件或样式表。 首先你应该在 JSP 中包含 taglib,如下所示。

      <%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
      

      然后您可以使用包含外部脚本文件,

      <script type="text/javascript" src="<spring:url value="/js/jquery.js"/>"></script>
      

      【讨论】:

        【解决方案5】:

        我同意你的回答。但在 style.css 文件中声明与图像路径相关的 url。

        --style.css--

        .cwt-object0
        {
            display: block;
            left: 2.62%;
            margin-left: -1px;
            position: absolute;
            top: 43px;
            width: 64px;
            height: 64px;
            background-image: url('/resources/images/object0.png');
            background-position: 0 0;
            background-repeat: no-repeat;
            z-index: 0;
        }
        

        如何在style.css文件中使用标签&lt;spring:url&gt;&lt;/spring:url&gt;在浏览器IE/Firefox中查看

        --jsp文件---

        <link href="<spring:url value="/resources/style.css"/>" rel="stylesheet" type="text/css" media="screen">
        

        【讨论】:

          【解决方案6】:

          在你的配置文件中添加mvc:resources(*-servlet.xml),你会发现它有效

          【讨论】:

            【解决方案7】:

            我只是跟着Mkyong Tutorial 放置 css、js、jquery 和图像文件。它为我工作。

            在 servlet-context.xml 中

            <!-- Handles HTTP GET requests for /resources/** by efficiently serving 
                    up static resources in the ${webappRoot}/resources directory -->
                <resources mapping="/resources/**" location="/resources/assets/" />
            

            在JSP中,导入标签库

            <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
            

            并添加喜欢

            <link rel="stylesheet" href="<c:url value='/resources/css/custom.css'/>">
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-07-12
              • 2014-03-01
              • 1970-01-01
              • 1970-01-01
              • 2017-08-17
              相关资源
              最近更新 更多