No mapping found for HTTP request with URI [xxxxx] in DispatcherServlet

1.SpringMVC静态资源请求:

期望实现的功能,应在显示所有员工之前,弹出一个对话框显示,内容为------------

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<!-- 引入jquery库 -->
<script type="text/javascript" src="scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
$(function(){
	alert("----------");
});
</script>
</head>
<body>
<form action="" method="post">
 <input type="hidden" name="_method" value="DELETE">
</form>
	<h1 align="center">员工信息</h1>
	<table border="1px" width="70%" align="center" cellpadding="0px">
		<tr>
			<th>ID</th>
			<th>lastName</th>
			<th>Email</th>
			<th>Gender</th>
			<th>DepartmentName</th>
			<th>Operation</th>
		</tr>
		<c:forEach items="${requestScope.emps}" var="emp">
			<tr align="center">
				<td>${emp.id}</td>
				<td>${emp.lastName}</td>
				<td>${emp.email}</td>
				<td>${emp.gender==0?'女':'男'}</td>
				<td>${emp.department.departmentName}</td>
				<td><a href="employeeDel/${emp.id}" class="_delete">Delete</a>&nbsp;&nbsp; 
				<a href="employee/${emp.id} ">Edit</a></td>
			</tr>

		</c:forEach>

	</table>
<h2 align="center"><a href="employeeAddpage">add New Emp</a></h2>
</body>
</html>

出现问题

2.如何解决

  • 原因:

         DispatcherServlet的<url-pattern>中配置的是/, 则会匹配到所有客户端的请求,都交给DispatcherServlet进行处理。

        当发送静态资源请求(请求项目下的静态文件html txt js jpg...),也会被DispatcherServlet进行处理, 此时,是找不到当前请求所对应的请求处理方法,则控制台输出警告: No mapping found for HTTP request with URI [xxxxx] in DispatcherServlet

      当我们想通过alter("------")弹出对话框时,需要先访问js文件的,它属于一个静态资源请求处理的过程,也会被DispatcherServlet进行处理

  • 解决:

(1)在sprinigmvc.xml中配置<mvc:default-servlet-handler/> ,该配置会在SpringMVC的上下文装配一个DefaultServletHttpRequestHandler的Bean。 会过滤进入到DispatcherServlet的请求,如果请求是经过映射的, 也就是能找到当前请求对应的请求处理方法,则把该请求交给DispatcherServlet进行处理。 如果请求是没有经过映射的, 则不交给DispatcherServlet进行处理,而是交给WEB应用服务器的默认的Servlet进行处理。

默认的Servlet参考: Tomcat中 web.xml中的配置.  默认的servlet会尝试查找当前请求对应的静态资源.

          如果使用的默认的Servlet的 servlet-name 不叫 default,则需要使用default-servlet-name 在<mvc:default-servlet-handler>中 进行明确的指定。

<mvc:default-servlet-handler/>

但此时又会出现404

(2)当加入<mvc:default-servlet-handler/>后,会导致@RequestMapping的映射失效, 需要再加入一个配置<mvc:annotation-driven/>解决@RequestMapping失效的问题。

在springmvc.xml中加入

<mvc:default-servlet-handler/>
<mvc:annotation-driven/>

访问就可以显示了

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值