【问题标题】:Spring MVC URL Mappings trouble [duplicate]Spring MVC URL映射麻烦[重复]
【发布时间】:2023-03-28 00:50:01
【问题描述】:

大家好,我正在开发 covoiturage 应用程序,但页面之间的导航出现问题。当我单击链接转到另一个页面时,我遇到了问题“在 dispatcherservlet 中找不到带有 uri 的 http 请求的映射,名称为 mvc-dispatcher” 谢谢你

<annotation-driven />

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<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>

<context:component-scan base-package="com.covoiturage.app" />


    <servlet>
    <servlet-name>appServlet</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>
    <load-on-startup>1</load-on-startup>
</servlet>


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

org.springframework.web.context.ContextLoaderListener

【问题讨论】:

  • 请编辑您的问题并将代码片段放在那里。包括堆栈跟踪(如果有)。
  • 当我点击一个链接时,我总是警告:org.springframework.web.servlet.PageNotFound - 在 DispatcherServlet 中找不到带有 URI [/app/login] 的 HTTP 请求的映射,名称为“appServlet”

标签: java spring model-view-controller


【解决方案1】:

您得到的异常是您尝试导航到的 URL 被转发到 DispatcherServlet,但未映射到任何 Web 控制器上。更具体地说,如果您将 DispatcherServlet 映射到根上下文,像这样

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

然后你就有了,比如说,一个带有这样链接的 HTML 页面

<a href="/my-url">click me</a>

要实现导航,您需要一个带有 @Controller 注释的类,该类具有一个映射 URL 的方法(注意 @RequestMapping 注释):

@Controller
public class TestPageController
{       
    @RequestMapping(path = "/my-url")
    public String getTestPage()
    {
        return "renderViewName";
    }
}

【讨论】:

  • 我需要为每个页面创建一个类?
  • 不,只要类用@Controller 注释,方法用@RequestMapping 注释,您可以创建任意数量的控制器(即,如果您愿意,只能创建一个)。通常,我会为每个 html 或 jsp 页面看到一个控制器,但同样,这由您决定。
  • 我已经按照你说的做了,我解决了登录页面的问题,但是当我尝试点击注册页面时,我遇到了问题“org.springframework.web.servlet.PageNotFound - 找不到映射用于在 DispatcherServlet 中使用 URI [/app/SignUp] 的 HTTP 请求,名称为“appServlet”
  • 嗯,我想这很大程度上取决于您“单击注册”页面时会发生什么。那是表单内的提交按钮吗?那是链接吗?它的网址是什么?另外,请记住,所有控制器都必须位于配置的 component-scan 元素中指定的包中(但也许您刚刚检查过它)。 编辑你需要@RequestMapping(path = "/app/SignUp")
  • i ty 从链接访问 那样
猜你喜欢
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2012-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多