【发布时间】:2013-02-24 01:02:01
【问题描述】:
我有一个将数据发布到 Java Servlet 的 angularJS 表单,但我没有看到请求通过;未调用 servlet“create”。
这是我的代码:
test.html
<body>
<form ng-controller="UserController">
<legend>Create User</legend>
<label>Name</label>
<input type="text" id="name" name="name" ng-model="name" placeholder="User Name">
<label>Email</label>
<input type="text" id="email" name="email" ng-model="email" placeholder="ur email here">
<label>Password</label>
<input type="text" id="pwd" name="pwd" ng-model="pwd" placeholder="ur own pwd here">
<button ng-submit="createUser()" class="btn btn-primary">Register</button>
</form>
</body>
script.js
function UserController($scope, $http) {
$scope.user = {};
$scope.createUser = function() {
$http({
method : 'POST',
url : '/create',
data : 'name=' + $scope.user.name + '&email=' + $scope.user.email,
headers : {
'Content-Type' : 'application/x-www-form-urlencoded'
}
})
}
我的 servlet 如下所示,但它没有打印“发布”所有内容。
public class FirstServlet extends HttpServlet
{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
System.out.println("Get");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
System.out.println("Post");
}
}
web服务器是jetty,web.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>createUser</servlet-name>
<servlet-class>servlet.FirstServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>createUser</servlet-name>
<url-pattern>/create</url-pattern>
</servlet-mapping>
</web-app>
【问题讨论】:
-
我已经编辑了我的答案以包含 Servlet 代码。这可能是我写的最全面的答案了,哈哈
-
我相信他的问题是 ng-submit 不在表单标签上,正如我在下面回答的那样。
-
我会在 createUser js 函数中放置一个 console.log。另外,您确定您的 http 调用可以解析为正确的服务器 url 吗?您可以在您的 chrome 开发工具网络选项卡中检查吗?最后,在您的 http 帖子中,您使用的是查询字符串,无需这样做,只需尝试 @ChristianStewart 为数据参数建议的内容..
标签: angularjs