利用servlet轉發技術實現統計form表單中字母次數
阿新 • • 發佈:2019-02-15
需求是利用servlet轉發技術,實現對html網頁中使用者輸入的內容進行統計,統計每個字母出現的次數,忽略大小寫。其中統計功能在一個servlet中,轉發功能在另一個servlet中。
1.新建dynamic web project,命名為CounterCharacter
2.在webContent目錄中新建index.html檔案,設定form表單
- <!DOCTYPE html>
- <html>
- <head>
- <metacharset="UTF-8">
-
<title>Insert title here</title
- </head>
- <body>
- <formaction="/CountCharacter/LetterCountServlet"method="post">
- 請輸入文章<textarearows="5"cols="50"name="content"></textarea>
- <inputtype="submit"value="提交"/>
- </form>
- </body>
- </html>
3.在JavaResource/src目錄下新建一個包,命名為servletDemo,在該包中新建一個servlet,命名為LetterCountServlet,主要負責統計使用者輸入的內容中每個字母出現的次數
- package servletDemo;
- import java.io.IOException;
- import javax.servlet.RequestDispatcher;
- import javax.servlet.ServletContext;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
-
import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- /**
- * Servlet implementation class LetterCountServlet
- * 統計使用者輸入內容中每個字母出現次數
- */
- @WebServlet(asyncSupported = true, urlPatterns = { "/LetterCountServlet" })
- publicclass LetterCountServlet extends HttpServlet {
- privatestaticfinallong serialVersionUID = 1L;
- /**
- * @see HttpServlet#HttpServlet()
- */
- public LetterCountServlet() {
- super();
- // TODO Auto-generated constructor stub
- }
- /**
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
- */
- protectedvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
- System.out.println("Servlet works");
- //獲得form表單提交的內容
- String content = request.getParameter("content");
- //忽略大小寫,把使用者輸入全部轉換成大寫
- content = content.toUpperCase();
- int[] times = newint[26];
- for(int i = 0; i < content.length();i++)
- {
- char c = content.charAt(i);
- //判斷C是不是字母
- if(Character.isLetter(c))
- times[c-'A']++;
- }
- //交給下一個servlet顯示結果
- ServletContext context = getServletContext();
- //新增count屬性
- context.setAttribute("count", times);
- //跳轉至下一個servlet
- RequestDispatcher dispatcher = context.getRequestDispatcher("/ResulstServlet");
- dispatcher.forward(request, response);
- }
- /**
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
- */
- protectedvoid doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
- doGet(request,response);
- }
- }
4.在servletDemo包中新建一個servlet,命名為ResultServlet,主要負責統計結果的輸出
- package servletDemo;
- import java.io.IOException;
- import java.io.PrintWriter;
- import javax.servlet.ServletContext;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- /**
- * Servlet implementation class ResulstServlet
- * 顯示統計結果
- */
- @WebServlet(asyncSupported = true, urlPatterns = { "/ResulstServlet" })
- public class ResulstServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- /**
- * @see HttpServlet#HttpServlet()
- */
- public ResulstServlet() {
- super();
- // TODO Auto-generated constructor stub
- }
- /**
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
- ServletContext context = getServletContext();
- int[] times = (int[]) context.getAttribute("count");
- //輸出結果
- response.setContentType("text/html;charset=utf-8");
- PrintWriter out = response.getWriter();
- for(int i = 0; i <times.length;i++)
- {
- char c = (char) ('A'+ i);
- int frequency = times[i];
- out.println("字母:"+c+",出現次數"+frequency+"次!<br/>");
- }
- }
- /**
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
- */
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- // TODO Auto-generated method stub
- doGet(request,response);
- }
- }
5.OK,功能實現