利用servlet转发技术实现统计form表单中字母次数

简介:

需求是利用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;

/**
 * Servlet implementation class LetterCountServlet
 * 统计用户输入内容中每个字母出现次数
 */
@WebServlet(asyncSupported = true, urlPatterns = { "/LetterCountServlet" })
public class LetterCountServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LetterCountServlet() {
        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
		System.out.println("Servlet works");
		
		//获得form表单提交的内容
		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);
			//判断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)
	 */
	protected void 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,功能实现

相关文章
|
3月前
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
92 0
|
5月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
53 3
|
5月前
|
前端开发 Java 开发工具
servlet技术--使用注解模拟用户登录实现页面跳转
该文章介绍了Servlet技术的使用,通过注解方式开发Servlet来模拟用户登录功能,并在登录成功后实现页面跳转,展示用户的用户名和密码。
servlet技术--使用注解模拟用户登录实现页面跳转
|
7月前
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。
129 12
|
7月前
|
缓存 小程序 前端开发
Java服务器端技术探秘:Servlet与JSP的核心原理
【6月更文挑战第23天】Java Web开发中的Servlet和JSP详解:Servlet是服务器端的Java小程序,处理HTTP请求并响应。生命周期含初始化、服务和销毁。创建Servlet示例代码展示了`doGet()`方法的覆盖。JSP则侧重视图,动态HTML生成,通过JSP脚本元素、声明和表达式嵌入Java代码。Servlet常作为控制器,JSP处理视图,遵循MVC模式。优化策略涉及缓存、分页和安全措施。这些技术是Java服务器端开发的基础。
74 9
|
7月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
【6月更文挑战第23天】Java Web开发中,Servlet和JSP是构建动态Web应用的基础。Servlet处理逻辑,JSP专注展示。示例展示了Servlet如何通过`request.setAttribute`传递数据给JSP渲染。JSP自定义标签提升页面功能,如创建`WelcomeTag`显示欢迎消息。Servlet过滤器,如`CacheControlFilter`,用于预处理数据或调整响应头。这些集成和扩展技术增强了应用效率、安全性和可维护性,是Java服务器端开发的关键。
77 7
|
7月前
|
存储 设计模式 搜索推荐
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(下)
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(下)
51 1
|
8月前
|
存储 安全 Java
Java的servlet和jsp技术
Java的servlet和jsp技术
81 11
序-Servlet和SpringMVC的联系和区别-配置路径先想好使用的使用的方法,然后匹配的需要的技术
序-Servlet和SpringMVC的联系和区别-配置路径先想好使用的使用的方法,然后匹配的需要的技术
|
7月前
技术笔记:Servlet作业2
技术笔记:Servlet作业2
32 0