利用servlet转发技术实现统计form表单中字母次数
来源:互联网 发布:数据库系统开发平台 编辑:程序博客网 时间:2024/06/06 21:28
需求是利用servlet转发技术,实现对html网页中用户输入的内容进行统计,统计每个字母出现的次数,忽略大小写。其中统计功能在一个servlet中,转发功能在另一个servlet中。
1.新建dynamic web project,命名为CounterCharacter
2.在webContent目录中新建index.html文件,设置form表单
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- <form action="/CountCharacter/LetterCountServlet" method="post">
- 请输入文章<textarea rows="5" cols="50" name="content"></textarea>
- <input type="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;
-
-
-
-
-
- @WebServlet(asyncSupported = true, urlPatterns = { "/LetterCountServlet" })
- public class LetterCountServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
-
-
-
-
- public LetterCountServlet() {
- super();
-
- }
-
-
-
-
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
- System.out.println("Servlet works");
-
-
- String content = request.getParameter("content");
-
-
- content = content.toUpperCase();
-
- int[] times = new int[26];
-
- for(int i = 0; i < content.length();i++)
- {
- char c = content.charAt(i);
-
- if(Character.isLetter(c))
- times[c-'A']++;
- }
-
-
- ServletContext context = getServletContext();
-
- context.setAttribute("count", times);
-
-
- RequestDispatcher dispatcher = context.getRequestDispatcher("/ResulstServlet");
-
- dispatcher.forward(request, response);
- }
-
-
-
-
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
- 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,功能实现 0 0