1. 程式人生 > >利用servlet轉發技術實現統計form表單中字母次數

利用servlet轉發技術實現統計form表單中字母次數

需求是利用servlet轉發技術,實現對html網頁中使用者輸入的內容進行統計,統計每個字母出現的次數,忽略大小寫。其中統計功能在一個servlet中,轉發功能在另一個servlet中。

1.新建dynamic web project,命名為CounterCharacter

2.在webContent目錄中新建index.html檔案,設定form表單

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <metacharset="UTF-8">
  5. <title>Insert title here</title
    >
  6. </head>
  7. <body>
  8. <formaction="/CountCharacter/LetterCountServlet"method="post">
  9. 請輸入文章<textarearows="5"cols="50"name="content"></textarea>
  10. <inputtype="submit"value="提交"/>
  11. </form>
  12. </body>
  13. </html>

3.在JavaResource/src目錄下新建一個包,命名為servletDemo,在該包中新建一個servlet,命名為LetterCountServlet,主要負責統計使用者輸入的內容中每個字母出現的次數
  1. package servletDemo;  
  2. import java.io.IOException;  
  3. import javax.servlet.RequestDispatcher;  
  4. import javax.servlet.ServletContext;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.annotation.WebServlet;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10. /** 
  11.  * Servlet implementation class LetterCountServlet 
  12.  * 統計使用者輸入內容中每個字母出現次數 
  13.  */
  14. @WebServlet(asyncSupported = true, urlPatterns = { "/LetterCountServlet" })  
  15. publicclass LetterCountServlet extends HttpServlet {  
  16.     privatestaticfinallong serialVersionUID = 1L;  
  17.     /** 
  18.      * @see HttpServlet#HttpServlet() 
  19.      */
  20.     public LetterCountServlet() {  
  21.         super();  
  22.         // TODO Auto-generated constructor stub
  23.     }  
  24.     /** 
  25.      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
  26.      */
  27.     protectedvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  28.         // TODO Auto-generated method stub
  29.         System.out.println("Servlet works");  
  30.         //獲得form表單提交的內容
  31.         String content = request.getParameter("content");  
  32.         //忽略大小寫,把使用者輸入全部轉換成大寫
  33.         content = content.toUpperCase();  
  34.         int[] times = newint[26];  
  35.         for(int i = 0; i < content.length();i++)  
  36.         {  
  37.             char c = content.charAt(i);  
  38.             //判斷C是不是字母
  39.             if(Character.isLetter(c))  
  40.                 times[c-'A']++;  
  41.         }  
  42.         //交給下一個servlet顯示結果
  43.         ServletContext context = getServletContext();  
  44.         //新增count屬性
  45.         context.setAttribute("count", times);  
  46.         //跳轉至下一個servlet
  47.         RequestDispatcher dispatcher = context.getRequestDispatcher("/ResulstServlet");  
  48.         dispatcher.forward(request, response);  
  49.     }  
  50.     /** 
  51.      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
  52.      */
  53.     protectedvoid doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  54.         // TODO Auto-generated method stub
  55.         doGet(request,response);  
  56.     }  
  57. }  

4.在servletDemo包中新建一個servlet,命名為ResultServlet,主要負責統計結果的輸出
  1. package servletDemo;  
  2. import java.io.IOException;  
  3. import java.io.PrintWriter;  
  4. import javax.servlet.ServletContext;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.annotation.WebServlet;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10. /**  
  11.  * Servlet implementation class ResulstServlet  
  12.  * 顯示統計結果  
  13.  */  
  14. @WebServlet(asyncSupported = trueurlPatterns = { "/ResulstServlet" })  
  15. public class ResulstServlet extends HttpServlet {  
  16.     private static final long serialVersionUID = 1L;  
  17.     /**  
  18.      * @see HttpServlet#HttpServlet()  
  19.      */  
  20.     public ResulstServlet() {  
  21.         super();  
  22.         // TODO Auto-generated constructor stub  
  23.     }  
  24.     /**  
  25.      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)  
  26.      */  
  27.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  28.         // TODO Auto-generated method stub  
  29.         ServletContext context = getServletContext();  
  30.         int[] times = (int[]) context.getAttribute("count");  
  31.         //輸出結果  
  32.         response.setContentType("text/html;charset=utf-8");  
  33.         PrintWriter out = response.getWriter();  
  34.         for(int i = 0; i <times.length;i++)  
  35.         {  
  36.             char c = (char) ('A'+ i);  
  37.             int frequency = times[i];  
  38.             out.println("字母:"+c+",出現次數"+frequency+"次!<br/>");  
  39.         }  
  40.     }  
  41.     /**  
  42.      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)  
  43.      */  
  44.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  45.         // TODO Auto-generated method stub  
  46.         doGet(request,response);  
  47.     }  
  48. }  

5.OK,功能實現