gpt4 book ai didi

Java Servlet POST 操作未从请求中接收参数

转载 作者:行者123 更新时间:2023-11-28 22:31:42 24 4
gpt4 key购买 nike

昨天我第一次尝试使用Tomcat和Servlets(我来自IIS/C#/MVC)。

我也在使用 AngularJS 和 Guice。

我制作了一个只有一个方法的 Servlet:

@Singleton
@SuppressWarnings("serial")
public class CommandServlet extends HttpServlet {

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println(req.getParameterMap());
}

}

我在 Angular 中创建了一个如下所示的服务:

app.factory('console', [ '$http', function($http) {
var console = {};

console.execute = function(gameId, command) {
$http.post("Command/", {
gameId : gameId,
command : command
}).success(function(data, status, headers, config) {

}).error(function(data, status, headers, config) {

});
};

return console;
} ]);

在我的 Controller 中,我注入(inject)服务并通过作用域上的“执行”函数将其暴露给 View :

app.controller('PlayController', function($scope, console) {
$scope.consoleIn = "";

$scope.gameId = 1;

$scope.execute = function(command) {
$scope.consoleOut = console.execute($scope.gameId, command);
};
});

在我看来,我有一个按钮可以调用该函数并从输入元素传入文本:

<input ng-model="consoleIn" type="text">
<button class="btn" type="button" ng-click="execute(consoleIn)">Go!</button>

出于某种原因,我的 Tomcat 服务器上的控制台正在打印一个空 map ({}),而没有通过 POST 请求传递参数。当我查看 Chrome 控制台中的网络选项卡并看到正在发送参数时 ({"gameId":1,"command":"a"}),所以我的问题是 1)从 POST 请求 (getParameterMap() ?) 中获取值的做法是否正确,以及 2) 如果我的做法是正确的,那么我做错了什么,以便请求我的浏览器make 没有正确访问我的 servlet?

编辑:

我最终使用 Jersey 作为我的容器(我认为它被称为)而不是 Java 的默认 Servlet。在看到 Jersey 经常在 Google 上与 Guice 一起出现后,我就这样做了,我认为会有足够的文档让他们两个一起工作。有几个例子,我有点借鉴了几个,尤其是this one .

我遇到的问题是 this ,但现在一切顺利。

总的来说,如果您喜欢 Guice 作为您的 DI 并且想要制作一个 Java 网站,那么 Jersey 是不错的选择。与常规 servlet 相比,它似乎用于 RESTful 服务的不同的更专业的功能 - 但无论如何这就是我所需要的。根据我不科学的谷歌搜索观察,除了 Tomcat 之外,还有 Grizzly 和 Jetty 也很受欢迎 - 如果您在使用 Tomcat 时遇到问题,您可能想研究一下它们。

我希望这个编辑可以节省我昨天和今天让它工作所花费的时间。

最佳答案

实际上打印了什么?一些 Tomcat Map 实现不会在它们的 toString() 方法中打印它们的内容。尝试另一种方式查看其中的内容。你会在那里找到它的一切。

关于Java Servlet POST 操作未从请求中接收参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com