需求分析

  1.使用web上传txt文件,对上传的txt进行词频统计。

  2.将统计后的结果输出到web页面,力求界面优美。

  3.在界面上展示所给url的文章词频统计,力求界面优美。

  3.将每个单词同四、六级词库进行比对,统计所传txt文件中四、六级单词涵盖率。

  4.在3的基础上,展示文章中前10%单词中的覆盖百分比,词频前50%单词、词频前80%单词的覆盖百分比。

  由于能力有限,学习了很久,到目前为止之完成了第一个功能,并对结果进行了输出,界面部分还有待学习。

代码实现

  创建了两个JSP界面,upload.jsp和index.jsp。

  index.jsp

  用来输出显示词频统计的结果。其中引用了之前写过的词频统计woundcount类。该类可以很方便的统计出词频结果。

 <%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="UTF-8"%>//一定要把charset设置成gb2312要不然会出现乱码
<%@page import = "wordcount04.wordcount"
import = "java.io.*"
import = "java.util.ArrayList"
import = "java.util.Map" %> //<%@page %>可以引用java包
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>//heml的内容
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>词频统计结果</title>//题目,就是在每个页面最上方显示的名
</head>
<body>
<form action="index.jsp" >//表单标签,可以用来画格子,type可以表示各种参数,对应着不同的功能,例如file可以实现文件上传
<table border = "1">//设置输出显示时的边框
<tr>
<th>单词</th>
<th>词频数</th>
<%
try{
String getfile = request.getParameter("file");//file是index里的file,通过getParameter得到参数
String getbyte = new String(getfile.getBytes("gb2312"),"UTF-8");
File file = new File(getbyte);
wordcount yl = new wordcount();
Map<String, Integer> wc = yl.map(file);//词频统计
ArrayList<Map.Entry<String,Integer>> list = yl.SortMap(wc);
//输出结果
for(int k = 0;k < list.size();k++){
%>
<tr>
<td><%=list.get(k).getKey()%></td>
<td><%=list.get(k).getValue()%></td>
<% } }catch(Exception e){
out.print(e);
}
%>
</table> </form> </body>
</html>

  upload.jsp

  这个页面用来用户上传文件。

 <%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="gb2312"%>
<!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=gb2312">
<title>上传词频统计文件</title>
</head>
<body>
<form action="index.jsp" method="post">
<input type="file" name="file">
<input type="submit" value = "上传">
</form>
</body>
</html>

运行结果

upload

index

总结

  这次web开发也不能说是从无到有,但的确是从最基础的一点点学起。从格式,到每个标签的含义,再到怎么传值。从看书,到学习资料。前前后后用了很长的时间。最后弄明白了JSP可以实现这个简单的功能,而且也可以通过serverlet来完成这个过程,只是还没弄弄透彻这个机制。只是还需要在日后对web开发进行跟深入的学习。这次也对时间进行了统计,成果在以下链接中展示。

链接(未完成)。

个人项目----词频统计WEB(部分功能)的更多相关文章

  1. 词频统计Web工程

    本次将原本控制台工程迁移到了web工程上.. 需求: 1.把程序迁移到web平台,通过用户上传TXT的方式接收文件: 2.在页面上给出链接 (如果有封皮.作者.字数.页数等信息更佳)或表格,展示经典英 ...

  2. Java实现的词频统计——Web迁移

    本次将原本控制台工程迁移到了web工程上,依旧保留原本控制台的版本. 需求: 1.把程序迁移到web平台,通过用户上传TXT的方式接收文件: 2.在页面上给出链接 (如果有封皮.作者.字数.页数等信息 ...

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

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

  4. 个人项目-词频统计(语言:C++)

    词频统计 (个人项目) 要求 (1). 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率. 附加要求:读入一段文本文件,统计该文本文件中单词的频率. (2) ...

  5. 作业3-个人项目<词频统计>

    上了一天的课,现在终于可以静下来更新我的博客了.       越来越发现,写博客是一种享受.来看看这次小林老师的“作战任务”.                词频统计 单词: 包含有4个或4个以上的字 ...

  6. 软件工程第一次个人项目——词频统计by11061153柴泽华

    一.预计工程设计时间 明确要求: 15min: 查阅资料: 1h: 学习C++基础知识与特性: 4-5h: 主函数编写及输入输出部分: 0.5h: 文件的遍历: 1h: 编写两种模式的词频统计函数: ...

  7. 词频统计-------------web版本

    要求:把程序迁移到web平台,通过用户上传TXT的方式接收文件.建议(但不强制要求)保留并维护Console版本,有利于测试. 在页面上设置上传的控件,然后在servlet中接受,得到的是一个字节流, ...

  8. 结对项目— 词频统计2(语言C++)

    结对对象:季天梦 博客地址:http://www.cnblogs.com/jitianmeng/ github链接:https://github.com/liuyutianlyt/EX_4.md 比例 ...

  9. 结对项目— 词频统计(语言C++)

    结对对象:季天梦 博客地址:http://www.cnblogs.com/jitianmeng/ github链接:https://github.com/liuyutianlyt/EX_4.md 比例 ...

随机推荐

  1. uva 210 - Concurrency Simulator (并行程序模拟)

    from CSDN: https://blog.csdn.net/su_cicada/article/details/87898579 例题6-1 并行程序模拟( Concurrency Simula ...

  2. 加法变乘法——第六届蓝桥杯C语言B组(省赛)第六题

    原创 加法变乘法 我们都知道:1+2+3+ ... + 49 = 1225现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如:1+2+3+...+10*11+12+...+27*28+ ...

  3. Go学习笔记02

    前言 上篇内容,介绍了如何在不同的系统上安装 Go 开发环境和部分参数的配置,也简单介绍了 package 的概念.导入方式和我对包的初始化过程的理解,关于初始化顺序的理解,可能有错误,后期会有修改, ...

  4. Python-dataframe合并(merge函数)

    import pandas as pd import numpy as np df1=pd.DataFrame({'key':['b','b','a','c','a','a','b'],'data1' ...

  5. 20155223 2006-2007-2 《Java程序设计》第3周学习总结

    20155223 2006-2007-2 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 有点好奇:为什么Java编程语言一定要使用java.math.BigDecimal才 ...

  6. #20155331 2016-2017-2 《Java程序设计》第3周学习总结

    20155331 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 程序中的类由两个部分组成:属性和方法.属性对应的是对象的特征:方法对应的是对象的行为 ...

  7. 【java笔记】Calendar.getInstance()是什么意思

    Calendar类是个抽象类,因此本身不能被实例化,然而在却创建了Calendar 的对象,但并不是抽象类可以创建对象这个对象并不是Calendar 自身实例,而是其子类实例,这是在getInstan ...

  8. Linux日志切割logrotate服务配置

    一.logrotate介绍 logrotate软件是一个日志管理工具,用于非分隔日志,删除旧的日志文件,并创建新的日志文件,起到“转储作用”,可以为系统节省磁盘空间.一般centos系统已经自带安装好 ...

  9. 解决老项目中 Timer运行一段时间后失效的问题

    那是因为Timer中的代码出现了异常未被捕获,所以线程被挂起 只需要加入  try catch即可 推荐使用 Quartz 2018-08-08 03:50:44 [ Timer-1:39366015 ...

  10. logstash处理@timestamp时区

    input { stdin { } } filter { #ruby { # code => "event.set('timestamp', event.get('@timestamp ...