首页 > 解决方案 > 如何在 Spring WebMVC 框架的 JSP 文件中包含外部 JS 文件?

问题描述

我的目录结构我试过下面的答案,但它没有用..

如何在 JSP 页面中包含外部 JS 文件

我一直在谷歌上搜索,但找不到任何有用的东西......我的 JS 文件与 WEB-INF 的文件处于同一级别......任何帮助将不胜感激......

下面是我用来在 JSP 中包含我的 JS 文件的代码:-

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.18.0/jquery.validate.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/formValidation.js"></script>

下面的代码在 web.xml 中:-

<servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
    </context-param>

以下代码在 dispatcher-servlet.xml 文件中:-

<context:component-scan base-package="com.programcreek.helloworld.controller" />

    <bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

标签: javascriptjavaspringspring-mvcjsp

解决方案


您可能需要添加ResourceHandler以解析您的静态资源,例如js/css目录

public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry
        .addResourceHandler("/js/**")
        .addResourceLocations("/js/")
        .setCachePeriod(3600)
        .resourceChain(true)
        .addResolver(new PathResourceResolver());
}

该方法适用于java配置类extends WebMvcConfigurerAdapter

xml版本应该是这样的

<mvc:resources mapping="/js/**" location="/js/"/>

这将解析目录下的任何.js文件,在文件/webapp/js/中使用类似下面的内容.jsp

<script src="js/custom.js"></script>

推荐阅读