使用web服务Java-angular时出现错误404
error 404 during use web service Java - angular
当我在firebug的控制器中使用JSON将obect从angular发送到java控制器时,显示错误404。这意味着angular找不到这个路径,但java中的后端收到了这个消息。问题是因为我无法将消息回复到angular。
这是json:
{"title":"sdtgb","authors":[{"author_id":60,"author":"Brandon Sanderson"}],"genres":[{"genre_id":14,"genre":"Satyra"}],"description":"sdtb","path_image":"19674.png"}
java控制器:
@SuppressWarnings("finally")
@RequestMapping(value = "/rest/book", method = RequestMethod.POST)
public MessageDTO addNewBook(@RequestBody BookDTO newBook) {
MessageDTO message = new MessageDTO();
try {
bookService.addNewBook(newBook);
message.setCheck(true);
} catch (BookTitleException e) {
message.setCheck(false);
message.setDescription("Ksiązka o tym tytule juz istnieje.");
e.printStackTrace();
} finally{
return message;
}
}
这是从萤火虫角度发送消息和错误时的路径:
"NetworkError: 404 Not Found - http://localhost:8080/engineering-project-web/rest/book"
BookDTO:
public class BookDTO implements Serializable{
private static final long serialVersionUID = -5057364006691079475L;
private AuthorEntity [] authors;
private String description;
private GenreEntity [] genres;
private String title;
private String path_image;
/* getters and setters */
}
Java脚本:
控制器:
var book = {
title : $scope.title,
authors : $scope.author,
genres : $scope.genre,
description : $scope.description,
path_image: null
}
NewBookFct.addNewBook(book)
.then( function(resolve){
if(resolve.check){
alert("Ksiazka została dodana.");
}else{
alert(resolve.description);
}
}, function(reason){
console.log(reason);
});
服务:
service.addNewBook = function(book){
var deferred = $q.defer();
bookResource.save(book)
.$promise.then( function(data){
deferred.resolve( data );
}, function(){
deferred.reject("Error during adding new book.");
});
return deferred.promise;
}
有问题的是,您正在从localhost:3000或其他端口运行Angular应用程序,并从localhost:8080运行Java Web。这意味着你需要提出一个"跨站点"请求,这通常是出于安全目的而被阻止的。
您需要在web应用程序上配置CORS。这可以通过添加库和配置web.xml轻松完成。点击此处了解更多信息:http://software.dzhuvinov.com/cors-filter.html
如果你正在使用maven,只需添加这个dependency:
<dependency>
<groupId>com.thetransactioncompany</groupId>
<artifactId>cors-filter</artifactId>
<version>2.5</version>
</dependency>
然后在你的web.xml中添加这样的内容:
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, POST, HEAD, PUT, DELETE, OPTIONS</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/api/*</url-pattern>
</filter-mapping>
在上面的配置中,我允许CORS对我的web应用程序中/api路径下的任何URL进行GET、POST、HEAD、PUT、DELETE和OPTIONS请求。
相关文章:
- Ajax对web URL的调用导致javascript错误
- 谷歌地图web组件NoApiKeys错误
- 语法错误:"意外的标记<"在Web控制台中
- 如何使用node.js将web和错误事件记录到Splunk
- 错误301在web服务器上永久移动
- 使用web服务Java-angular时出现错误404
- Web 驱动程序管理器更新错误:EACCES,权限被拒绝
- 如何防止 C# Web 浏览器中的脚本错误
- GAS 单击事件处理程序导致 UI Web 应用中出现“意外错误”
- 由于“未解析的类型”错误,无法使用Web驱动程序运行Javascript
- 使用来自AngularJS的Web API JSON响应-错误:应为和数组,但得到了一个对象
- Facebook Web应用程序开发错误
- 调用WCF JSONP web服务方法时出现错误400
- doPost”;遇到意外错误”;提交时的Web表单
- 另一个错误:Angular Web应用程序中的[$resource:badcfg]
- C#Selenium Web驱动程序在Internet explorer中捕获javascript错误
- Watir Web驱动程序引发未知Javascript错误
- 在Firefox上工作的Web工作者在谷歌浏览器上抛出奇怪的错误
- 奇怪的JavaScript错误,由语法,Cytoscape Web或jQuery引起
- Google Web Toolkit,追加错误