当前位置: 首页 > 知识库问答 >
问题:

Spring MVC3.2和ExtJS4.1.3:我必须为al requestMapping路径定义mvc:Resources映射吗?

司寇烨伟
2023-03-14
src
-- webapp
   -- app
   -- extjs4.1.3
   -- css
   -- icons
   -- WEB-INF
      -- jsp
   app.js

我有一个控制器,上面写着这样的

@RequestMapping(value = "/path/init.do", method = RequestMethod.GET)

它返回与WEB-INF/jsp文件夹中的jsp匹配的视图名称。这个jsp加载extjs文件。

查看解析器:

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
        p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

<display-name>tiana Web Application</display-name>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:/spring/application-context.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

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

</web-app>
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/app/**" location="/app/" />
<mvc:resources mapping="/extjs-4.1.3/**" location="/extjs-4.1.3/" />
<mvc:resources mapping="/app.js" location="/app.js" />

我知道如果我把所有这些东西放在资源文件夹中会更好。我只能写:

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

但我不认为这能解决我的问题

我的jsp文件如下所示:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>My jsp title</title>
    <link rel="stylesheet" type="text/css" href='<c:url value="/extjs-4.1.3/resources/css/ext-all.css" />'>

    <link rel="stylesheet" type="text/css" href='<c:url value="/css/myStyle.css" />'>
    <script type="text/javascript" src='<c:url value="/extjs-4.1.3/ext-all-debug.js" />'></script>
    <script type="text/javascript" src="<c:url value="/app.js" />"></script>
   </head>
   <body></body>
   </html>
localhost:8080/myresource.xxx
localhost:8080/mywebapp/path/myresource.xxx
localhost:8080/mywebapp/path/app/controller/myController.js

但我希望它是

localhost:8080/mywebapp/app/controller/myController.js

如果我在extjs文件中放一个图标,我会面临同样的问题,url将是

localhost:8080/mywebapp/path/icons/myIcon.png

而不是

localhost:8080/mywebapp/icons/myIcon.png as expected.
<mvc:resources mapping="/path/app/**" location="/app" />
<mvc:resources mapping="/path/icons/**" location="/icons" />

共有1个答案

田意致
2023-03-14

您可以尝试将所有资源(我不确定哪些内容是静态资源)放入:

-- webapp
   --resources
      -- app
      -- extjs4.1.3
      -- css
      -- icons
   -- WEB-INF
   -- jsp
   app.js

然后定义一个映射:

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

在这一点上,您将访问css文件夹,例如,使用:

 <c:url value="/resources/css/myStyle.css" />
 <mvc:resources mapping="/**" location="/resources/" />
 <c:url value="/css/myStyle.css" />
 类似资料:
  • 尽管标题出现了,但这并不是一个哲学问题。 从未初始化的数组读取 使用错误数据 使用不可移植构造。(即内存分配的细节1) 导致具有的行为 标准没有要求产生可预测的效果 我会称之为“未定义的行为”。但也许我错过了什么(?) null null

  • 主要内容:Servlet 单一映射,Servlet 多重映射客户端通过 URL 地址来访问 Web 服务器中的资源,Servlet 程序若想被外界访问,就必须被映射到一个 URL 地址上。很多时候,该 URL 地址和 Servlet 程序的物理路径(在硬盘上的存储位置)并不一致,因此它被称为虚拟路径。Servlet 与虚拟路径的对应关系就叫做 Servlet 虚拟路径映射。 Servlet 虚拟路径映射可以被分为 2 类: 单一映射 多重映射 下面介绍如何

  • 另外,如果一个键的值为null,那么它就是被接受的默认值,所以我也不能使用@NotNull。对于eg:[{firstKey:null,secondKey:“value2”,thirKey:“value3”}]是有效的JSON,在反序列化过程中应该毫无异常地进行解析。

  • 我尝试过将proto转换为java pojo。但得到了错误 [Stderr]命令。原型:12:18:预期为“必需”、“可选”或“重复”。[Stderr]命令。proto:12:21:应为字段名。 请帮我做些需要改变的事情。我在谷歌protobuf开发者网站上搜索https://developers.google.com/protocol-buffers/docs/proto#maps它表示映射字段

  • 我是Spring和Java EE的新手。这是我的一个非常简单的应用程序: web.xml 我使用glassfish 4.1和IDEA。如果没有行 然后它工作得很好,并打开hello.jps页面(没有css和js资源)。Glassfish日志: [2015-03-04T17:18:04.880+0400][glassfish 4.1][警告][][org.springframework.web.se

  • 问题内容: [添加]所以我的下一个问题是,当我尝试添加新的依赖项时(npm install –save socket.io)。JSON文件也有效。我收到此错误:无法解析json 因此,我一直在尝试找出为什么此错误一直在返回。所有文件(HTML,JSON,JS)都在我桌面上的同一文件夹内。我正在使用node.js和socket.io 这是我的JS文件: 这是返回的内容: 问题答案: 错误非常明显,您