在从angularjs到spring控制器进行$http调用时,我得到了404个错误,下面是代码:
工厂:
factory.checkCodeAvail = function(url){
return $http({
url: url,
responseType:"json",
method: "GET",
headers: {
"Content-Type": "application/json"
}
});
}控制器调用此工厂方法:
commonFactory.checkCodeAvail('findDepartment')
.then(function (success){
console.log(success);
},function (error){
console.log(error);
});这是我在浏览器控制台中遇到的错误:
GET http://localhost:8080/TexERP/findDepartment 404 ()弹簧控制器:
@RestController
public class AdminController {
private static final Logger logger = LoggerFactory.getLogger(AdminController.class);
@RequestMapping(value="/findDepartment", method=RequestMethod.GET)
public ResponseEntity findDepartment(HttpServletRequest req, HttpServletResponse res){
ResponseEntity response = null;
return response;
}
}servlet file.xml:
<context:annotation-config />
<!-- <cache:annotation-driven /> -->
<context:component-scan base-package="com.erp" />
<mvc:annotation-driven/>web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>TexERP</display-name>
<servlet>
<servlet-name>erp</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/erp-servlet.xml</param-value>
</context-param>
<servlet-mapping>
<servlet-name>erp</servlet-name>
<url-pattern>/TexERP/*</url-pattern>
</servlet-mapping>
</web-app>Ajax调用没有到达spring控制器。
Tomcat在控制台中显示了这一行:
INFO: Mapped "{[/findDepartment],methods=[GET]}" onto public org.springframework.http.ResponseEntity com.erp.controller.AdminController.findDepartment(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)发布于 2017-10-22 07:46:07
将servlet映射更改为"/",以便dispatcher servlet可以读取所有请求。在这里,您将请求发送到调度器servlet无法处理的服务器。所以基本上将dispatcher servlet映射更改为-
<servlet-mapping>
<servlet-name>erp</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>https://stackoverflow.com/questions/46871396
复制相似问题