Javaを学び始めたばかりですが、Javaサーバーの作成に問題があります。
HTMLにはフォームが必要であり、JavaScript witchはそのフォームを毎秒送信します(POSTメソッドによる)。フォームには、ユーザーIDの値を含む非表示フィールドが必要です。サーバーはリクエストでユーザーIDを探す必要があります。新しいユーザーに新しいIDを提供し、訪問したユーザーにIDを表示する必要があります。
各フォームの送信後、碑文は次のように変更されます:null、2、null、2、null、2....コードは次のとおりです。
public class ServerConnect extends AbstractHandler{
private AtomicInteger ids = new AtomicInteger(0);
private String userId;
public void handle(String target,
Request baseRequest,
HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException
{
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println(PageGenerator.generateForm(userId));
userId = request.getParameter("userId");
if (userId == null){
ids.getAndIncrement();
userId = ids.toString();
}
}
public static void main(String[] args) throws Exception {
Server server = new Server(8080);
server.setHandler(new ServerConnect());
server.start();
server.join();
}
}
public class PageGenerator {
public static String generateForm(String val){
String htmlCode = null;
htmlCode = "...
<script>
function reload(){
document.forms['MainForm'].submit();
}
setTimeout("reload()", 1000);
</script>
.... + val + ...
<form id='MainForm' method = 'POST'>
<input type = "hidden" name = "userId" value = \""+ val + \"">
<form>
...
return htmlCode;
}
}
ユーザーIDが2に等しい理由と、ユーザーがIDを取得した後、値がnullに変更され、次に2に変更される理由がわかりません。