WARN PageNotFound: No mapping found for HTTP request with URI
Posted
技术标签:
【中文标题】WARN PageNotFound: No mapping found for HTTP request with URI【英文标题】:WARN PageNotFound:No mapping found for HTTP request with URI 【发布时间】:2017-05-14 11:25:04 【问题描述】:我正在尝试构建一个示例 mvc 项目,但我遇到了这个问题。当我调用 /products url 时,样式工作正常,但是当我尝试调用 /products/viewProducts/productId url 时,没有为此添加样式称呼。这是调用第二个网址时捕获的图像 Image2
请帮我找出我实际上做错了什么? 以下是项目详情。
错误详情
WARN PageNotFound:1147 - No mapping found for HTTP request with URI [/course-project/productsList/viewProduct/resources/js/bootstrap.min.js] in DispatcherServlet with name 'dispatcher'
Project Structure
调度程序-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>course-project</display-name>
<!-- Bootstraps the root web application context before servlet initialization -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- needed for ContextLoaderListener -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/dispatcher-servlet.xml
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
web.xml
<?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"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:src="http://www.springframework.org/schema/mvc"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/cache http://www.springframework.org/schema/mvc/cache.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
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/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<context:component-scan base-package="com.pavan.mvc"/>
<mvc:annotation-driven/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<mvc:resources mapping="/resources/**" location="/WEB-INF/resources/"/>
<tx:annotation-driven/>
</beans>
HomeController.java
package com.pavan.mvc.controller;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import com.pavan.mvc.dao.ProductDao;
import com.pavan.mvc.model.Product;
@Controller
public class HomeController
@Autowired
private ProductDao productDao;
@RequestMapping("/")
public String goHome()
return "home";
@RequestMapping("/productsList")
public String getProducts(Model model)
List<Product> products = productDao.getAllProduct();
model.addAttribute("products", products);
return "productsList" ;
@RequestMapping("/form")
public String getForm()
return "form" ;
@RequestMapping("/productsList/viewProduct/productId")
public String viewProduct(@PathVariable Long productId, Model model) throws IOException
Product product = productDao.getProductById(productId);
model.addAttribute(product);
return "viewProducts";
productsList.jsp
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@include file="/WEB-INF/views/template/header.jsp"%>
<div class="container-wrapperr">
<div class="container">
<div class="page-header">
<h1>All Product</h1>
<p class="lead">Chechout all the awesome products available now</p>
</div>
<table class="table table-striped table-hover">
<thead>
<tr class="bg-sucess">
<th>Phto Thumb</th>
<th>Product Name</th>
<th>Category</th>
<th>Condition</th>
<th>Price</th>
<th></th>
</tr>
</thead>
<c:forEach items="$products " var="product">
<tr>
<td><img src="#" /></td>
<td>$product.productName</td>
<td>$product.productCategory </td>
<td>$product.productCondition </td>
<td>$product.productPrice </td>
<td><a
href="<spring:url value="/productsList/viewProduct/$product.productId"/>">
<span class="glyphicon glyphicon-info-sign"></span>
</a></td>
</tr>
</c:forEach>
</table>
</div>
</div>
<%@include file="/WEB-INF/views/template/footer.jsp"%>
viewProducts.jsp
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@include file="/WEB-INF/views/template/header.jsp"%>
<div class="container-wrapperr">
<div class="container">
<div class="page-header">
<h1>Product Detail</h1>
<p class="lead">Here is the detail information of the product</p>
</div>
<div class="container">
<div class="row">
<div class="col-md-5">
<img src="#" style = "width: 100% ; height: 100px"/>
</div>
<div class="col-md-5">
<h3>$product.productName</h3>
<p>
<strong>Catogary</strong>: $product.productCategory
</p>
<p>
<strong>Condition</strong>: $product.productCondition
</p>
<p>
<strong>Product Price</strong>: $product.productPrice
</p>
</div>
</div>
</div>
</div>
</div>
<%@include file="/WEB-INF/views/template/footer.jsp"%>
【问题讨论】:
/course-project/productsList/viewProduct/resources/js/里面有bootstrap.min.js吗 您的 jsp 中似乎没有正确包含 css 文件。它应该包含 contextPath/在您的 JSP 中,您在哪里包含引导文件?你的项目中有引导文件吗?如果没有,则将这些添加到您的 JSP 顶部:
<link rel="stylesheet"
href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script
src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
这些将在您的 JSP 中包含引导库(和 jquery 库),然后它会显示您的 样式
@Pavan 如果您真的不想在每个 jsp 中编写包含内容,那么您必须在部署描述符(您的 web.xml 文件)中配置 JSP,如下所示:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspf</url-pattern>
<include-prelude>/WEB-INF/jsp/base.jspf</include-prelude>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>
现在,如果您看到,我将这一行放在上面的配置中 <include-prelude>/WEB-INF/jsp/base.jspf</include-prelude>
部署描述符中的标签告诉
容器以在属于的每个 JSP 的开头包含 /WEB-INF/jsp/base.jspf 文件
此属性组。这对于定义公共变量、标签库声明或其他
应该对组中的所有 JSP 可用的资源。同样,一个标签
定义要包含在组中每个 JSP 末尾的文件。您可以更多地使用这两个标签
在单个 JSP 组中不止一次。例如,您可以创建 header.jspf 和 footer.jspf 文件
分别包含在每个 JSP 的开头和结尾。
现在 base.jspf 将包含什么?这个:
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@include file="/WEB-INF/views/template/header.jsp"%>
<%@include file="/WEB-INF/views/template/footer.jsp"%>
<link rel="stylesheet"
href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"> </script>
<script
src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"> </script>
但我不知道您添加引导行是否会被 JSP 拾取。但是试试看。如果它们不起作用,那么就假设我从未回答过这个问题。对不起。哦,确保这个base.jspf位于/WEB-INF/jsp/
然后你所有的JSP文件也在那个路径下。
警告:如果你这样做,你必须在你的 jsps 上稍微移动一下才能让它工作。
我希望这会有所帮助,我希望我没有进一步混淆您或让您的工作更加努力!
【讨论】:
我在 WEB-INF/resources 文件夹中有引导文件 谢谢,这已经解决了问题,但不能使用 /WEB-INF/resources 文件夹中已经存在的 bootstrap 和 js 文件 如果我删除这些文件,我还需要在所有其他 jsp 文件中包含这些链接。 当然可以,但是您在哪里添加更多内容?【参考方案2】:尝试使用以下 url 模式:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
【讨论】:
当我添加 /* 我得到 404 错误和这个警告 WARN PageNotFound:1147 - 在名为“dispatcher”的 DispatcherServlet 中找不到带有 URI [/course-project/WEB-INF/views/home.jsp] 的 HTTP 请求的映射 从以上是关于WARN PageNotFound: No mapping found for HTTP request with URI的主要内容,如果未能解决你的问题,请参考以下文章
Spring MVC PageNotFound.noHandlerFound No mapping found for HTTP request with URI
WARN PageNotFound:208 - Request method 'POST' not supported
Spring3中js/css/jpg/gif等静态资源无法找到(No mapping found for HTTP request with URI)问题解决(转)
Web.servlet.PageNotFound - 没有 GET 映射
PageNotFound:在DispatcherServlet中找不到带有URI [../j_spring_security_check]的HTTP请求的映射
java出现以下警告:WARN No appenders;WARN Please initialize the log4j的处理方法