spring - Spring MVC 4 的 Controller 配置无效

标签 spring spring-mvc spring-webflow spring-mvc-test spring-web

我是 Spring 框架的新手。我想开发一个简单的 Web 应用程序,根据 url“/greeting.html”显示 hello.jsp 内容。但现在,它给了我 404 错误。我做错了什么?

这是我的项目的 github 存储库(该项目是在 Eclipse STS 下创建的):https://github.com/terancet/EventTracker

这是我的 HelloController 类

@Controller
public class HelloController {
    @RequestMapping(value = "/greeting")
    public String sayHello(Model model) {
        model.addAttribute("greeting", "Hello World");

        return "hello.jsp";
    }

}

这是 web.xml

<servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <init-param>
            <param-name>contextClass</param-name>
            <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
        </init-param>


        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>com.pluralsight.WebConfig</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Map all requests to the DispatcherServlet for handling -->
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

这是一个项目结构:

project structure

最佳答案

添加一个log4j.xml或log4j.properties到

src/main/resources

文件夹(它将自动被检测到)。 然后,当您启动服务器时,它会通过信息日志告诉您 Controller 的 url 映射的确切位置。这很重要,不仅可以验证映射 url,还可以确保它确实被映射:

另外,在 STS/Eclipse 中,如果您:

right click on the project -> click properties -> click select 'Web Project Settings' 

enter image description here

默认情况下,这是 url 路径的派生位置。因此,如果其中的 context-root 值是:“EventTracker”,那么您的完整 url 请求将为(假设按照其他人在您的解析器中指示的方式设置了“.jsp”后缀):

http://localhost/EventTracker/greetings

来 self 的项目 1 的示例 log4j.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

    <!-- Appenders -->
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
           <param name="ConversionPattern" value="%-5p:%d{yyyyMMdd HH:mm:ss} %t %c - %m%n"/>
        </layout>
    </appender>

    <appender name="fileAppender" class="org.apache.log4j.FileAppender">
       <param name="File" value="c:/tmp/my-app.log"/>
       <param name="MaxFileSize" value="10MB"/>
       <param name="MaxBackupIndex" value="50"/>

       <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p:%d{yyyyMMdd HH:mm:ss} %t %c - %m%n" />
        </layout>
    </appender>

    <!-- 3rdparty Loggers -->
    <logger name="org.springframework.core">
        <level value="info" />
    </logger>

    <logger name="org.springframework.beans">
        <level value="info" />
    </logger>

    <logger name="org.springframework.context">
        <level value="info" />
    </logger>

    <logger name="org.springframework.web">
        <level value="debug" />
    </logger>

    <logger name="org.springframework.webflow">
        <level value="debug" />
    </logger> 


    <!-- Root Logger -->
    <root>
        <priority value="info" />
        <appender-ref ref="console" />
        <appender-ref ref="fileAppender"/>
    </root>


</log4j:configuration> 

日志信息:

INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/userManagement/getUser],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.assessme.com.entity.User org.assessme.com.controller.UserManagementController.data(java.util.Locale,org.springframework.ui.Model)

关于spring - Spring MVC 4 的 Controller 配置无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30963877/

相关文章:

spring - 如何在异常时设置文字字符串 flowScope 值?

java - Maven 安装构建错误 - 依赖项路径

java - 如何在 Controller 中使用 @RequestParam 获取 Map<String, String[]> 数据?

java - 在提交 spring mvc 上绑定(bind)子对象

java - Spring @WithMockUser 和 request.IsUserInRole()

java - 如何从我的 Maven 构建中排除资源,packagingExcludes 不起作用

java - Spring Web-Flow 不断用其执行参数替换获取请求参数

java - 如何使用 Spring Security 实现登录页面,以便它与 Spring Web 流程一起工作?

java - Spring Batch ItemReader 在第一行获取 NullPointerException

java - PersonRepository 类型的 findOne(Long) 方法未定义