要求:把程序迁移到web平台,通过用户上传TXT的方式接收文件。建议(但不强制要求)保留并维护Console版本,有利于测试。

在页面上设置上传的控件,然后在servlet中接受,得到的是一个字节流,然后转化为字符型在原有代码中进行统计。

jsp页面的代码如下

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body><table><tr><td><form action="server/CountWordServlet" method="post" enctype="multipart/form-data">请上传要统计的文件<input type="file" name="sourceFile"/><input type="submit" value="上传"></form></td></tr></table>
</body>
</html>

展示结果的页面如下

<%@page import="com.server.servlet.Word"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<%ArrayList<Word> list=(ArrayList<Word>)request.getAttribute("list"); %>
<title>Insert title here</title>
</head>
<body><table><%if(list!=null&&list.size()!=0){%><tr> <td>单词</td><td>数量</td> </tr><% for(int i=0;i<list.size();i++){String word=((Word)list.get(i)).getWord();int num=((Word)list.get(i)).getNum();%><tr><td><%=word%></td><td><%=num%></td></tr> <%  }}else{  %><td>此文件没有单词或者文件不存在</td><%     }%></table>
</body>
</html>

servle中的代码如下

public class CountWordServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {try {request.setCharacterEncoding("utf-8");ArrayList<Word> list=new ArrayList<>();DiskFileItemFactory factory=new DiskFileItemFactory();ServletFileUpload upload=new ServletFileUpload(factory); FileItemIterator iterator=upload.getItemIterator(request);while(iterator.hasNext()){InputStream input=iterator.next().openStream();WordCountFreq wcf=new WordCountFreq();list=(ArrayList<Word>) wcf.sortAndOutput(input);request.setAttribute("list", list);}} catch (FileUploadException e) { e.printStackTrace();}System.out.println("成功了!");response.setContentType("text/html;charset=utf-8");request.getRequestDispatcher("/show.jsp").forward(request, response); }}

然后将统计过程的关键方法sortAndOutput()展示如下

public List<Word> sortAndOutput(InputStream input) throws IOException {BufferedInputStream bis=new BufferedInputStream(input);byte [] buf = new byte[1024];int len = -1; String temp = ""; String lastWord = ""; while((len = bis.read(buf)) != -1) {//将读取到的字节数据转化为字符串打印出来String str = new String(buf,0,len); temp = ""; temp += lastWord;for (int i = 0; i < str.length(); i++) {temp += str.charAt(i);}lastWord = ""; if (Character.isLetter(str.charAt(str.length()-1))) { int j, t;for (j = str.length() - 1, t = 0; Character.isLetter(str.charAt(j)); j--, t++); temp = temp.substring(0, temp.length() - t); for (int k = j + 1; k < str.length(); k++) {lastWord += str.charAt(k);}}  root = generateCharTree(temp);  }

示例如下

在没做web版本之前,只是传入文件的路径进行处理。改为web版本之后将遇见的一点小困难是要将字节流转化为字符进行处理,经过查询也很快就解决了。

ssh:git@git.coding.net:muziliquan/GUIVersion.git

git:git://git.coding.net/muziliquan/GUIVersion.git

转载于:https://www.cnblogs.com/liquan/p/5978546.html

词频统计-------------web版本相关推荐

  1. java词频统计——web版支持

    需求概要: 1.把程序迁移到web平台,通过用户上传TXT的方式接收文件. 2.用户直接输入要统计的文本,服务器返回结果 3.在页面上给出链接 (如果有封皮.作者.字数.页数等信息更佳)或表格,展示经 ...

  2. java统计词频算法_Java实现的词频统计——功能改进

    本次改进是在原有功能需求及代码基础上额外做的修改,保证了原有的基础需求之外添加了新需求的功能. 功能: 1. 小文件输入--从控制台由用户输入到文件中,再对文件进行统计: 2.支持命令行输入英文作品的 ...

  3. python 英语词频统计软件_Python数据挖掘——文本分析

    作者 | zhouyue65 来源 | 君泉计量 文本挖掘:从大量文本数据中抽取出有价值的知识,并且利用这些知识重新组织信息的过程. 一.语料库(Corpus) 语料库是我们要分析的所有文档的集合. ...

  4. HADOOP集群大数据词频统计及设计比较(完整教程)

    ###如若发现错误,或代码敲错,望能评论指正!!! 通过百度网盘分享的文件:Hadoop相关需要的软件 链接:https://pan.baidu.com/s/1XzDvyhP4_LQzAM1auQCS ...

  5. Hadoop的环境配置——搭建一个主机hadoop102,两个从机hadoop103,hadoop104,并运行分布式词频统计

    本文是跟着B站上的视频实现的,链接如下: https://www.bilibili.com/video/BV1Qp4y1n7EN?p=18 Hadoop运行环境搭建 重来3遍是正常的,这篇针对的是怎么 ...

  6. 软工作业3: 词频统计

    词频统计 一.编译环境 (1)IDE:PyCharm 2018 (2)python版本:python3.6.3(Anaconda3-5.1.0  ) 二.程序分析 (1)读文件到缓冲区(process ...

  7. python 词频统计,分词笔记

    Python的中文分词库有很多,常见的有: jieba(结巴分词) THULAC(清华大学自然语言处理与社会人文计算实验室) pkuseg(北京大学语言计算与机器学习研究组) SnowNLP pynl ...

  8. Hadoop的改进实验(中文分词词频统计及英文词频统计)(1/4)

    声明: 1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Windows系统下的百度云(联网),和Ubuntu系统的hadoop1-2-1(自己提前配好).如不 ...

  9. python 对excel文件进行分词并进行词频统计_python 词频分析

    python词频分析 昨天看到几行关于用 python 进行词频分析的代码,深刻感受到了 python 的强大之处.(尤其是最近自己为了在学习 c 语言感觉被它的语法都快搞炸了,python 从来没有 ...

最新文章

  1. 19年BAT常问面试题汇总:JVM+微服务+多线程+锁+高并发性能
  2. 从《黑客帝国》说起,我们如何证明这个世界不是一个系统?
  3. python怎么安装pyecharts_基于Python安装pyecharts所遇的问题及解决方法
  4. Nodejs如何调用Dll模块
  5. version control(版本控制)
  6. 联想天工 802.1x认证 主程序
  7. apache和tomcat开启GZIP功能
  8. sap.ui.layout.HorizontalLayout is not a constructor
  9. 安装Exchange Server 2013
  10. Tricks(二十六) —— 妙用关键字参数(keyword arguments)创建字典
  11. 你们要得SpringBoot版的停车管理系统(含小程序)已经找到了,改改就能卖钱(附源码)...
  12. CF959A Mahmoud and Ehab and the even-odd game
  13. 最全的LED电源解决方案 转载
  14. 如何提高机器学习模型预测准确率
  15. google aviator:Java逻辑公式引擎
  16. 新存储、新格局、新飞跃,浪潮存储应时而来
  17. PMP新考纲 敏捷题目 (五)
  18. 数据分析思维(《数据分析思维:分析方法和业务知识》)
  19. 【无人机组装与调试】第三章 舵机安装与调整
  20. Android AudioFocus机制小结

热门文章

  1. python手机版iphone-只会Python可造不出iPhone
  2. 西安python培训班多少钱-西安Python培训班哪个好
  3. python软件下载路径问题-mac上Python安装和修改Python默认路径遇到的问题
  4. python下载安装教程3.8.0-Python3.8下载
  5. python序列类型-Python之序列类型方法
  6. python安装包-Python软件包的安装(3种方法)
  7. python按行读取txt文件-Python逐行读取txt文本,按符合分割词并逐行写入txt
  8. python代码大全表解释-【初学】Python异常代码含义对照表
  9. python软件开发的一般流程-Python各个岗位的开发流程
  10. 学python需要英语基础吗-学python需要英语基础吗