WARN PageNotFound:找不到包含URI

时间:2016-12-30 06:13:09

标签: java spring-mvc

我正在尝试构建一个示例mvc项目,我遇到了这个问题。当我打电话给 / products url时,样式工作正常但是当我尝试调用 / products / viewProducts / {productId} url时,样式没有添加到此呼叫。这是在调用第二个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>
&#13;
&#13;
&#13;

的web.xml

&#13;
&#13;
<?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>
&#13;
&#13;
&#13;

HomeController.java

&#13;
&#13;
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";
	}

}
&#13;
&#13;
&#13;

productsList.jsp

&#13;
&#13;
<%@ 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="#" alt="image" /></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"%>
&#13;
&#13;
&#13;

viewProducts.jsp

&#13;
&#13;
<%@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="#" alt="image" 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"%>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

尝试使用以下url-pattern:

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

答案 1 :(得分:0)

在您的JSP中,您在哪里包含引导程序文件?你的项目中有bootstrap文件吗?如果没有,那么在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中包含bootstrap lib(和jquery lib),然后它将显示 styles

@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一点才能工作。

我希望这会有所帮助,我希望我没有进一步困惑你或让你的工作更加努力!