我正在尝试构建一个示例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'

调度-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;
的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>
&#13;
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";
}
}
&#13;
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="#" 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;
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="#" 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;
答案 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一点才能工作。
我希望这会有所帮助,我希望我没有进一步困惑你或让你的工作更加努力!