Java实现的词频统计——Web迁移
本次将原本控制台工程迁移到了web工程上,依旧保留原本控制台的版本。
需求:
1.把程序迁移到web平台,通过用户上传TXT的方式接收文件;
2.在页面上给出链接 (如果有封皮、作者、字数、页数等信息更佳)或表格,展示经典英文小说词频统计结果;
3.支持用户自定义单词分隔符;
4.词汇范围对比(额外项)。
实现:
1.迁移至web工程中,支持用户手动选择txt文件上传;
2.用户提交之后,会在后台运行词频统计函数,并且将统计结果的前10项打印到屏幕上;
3.统计结果文件Result.txt可以进行下载(此项功能目前仅在本地有效);
4.用户可自定义分隔符。如想以","、"."分隔则输入",."即可;
5.由于时间问题,词汇范围对比尚未实现。
代码:
1.Servlet:用来处理文件上传以及对传输文件进行词频统计,其中文件上传部分使用了apache.commons。
上传文件的配置
- // 上传配置
- private static final String UPLOAD_DIRECTORY = "upload";
- private static final int MEMORY_THRESHOLD = 1024 * 1024 * 3;
- private static final int MAX_FILE_SIZE = 1024 * 1024 * 40;
- private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 50;
上传文件与处理
- // 配置上传参数
- DiskFileItemFactory factory = new DiskFileItemFactory();
- // 设置内存临界值 - 超过后将产生临时文件并存储于临时目录中
- factory.setSizeThreshold(MEMORY_THRESHOLD);
- // 设置临时存储目录
- factory.setRepository(new File(System.getProperty("java.io.tmpdir")));
- ServletFileUpload upload = new ServletFileUpload(factory);
- // 设置最大文件上传值
- upload.setFileSizeMax(MAX_FILE_SIZE);
- // 设置最大请求值 (包含文件和表单数据)
- upload.setSizeMax(MAX_REQUEST_SIZE);
- String uploadPath = "D:\\Project\\workspace" + File.separator + UPLOAD_DIRECTORY;
- // 如果目录不存在则创建
- File uploadDir = new File(uploadPath);
- if (!uploadDir.exists()) {
- uploadDir.mkdir();
- }
- try {
- // 解析请求的内容提取文件数据
- List<FileItem> formItems = upload.parseRequest(request);
- if (formItems != null && formItems.size() > 0) {
- // 迭代表单数据
- String path = "";
- for (FileItem item : formItems) {
- if (!item.isFormField()) {
- String fileName = new File(item.getName()).getName();
- String filePath = uploadPath + File.separator + fileName;
- File storeFile = new File(filePath);
- // 保存文件到硬盘
- item.write(storeFile);
- request.setAttribute("message", "文件上传成功!");
- path = filePath;
- }else{
- if (item.getString() == null) {
- new FileProccessing(path);
- } else if(item.getString().isEmpty()){
- new FileProccessing(path);
- }else{
- new FileProccessing(path, 4096, item.getString());
- }
- }
- }
- }
- } catch (Exception ex) {
- request.setAttribute("message", "Error: " + ex.getMessage());
- }
跳转页面
- getServletContext().getRequestDispatcher("/FileDownload.jsp").forward(request, response);
2.FileUpload.jsp:定义一个表单,用来提交用户上传的文件以及自定义的分隔符。若用户不填写自定义分隔符,则会用默认的方式分隔字符。
- <form method="post" action="CountWeb/UploadServlet"
- enctype="multipart/form-data">
- 选择一个文件: <input type="file" name="uploadFile" /> (请选择TXT文件)<br />
- <br />
- 自定义分隔符: <input type="text" name="synstr" value="" /> <br />
- <br /> <input type="submit" value="上传" />
- </form>
3.FileDownload.jsp:用来输出用户上传结果以及词频统计结果。
- <center>
- <h2>${message}</h2>
- </center>
- <% String juge = (String)request.getAttribute("message");
- if(!juge.startsWith("Error")) {%>
- 统计结果:<br />
- <%FileReader filePrint = new FileReader("D:\\Project\\workspace\\CountWeb\\Result.txt");
- BufferedReader br = new BufferedReader(filePrint);
- for(int i = 0;i<14;i++){%>
- <%=br.readLine()%><br />
- <% }
- br.close();
- filePrint.close();
- %>
- <a href="D:\Project\workspace\CountWeb\Result.txt">下载Result文件</a>
- <%} %>
- <br />
运行结果:
1.文件上传界面:
2.上传结果页面:
3.自定义分隔符“,.\n ”输出结果:
4.文件下载:
代码地址:
HTTPS https://coding.net/u/regretless/p/CountWeb/git
SSH git@git.coding.net:regretless/CountWeb.git
GIT git://git.coding.net/regretless/CountWeb.git
Java实现的词频统计——Web迁移的更多相关文章
- java词频统计——web版支持
需求概要: 1.把程序迁移到web平台,通过用户上传TXT的方式接收文件. 2.用户直接输入要统计的文本,服务器返回结果 3.在页面上给出链接 (如果有封皮.作者.字数.页数等信息更佳)或表格,展示经 ...
- 词频统计Web工程
本次将原本控制台工程迁移到了web工程上.. 需求: 1.把程序迁移到web平台,通过用户上传TXT的方式接收文件: 2.在页面上给出链接 (如果有封皮.作者.字数.页数等信息更佳)或表格,展示经典英 ...
- 个人项目----词频统计WEB(部分功能)
需求分析 1.使用web上传txt文件,对上传的txt进行词频统计. 2.将统计后的结果输出到web页面,力求界面优美. 3.在界面上展示所给url的文章词频统计,力求界面优美. 3.将每个单词同四. ...
- Java实现的词频统计——功能改进
本次改进是在原有功能需求及代码基础上额外做的修改,保证了原有的基础需求之外添加了新需求的功能. 功能: 1. 小文件输入——从控制台由用户输入到文件中,再对文件进行统计: 2.支持命令行输入英文作品的 ...
- Java实现中文词频统计
昨日有个中文词频统计的需求, 百度一番后, 发现一大堆标题党文章, 讲的与内容严重不符, 这里就简单记录下自己实现的流程吧! 与英文单词的词频统计不同, 中文的难点在于如何分词, 不过好在有许多优秀的 ...
- 词频统计-------------web版本
要求:把程序迁移到web平台,通过用户上传TXT的方式接收文件.建议(但不强制要求)保留并维护Console版本,有利于测试. 在页面上设置上传的控件,然后在servlet中接受,得到的是一个字节流, ...
- Java实现的词频统计
要求: 1.读取文件: 2.记录出现的词汇及出现频率: 3.按照频率降序排列: 4.输出结果. 概要: 1.读取的文件路径是默认的,为了方便调试,将要统计的文章.段落复制到文本中即可:2.只支持英文: ...
- Java实现的词频统计——单元测试
前言:本次测试过程中发现了几个未知字符,这里将其转化为十六进制码对其加以区分. 1)保存统计结果的Result文件中显示如图: 2)将其复制到eclipse环境下的切分方法StringTokenize ...
- 词频统计web
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
随机推荐
- 短连接、长连接、轮询、长轮询、WebSocket
短连接 建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接 定义:短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送. 应 ...
- CTF-安恒18年十二月月赛部分writeup
CTF-安恒十二月月赛部分writeup 这次题目都比较简单蛤,连我这菜鸡都能做几道. WEB1-ezweb2 打开网站,啥也没有,审计源代码,还是啥都没有,也没什么功能菜单,扫了一下目录,扫到了ad ...
- 实现一个 RESTful API 服务器
RESTful 是目前最为流行的一种互联网软件结构.因为它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用. 什么是 REST REST(REpresentational Stat ...
- 20155215 2016-2017-2《Java程序设计》课程总结
20155215 2016-2017-2<Java程序设计>课程总结 一.(按顺序)每周作业链接汇总 预备作业1: 对于JAVA课程本身的期望和理解.以及期望的师生关系是什么样的,自己印象 ...
- 20145209 实验四 《android开发基础》 实验报告
20145209 实验四 <android开发基础> 实验报告 实验内容 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBI ...
- noone is not in the sudoers file ubuntu
Login as root or su to get root prompt type visudo an editor will open find a line says root ALL=( ...
- 微服务(SOP)日志管理
问题: 大型企业应用规模大,调试 / 解决问题由于在生产环境中不会有开发环境的调试工具,如果需要模拟还原当时的环境, 目前的解决办法是进行日志记录 日志记录的常用方式: 使用SpringAop进行切入 ...
- 【BZOJ2754】[SCOI2012]喵星球上的点名
[BZOJ2754][SCOI2012]喵星球上的点名 题面 bzoj 洛谷 题解 这题有各种神仙做法啊,什么暴力\(AC\)自动机.\(SAM\)等等五花八门 我这个蒟蒻在这里提供一种复杂度正确且常 ...
- java 文件过滤
public class TestFileio { public static void main(String[] args) { File file = new File("D:/upl ...
- 属性文件操作之Properties与ResourceBundle
1.Properties与ResourceBundle 两个类都可以读取属性文件中以key/value形式存储的键值对,ResourceBundle读取属性文件时操作相对简单. 2.Propertie ...