我刚刚完成了一段时间以来一直在研究的Java应用程序。我唯一想做的就是在线实施注册。因为我已经习惯了Java,所以我创建了自己的HTTPServer(不使用任何API,我喜欢重新发明轮子)来处理请求等等。它工作正常。
但是我对HTML很新,我在互联网上搜索了很多,但无法弄清楚如何做我想做的事情:
我的服务器上有一个SQLite数据库,我想让网页注册用户。 我使用下面的HTML代码实现了这一点。它使用来自用户的输入向我的服务器发送http POST消息,这很好(参见下面的Java代码)。
我的问题是,当用户尝试在数据库中注册已注册的用户时,我无法弄清楚如何响应。我想要做的是显示一条简单的消息并告诉用户尝试其他用户名。
如果有人能填写我所遗漏的内容,我将非常感激。
HTML index.html
<!DOCTYPE html>
<html>
<body>
<form name=”Login” action =”success.html” method="post" target="_blank">
Username: <input type="text" name="name"><br>
Password: <input type=”password” name=”pass”><br>
<input type="submit" value="Submit">
</form>
<p>Register here.</p>
</body>
</html>
Java代码:
//Code from http post received.
String[] input = last.split("=|\\&");
String loginName = input[1];
SQLServer sqlServer = new SQLServer();
if (sqlServer.containsLogin(loginName)) {
System.out.println("Registrated: " + loginName + "already in databse");
//Respond somehow to the client that user already in database.
} else {
sqlServer.register(loginName, input[3]);
System.out.println("Registrated: " + loginName + "with password: " + input[3]);
}
编辑:在Palpatim的帮助下尝试新的尝试:
output.println("HTTP/1.0 401 Unauthorized");
output.println("Server: Java HTTP Server 1.0");
output.println("Date: " + new Date());
output.println("Content-type: " + type);
output.println("Content-length: " + fileLength);
output.println(); //blank line between headers and content
output.flush(); //flush character output stream buffer
//After that code I send the file.
那个标题是否正确形成?因为它似乎不起作用。 该文件是Palpatim发布的html文件。还可以将for中的动作设置为空吗?所以在我从服务器发送OK或401之前它不会做任何事情吗?
答案 0 :(得分:1)
在您使用的任何套接字对上(假设您没有重写它),请回复HTTP response的正文。
响应的全部范围远远超出简单SO问题的范围,但基本要点是:
例如,如果您希望浏览器显示带有&#34;抱歉的页面,则该用户已经在数据库中#34;消息,您可以通过电汇发送:
HTTP 401 Unauthorized
Content-Type: text/html
<html>
<head>
<title>Already in database</title>
<body>
<p>Sorry, that user is already in the database</p>
</body>
</html>
答案 1 :(得分:0)
由于您编写了自己的http服务器,因此很难说如何从数据模型中获取数据到您的视图中。在您的情况下,您可能需要通过AJAX请求提交注册并将您的响应作为JSON发送回页面,然后通过将结果消息添加到DOM或使用alert()来显示结果消息。