gpt4 book ai didi

spring-mvc - Spring MVC InternalResourceViewResolver 和静态资源

转载 作者:行者123 更新时间:2023-12-01 12:38:57 25 4
gpt4 key购买 nike

当我单独使用 InternalResourceViewResolver 时,我的 View 将被正确解析。当我将注解驱动添加到我的配置文件时,我的 View 得到解析但我的资源没有。这让我发疯......

src
main
java
resources
css
js
ajaxHandler.js
webapp
WEB-INF
spring
appServlet
servlet-context.xml
views
index.jsp
internalview.jsp
web.xml

这是我的 web.xml:

<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>spring.introduction</display-name>

<servlet>
<servlet-name>ApplicationServlet</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>
</servlet>

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

<welcome-file-list>
<welcome-file>WEB-INF/views/index.jsp</welcome-file>
</welcome-file-list>

</web-app>

servlet-context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<context:component-scan base-package="com.tsystems.sample" />

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

<mvc:resources location="/js/**" mapping="/resources/js/" />
<!--mvc:default-servlet-handler/-->
<mvc:annotation-driven/>

</beans:beans>

基本流程:Index.jsp 有一个将“sender:index”作为 POST 传递给 indexController 的表单。这应该归结为以下方法:

@RequestMapping(value = "/Forward", method = RequestMethod.POST)
public ModelAndView forward(@RequestParam(value = "sender", required = true) String sender, Model model) {

m_logger.info(String.format("Captured sender attribute: " + sender));

ModelAndView mav = new ModelAndView("internalview");
mav.addObject("sender", sender);

return mav;
}

到目前为止这有效,信息消息出现在服务器日志中并且内部 View 出现。在我的 internalview.jsp 中,我尝试按如下方式加载 js:

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

以一个很好的 404 错误和 server.log 中的以下消息结束:

[org.springframework.web.servlet.PageNotFound] (default task-20) No mapping found for HTTP request with URI [/spring.introduction/js/ajaxHandler.js] in DispatcherServlet with name 'ApplicationServlet'

如果我从配置文件中删除注解驱动,甚至我的 View 也会变成 404 NOT FOUND。如果我删除 annotation-driven AND mvc:resources 它可以工作,但当然不会加载 .js。

我该如何解决这个问题? (有类似的问题,但在尝试了这些问题的答案后,没有一个有效,所以虽然我承认这个问题可能与其他人重复,我仍然开放,因为他们的答案都没有解决问题)

最佳答案

Web 资源,如 JavaScript 和 CSS 通常应该放在 src/main/webapp 目录下。所以在你的情况下(基于你的 mvc:resources 映射),你应该在 src/main/webapp 中创建 resources 目录并移动 src/main/resources 中的 code>jscss 目录。

src/main/webapp/resources/js
src/main/webapp/resources/css

关于spring-mvc - Spring MVC InternalResourceViewResolver 和静态资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26829062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com