0

ページにアクセスするたびにヒット カウンター サーブレットを使用しています。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SimpleCounter extends HttpServlet{
  int counter = 0;
  public void doGet(HttpServletRequest request, HttpServletResponse
    response)throws ServletException, IOException {
  response.setContentType("text/html");
  PrintWriter pw = response.getWriter();
  counter++;
  pw.println("the number of times this page was visited:" + counter);
  }
}

ヒットカウンターの上記の部分は機能しますが、リセットボタンを追加したいと思います。

post を使用して同じページに戻り、int カウンター = 0 を再度設定するフォームのボタンを考えていました。下部のこの部分を修正するにはどうすればよいですか、またはリセットボタンを追加する権利は何ですか?

pw.println("<form action="counter.java" method="post"> <input type="submit" value="reset"></form>");
4

1 に答える 1

0

formaと aリクエストは必要ありません。単純な request とrequest パラメータでrequest をpost使用するだけで、カウンターをリセットする必要があると言われます。getanchorresetreset=true

doGetメソッドは次のようになります。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter pw = response.getWriter();
    // check if this is a request to reset the counter
    if(Boolean.valueOf(request.getParameter("reset"))) {
        counter = 0;
        // redirect to the same servlet so that you don't have the reset parameter
        // in url bar to avoid accidently resetting the counter on a refresh 
        response.sendRedirect(getServletContext().getContextPath() +
            request.getServletPath());
    } else {
        counter++;
        pw.println("<html><head/><body>");
        pw.println("<span>the number of times this page was visited:" + counter + "</span>");
        // anchor with the parameter reset=true
        pw.println("<a href=\"" + 
            getServletContext().getContextPath() + 
            request.getServletPath() + 
            "?reset=true" + "\">reset counter</a>");
        pw.println("</body></html>");
    }
}
于 2013-06-09T14:37:26.397 に答える