2015-10-05 68 views
3

我目前有一個按鈕,用作重置計數器程序。我試圖做的是有/計數器/重置功能相同的方式,如果你輸入你的網址。下面是我的web.xml和我的Java程序:簡單點擊計數器Servlet需要重置函數的URL映射

<servlet> 
     <servlet-name>Counter</servlet-name> 
     <servlet-class>Counter</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Counter</servlet-name> 
     <url-pattern>/counter/show</url-pattern> 
     <url-pattern>/counter/display</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
</web-app> 

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

public class Counter extends HttpServlet{ 
    int counter = 0; 
    public void doGet(HttpServletRequest request, HttpServletResponse 
    response)throws ServletException, IOException { 
     response.setContentType("text/html"); 
     PrintWriter pw = response.getWriter(); 
     if(Boolean.valueOf(request.getParameter("reset"))) { 
      counter = 0; 
      response.sendRedirect(getServletContext().getContextPath() + 
       request.getServletPath()); 
     } else { 
      counter++; 
      pw.println("<html><head/><body>"); 
      pw.println("<span>Hit Counter:" + counter + "</span>"); 

      pw.println("<a href=\"" + 
       getServletContext().getContextPath() + 
       request.getServletPath() + 
       "?reset=true" + "\">Reset</a>"); 
      pw.println("</body></html>"); 
     } 
    } 
} 

回答

1

替換您Counter.java與web.xml中,

Counter.java

import java.io.IOException;  
import java.io.PrintWriter;  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  

公衆class Counter擴展HttpServlet {

int counter = 0; 
@Override 
public void doGet(HttpServletRequest request, HttpServletResponse 
response)throws ServletException, IOException 
{ 
    response.setContentType("text/html"); 
    PrintWriter pw = response.getWriter(); 
    if(request.getServletPath().equals("/counter/reset")) 
    { 
     counter = 0; 
     response.sendRedirect(getServletContext().getContextPath()+"/counter/show"); 
    } else 
    { 
     counter++; 
     pw.println("<html><head/><body>"); 
     pw.println("<span>Hit Counter:" + counter + "</span>"); 

     pw.println("<a href=\"" + 
      getServletContext().getContextPath() + 
      "/counter/reset" + 
      "\">Reset</a>"); 


     pw.println("</body></html>"); 

    } 
} 

}

web.xml--

<web-app> 

<servlet> 
    <servlet-name>Counter</servlet-name> 
    <servlet-class>Counter</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Counter</servlet-name> 
    <url-pattern>/counter/show</url-pattern> 
    <url-pattern>/counter/display</url-pattern> 
    <url-pattern>/counter/reset</url-pattern> 
</servlet-mapping> 

<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 

我想,這是你查詢的解決方案。

+0

如果您通過任何答案找到解決方案,則應接受該答案。 – sohal