3

我的 jsps 在 WEB-INF/jsp/ 下,下面是我的 web.xml:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Checkout</display-name>

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

  <servlet-mapping>
    <servlet-name>myservlet</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>


</web-app>

这是我试图访问的页面 product.jsp 的映射:

@Controller
@RequestMapping("/product.action")
public class ProductController {

    /**
     * Show the product selection form
     * 
     * @return
     */
    @RequestMapping(method=RequestMethod.GET)
    public String get() {
        return "products.jsp";
    }

}

尝试从以下链接访问页面时:

http://localhost:8080/myapp/product.action

我进入404浏览器,并在控制台中收到以下警告:

Jun 28, 2012 10:55:23 AM org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping found for HTTP request with URI [/myapp/product.action] in DispatcherServlet with name 'myservlet'

我在配置中遗漏了什么吗?请指教,谢谢。

编辑:我尝试将 viewResolver bean 添加到 applicationContext 没有运气:

<?xml version="1.0" encoding="UTF-8"?>
<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"
    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-3.1.xsd">

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



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


</beans>
4

8 回答 8

3

遵循Sunil提到的任何规则。我在你的 spring 配置 xml 中看到一个你没有的问题

<mvc:annotation-driven />  

你需要这个来Controller注册

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

于 2014-01-10T14:54:31.260 回答
2

指定 RequestMapping 时,URI 不应有扩展名。Dispatcher servlet 将在搜索 URI 映射时从请求 URI 中省略它。

使用@RequestMapping("/product") 它应该可以工作。

使用视图解析器时的第二件事只是返回 JSP 文件的名称。不要附加 .jsp 扩展名,InternalViewResolver 会为您完成。

于 2012-06-28T10:56:30.923 回答
1

问题是没有检测到控制器。我将 base-package 从 更改com.myappcom.myapp.controller,现在可以正常工作了。

于 2012-06-28T13:53:48.960 回答
0

使用这个 class="org.springframework.web.servlet.view.UrlBasedViewResolver" 而不是 class="org.springframework.web.servlet.view.InternalResourceViewResolver"

在您的应用程序上下文 bean 中。

于 2013-07-01T09:31:37.183 回答
0

如果您在上下文 xml 中使用 viewResolver,则应将 get 方法返回状态更改为“产品”并确保文件夹层次结构正确

于 2013-08-22T09:48:19.077 回答
0
  1. 将此更改<url-pattern>*.action</url-pattern><url-pattern>/*.action</url-pattern>

  2. 学习其他教程时检查 .xml 文件中的基本包名称

希望它应该工作正常

于 2022-01-13T15:43:06.460 回答
0

这个错误的解决方法: org.springframework.web.servlet.DispatcherServlet noHandlerFound (No mapping found)

只需按照以下步骤操作:

右键单击项目>构建路径>配置构建路径>部署程序集>添加(右侧)>文件夹>添加您的视图文件夹>应用并关闭

于 2022-01-18T17:21:11.707 回答
-1

检查包名 spring-servlet.xml 是否拼写正确。这可能是问题所在。我在启动 Spring MVC 时遇到了

于 2019-09-18T06:10:49.473 回答