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

当我添加MVC:resources映射时,Java Spring MVC不起作用

余弘毅
2023-03-14

我是Spring和Java EE的新手。这是我的一个非常简单的应用程序

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

       <context:component-scan base-package="ru.javaheap"/>

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

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

</beans>
@Controller
@RequestMapping("/")
public class HelloController {
    @RequestMapping(method = RequestMethod.GET)
    public String printWelcome(ModelMap model) {
        List<AuthorEntity> authors = HibernateUtil.getSession().createCriteria(AuthorEntity.class).list();
            model.addAttribute("listAuthors", authors);
            return "hello";
    }
}

我使用glassfish 4.1和IDEA。如果没有行

然后它工作得很好,并打开hello.jps页面(没有css和js资源)。Glassfish日志:

[2015-03-04T17:18:04.880+0400][glassfish 4.1][警告][][org.springframework.web.servlet.PageNotFound][tid:_threadid=33_threadname=http-listener-1(3)][timeMillis:1425475084880][levelValue:900][[在名为'mvc-dispatcher'的DispatcherServlet中找不到URI为[/untitled_war_explorded/resources/blog.css]的HTTP请求的映射]]

[2015-03-04T17:18:04.899+0400][glassfish 4.1][警告][][org.springframework.web.servlet.PageNotFound][tid:_threadid=32_threadname=http-listener-1(2)][timeMillis:1425475084899][levelValue:900][[在名为'mvc-dispatcher'的DispatcherServlet中找不到URI为[/untitled_war_explorded/resources/bootstrap/js/bootstrap.min.js]

当我添加这一行以允许在我的页面中使用资源时,它不会打开页面(错误404),但我可以打开资源(如http://localhost:8080/untitled_war_explorded/resources/blog.css)。Glassfish日志:

[2015-03-04T17:15:54.595+0400][glassfish 4.1][警告][][org.springframework.web.servlet.PageNotFound][tid:_threadid=31_threadname=http-listener-1(1)][timeMillis:1425474954595][levelValue:900][[在名为'mvc-dispatcher'的DispatcherServlet中找不到URI为[/untitled_war_explorded/]的HTTP请求的映射]]

[2015-03-04T17:15:54.745+0400][glassfish 4.1][警告][][org.springframework.web.servlet.PageNotFound][tid:_threadid=34_threadname=http-listener-1(4)][timeMillis:1425474954745][levalvalue:900][[在名为'mvc-dispatcher'的DispatcherServlet中找不到URI为[/untitled_war_explorded/]的HTTP请求的映射]]

[2015-03-04T17:16:02.191+0400][glassfish 4.1][警告][][org.springframework.web.servlet.PageNotFound][tid:_threadid=33_threadname=http-listener-1(3)][timeMillis:1425474962191][levelValue:900][[在名为'mvc-dispatcher'的DispatcherServlet中找不到URI为[/untitled_war_explorded/]的HTTP请求的映射]]

文件树:

├───.idea
│   ├───artifacts
│   ├───copyright
│   ├───libraries
│   └───scopes
├───lib
├───out
│   └───artifacts
│       └───untitled_war_exploded
│           ├───resources
│           │   └───bootstrap
│           │       ├───css
│           │       ├───fonts
│           │       └───js
│           └───WEB-INF
│               ├───classes
│               │   └───ru
│               │       └───javaheap
│               │           └───entity
│               ├───lib
│               ├───pages
│               └───resources
│                   └───bootstrap
│                       ├───css
│                       ├───fonts
│                       └───js
├───src
│   ├───main
│   │   ├───java
│   │   │   └───ru
│   │   │       └───javaheap
│   │   │           └───entity
│   │   └───resources
│   └───test
│       └───java
├───target
│   ├───classes
│   │   └───ru
│   │       └───javaheap
│   │           └───entity
│   └───generated-sources
│       └───annotations
└───web
    ├───resources
    │   └───bootstrap
    │       ├───css
    │       ├───fonts
    │       └───js
    └───WEB-INF
        └───pages

共有1个答案

章涵容
2023-03-14

下面的配置应该适用于您,您基本上缺少注释驱动的元素

   <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

           <context:component-scan base-package="ru.javaheap"/>

           <mvc:annotation-driven/>

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

           <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                  <property name="prefix" value="/WEB-INF/pages/"/>
                  <property name="suffix" value=".jsp"/>
           </bean>
    </beans>
 类似资料:
  • 我的GridbagLayout有些问题。我创建了一个JPanel(在本例中称为mainPanel),它的布局被设置为GridBagLayout。我已经为每个JButton指定了约束,并将约束添加到每个Button。现在,当我运行代码时,按钮总是紧挨着的,而不考虑我在约束中指示的Gridx/Gridy值。此外,按钮总是位于JFrame的中心,我希望一个按钮出现在右上角、左上角和南边。 这是我运行代码

  • 问题内容: 我发现,当我编写“ pnlMap.add(map [i] [j])”时,键侦听器将无法工作。map是JButton的集合,pnlMap是JPanel。 公共游戏(玩家播放器){ 问题答案: 为了工作,必须将其注册为可聚焦的组件并使其具有键盘焦点。默认情况下,大多数容器都喜欢和无法将其聚焦(在考虑使它们成为容器之前,我会非常小心)。这意味着,一旦您添加了一个可以接受键盘焦点的组件(并且它

  • 问题内容: 我正在尝试为各个字段使用不同的分析器设置ElasticSearch索引。但是,我似乎找不到一种设置特定于字段的分析器的方法。这是我创建(测试)索引的方法: 如果我正确阅读了文档,则应创建类型为“ tweet”的索引“ twitter”,并且应通过雪球词根分析器分析“ message”字段的内容。为了对此进行测试,我尝试了以下查询: 如果我没记错的话,那应该会受到打击,因为战斗是战斗的源

  • 我已经定义了对象HomeContentDTO和SubscriberUpsertDTO的映射 下面是这两个对象的映射配置 HomeContentDTO中的所有映射值都没有复制到SubscriberUpsertDTO。有人知道原因吗?

  • 在代码中使用XSLT 2.0的字符映射功能时,我遇到了以下错误。 名称空间中的元素“样式表”http://www.w3.org/1999/XSL/Transform'命名空间中的子元素'character map'无效'http://www.w3.org/1999/XSL/Transform“是的 这是我的XSLT声明 请提供有关如何在XSLT中使用字符映射的帮助。

  • 当我访问localhost:8080/home-我得到: 当我访问localhost:8080/或localhost:8080/index时,看起来一切正常。 为什么一条路行得通,而另一条行不通? 还有一件事让我困惑:localhost:8080/homepage。html-返回我的主视图。 所以我的项目在这里:https://github.com/IRus/jMusic 我的web.xml se