信息领域热词分析05(eclipse实现基本功能)

(1) 项目名称:信息化领域热词分类分析及解释

(2) 功能设计:
1)
数据采集:要求从定期自动从网络中爬取信息领域的相关热
词;
2)
数据清洗:对热词信息进行数据清洗,并采用自动分类技术
生成信息领域热词目录,;
3)
热词解释:针对每个热词名词自动添加中文解释(参照百度
百科或维基百科);
4)
热词引用:并对近期引用热词的文章或新闻进行标记,生成
超链接目录,用户可以点击访问;
5)
数据可视化展示:
① 用字符云或热词图进行可视化展示;
② 用关系图标识热词之间的紧密程度。6) 数据报告:可将所有热词目录和名词解释生成 WORD 版报告
形式导出。
今天完成了项目的一些基本功能。
主菜单:
main.html:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>信息化热词分析</title>
<meta name="renderer" content="webkit|ie-comp|ie-stand" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link rel="stylesheet" type="text/css" href="resource/layui/css/layui.css">
<script type="text/javascript" src="js/jquery-1.11.0.js"></script>
<script src="js/echarts.js"></script>
<script src="js/worldcloud.js"></script>
<script src="resource/layui/layui.js"></script>
        <style>
            iframe{
                 100%;
                height: 100%;
            }
        </style>
<script>
	layui.use('element', function () {
		var $ = layui.jquery;
    	var element = layui.element; //Tab的切换功能,切换事件监听等,需要依赖element模块
        //触发事件
        var active = {
            //在这里给active绑定几项事件,后面可通过active调用这些事件
            tabAdd: function (url, id, name) {
                //新增一个Tab项 传入三个参数,分别对应其标题,tab页面的地址,还有一个规定的id,是标签中data-id的属性值
                //关于tabAdd的方法所传入的参数可看layui的开发文档中基础方法部分
                element.tabAdd('demo', {
                    title: name,
                    content: '<iframe data-frameid="' + id + '" scrolling="auto" frameborder="0" src="' + url +'" style="100%;height:99%;"></iframe>',
                    id: id //规定好的id
                })
                CustomRightClick(id); //给tab绑定右击事件
                FrameWH();  //计算ifram层的大小
            },
            tabChange: function (id) {
                //切换到指定Tab项
                element.tabChange('demo', id); //根据传入的id传入到指定的tab项
            },
            tabDelete: function (id) {
                element.tabDelete("demo", id);//删除
            }
            , tabDeleteAll: function (ids) {//删除所有
                $.each(ids, function (i, item) {
                    element.tabDelete("demo", item); //ids是一个数组,里面存放了多个id,调用tabDelete方法分别删除
                })
            }
        };
      //当点击有site-demo-active属性的标签时,即左侧菜单栏中内容 ,触发点击事件
        $('.site-demo-active').on('click', function () {
            var dataid = $(this);
            //这时会判断右侧.layui-tab-title属性下的有lay-id属性的li的数目,即已经打开的tab项数目
            if ($(".layui-tab-title li[lay-id]").length <= 0) {
                //如果比零小,则直接打开新的tab项
                active.tabAdd(dataid.attr("data-url"), dataid.attr("data-id"), dataid.attr("data-title"));
            } else {
                //否则判断该tab项是否以及存在

                var isData = false; //初始化一个标志,为false说明未打开该tab项 为true则说明已有
                $.each($(".layui-tab-title li[lay-id]"), function () {
                    //如果点击左侧菜单栏所传入的id 在右侧tab项中的lay-id属性可以找到,则说明该tab项已经打开
                    if ($(this).attr("lay-id") == dataid.attr("data-id")) {
                        isData = true;
                    }
                })
                if (isData == false) {
                    //标志为false 新增一个tab项
                    active.tabAdd(dataid.attr("data-url"), dataid.attr("data-id"), dataid.attr("data-title"));
                }
            }
            //最后不管是否新增tab,最后都转到要打开的选项页面上
            active.tabChange(dataid.attr("data-id"));
        });
        function CustomRightClick(id) {
            //取消右键  rightmenu属性开始是隐藏的 ,当右击的时候显示,左击的时候隐藏
            $('.layui-tab-title li').on('contextmenu', function () { return false; })
            $('.layui-tab-title,.layui-tab-title li').click(function () {
                $('.rightmenu').hide();
            });
            //桌面点击右击 
            $('.layui-tab-title li').on('contextmenu', function (e) {
                var popupmenu = $(".rightmenu");
                popupmenu.find("li").attr("data-id", id); //在右键菜单中的标签绑定id属性

                //判断右侧菜单的位置 
                l = ($(document).width() - e.clientX) < popupmenu.width() ? (e.clientX - popupmenu.width()) : e.clientX;
                t = ($(document).height() - e.clientY) < popupmenu.height() ? (e.clientY - popupmenu.height()) : e.clientY;
                popupmenu.css({ left: l, top: t }).show(); //进行绝对定位
                //alert("右键菜单")
                return false;
            });
        }

        $(".rightmenu li").click(function () {

            //右键菜单中的选项被点击之后,判断type的类型,决定关闭所有还是关闭当前。
            if ($(this).attr("data-type") == "closethis") {
                //如果关闭当前,即根据显示右键菜单时所绑定的id,执行tabDelete
                active.tabDelete($(this).attr("data-id"))
            } else if ($(this).attr("data-type") == "closeall") {
                var tabtitle = $(".layui-tab-title li");
                var ids = new Array();
                $.each(tabtitle, function (i) {
                    ids[i] = $(this).attr("lay-id");
                })
                //如果关闭所有 ,即将所有的lay-id放进数组,执行tabDeleteAll
                active.tabDeleteAll(ids);
            }

            $('.rightmenu').hide(); //最后再隐藏右键菜单
        })
        	function FrameWH() {
            	var h = $(window).height() - 41 - 10 - 60 - 10 - 44 - 10;
            	$("iframe").css("height", h + "px");
        	}

        	$(window).resize(function () {
            FrameWH();
        	})
	});
</script>
</head>
<body class="layui-layout-body">
	<div class="layui-layout layui-layout-admin">
		  <div class="layui-header">
		  		<div class="layui-logo">信息化领域热词分类分析</div>
		  </div>
		  <div class="layui-side layui-bg-black">
    			<div class="layui-side-scroll">
      				<!-- 左侧导航区域(可配合layui已有的垂直导航) -->
      				<ul class="layui-nav layui-nav-tree" lay-filter="test">
        				<li class="layui-nav-item layui-nav-itemed">
          					<a href="#" data-url="hot.html" data-id="1" data-title="热词图" class="site-demo-active" data-type="tabAdd">热词图</a>
        				</li>
        				<li class="layui-nav-item">
          					<a href="#" data-url="explain.html" data-id="2" data-title="热词解释" class="site-demo-active" data-type="tabAdd">热词解释</a>
        				</li>
        				<li class="layui-nav-item"><a href="#" data-url="link.html" data-id="3" data-title="热词相关文章" class="site-demo-active" data-type="tabAdd">热词相关文章</a></li>
        				<li class="layui-nav-item"><a href="#">生成word</a></li>
      				</ul>
    			</div>
  		</div>
  		<div class="layui-body">
    		<div class="layui-tab layui-tab-brief" lay-filter="demo" lay-allowclose="true">
                <ul class="layui-tab-title">
                </ul>
                <ul class="rightmenu" style="display: none;position: absolute;">
                    <li data-type="closethis">关闭当前</li>
                    <li data-type="closeall">关闭所有</li>
                </ul>
                <div class="layui-tab-content"></div>
        	</div>
  		</div>
  		<!-- tab-->
  		
  		<div class="layui-footer">
    	<!-- 底部固定区域 -->
    		信息领域热词分类分析
  		</div>
	</div>
</body>
</html>

热词云图:

hot.html:

<!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>热词可视图</title>
<script src="js/jquery-1.11.3.min.js"></script>
<script src="js/echarts.js"></script>
<script src="js/worldcloud.js"></script>
</head>
<body>
<div style="position:absolute;left:400px;top:20px;">
<div id="main" style=" 1000px;height:400px;"></div>
</div>
</body>
<script type="text/javascript">
var myChart = echarts.init(document.getElementById('main'));
var statisticsData =[];
myChart.showLoading();
$.ajax({
   type : "post",
   async : true, //异步请求(同步请求将会锁住浏览器,其他操作须等请求完成才可执行)
   url : "Servlet?method=find", //请求发送到Servlet
   data : {},
   dataType : "json", //返回数据形式为json
   //7.请求成功后接收数据name+num两组数据
   success : function(result) {
       //result为服务器返回的json对象
       if (result) {
           //8.取出数据存入数组
           for (var i = 0; i <result.length; i++) {
            var statisticsObj = {name:'',value:''};   //因为ECharts里边需要的的数据格式是这样的
               statisticsObj.name =result[i].hotwords;
               statisticsObj.value =result[i].num;
               //alert( statisticsObj.name);
               //alert(statisticsObj.value);
                statisticsData.push(statisticsObj);
           }
           //alert(statisticsData);
           //把拿到的异步数据push进我自己建的数组里
           myChart.hideLoading();
           //9.覆盖操作-根据数据加载数据图表
           var z1_option = {
        		   title: {
                       text: '最新热词统计'
                   },
                   tooltip: {},
                   series: [{
                       type : 'wordCloud',  //类型为字符云
                           shape:'smooth',  //平滑
                           gridSize : 8, //网格尺寸
                           size : ['50%','50%'],
                           //sizeRange : [ 50, 100 ],
                           rotationRange : [-45, 0, 45, 90], //旋转范围
                           textStyle : {
                               normal : {
                                   fontFamily:'微软雅黑',
                                   color: function() {
                                       return 'rgb(' + 
                                           Math.round(Math.random() * 255) +
                                    ', ' + Math.round(Math.random() * 255) +
                                    ', ' + Math.round(Math.random() * 255) + ')'
                                          }
                                   },
                               emphasis : {
                                   shadowBlur : 5,  //阴影距离
                                   shadowColor : '#333'  //阴影颜色
                               }
                           },
                           left: 'center',
                           top: 'center',
                           right: null,
                           bottom: null,
                           '100%',
                           height:'100%',
                           data:statisticsData
                   }]
                    };
            myChart.setOption(z1_option, true);
       }
   },
})
</script>
</html>

热词解释列表

explain.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>热词名词解释</title>
<link rel="stylesheet" type="text/css" href="resource/layui/css/layui.css">
<script type="text/javascript" src="js/jquery-1.11.0.js"></script>
<script src="js/echarts.js"></script>
<script src="js/worldcloud.js"></script>
<script src="resource/layui/layui.js"></script>
<script>
    layui.use(['laydate','table'], function () {
        var table = layui.table;
</script>
</head>
<body>
		<div class="layui-card-body ">
 	<table class="layui-table layui-form">
   		<thead>
   			<tr>
     			<th width="70">热词</th>
     			<th width="380">热词解释</th>
     			<th width="100">点击进入</th>
     		</tr>
   		</thead>
   		<tbody class="x-cate" id="test">
   		</tbody>
 	</table>
</div>
</body>
<script type="text/javascript">
	var test=document.getElementById("test");
	$.ajax({
		url:"Servlet?method=find2",
		datatype:'json',
		type:'post',
		async:true,
		success:function(data){
			var p=eval("("+data+")");
			var tt=p;
			var str="";
			for(var i=0;i<tt.length;i++){
				str+="<tr cate-id='0' fid='0'>"+"<td>"+tt[i].hotwords+"</td>"+
				"<td>"+tt[i].explain+"</td>"+
				"<td><a target='_blank' href="+tt[i].website+">点击进入</a></td>"+"<tr>";
			}
			test.innerHTML=str;
		},
		error:function(arg1){
			alert("数据加载失败");
			console.log(arg1);
		}		
	})
</script>
</html>

 热词相关新闻列表:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>热词名词解释</title>
<link rel="stylesheet" type="text/css" href="resource/layui/css/layui.css">
<script type="text/javascript" src="js/jquery-1.11.0.js"></script>
<script src="js/echarts.js"></script>
<script src="js/worldcloud.js"></script>
<script src="resource/layui/layui.js"></script>
<script>
    layui.use(['laydate','table'], function () {
        var table = layui.table;
    });
</script>
</head>
<body>
		<div class="layui-card-body ">
 	<table class="layui-table layui-form">
   		<thead>
   			<tr>
     			<th width="70">热词</th>
     			<th width="380">相关新闻</th>
     			<th width="100">新闻链接</th>
     		</tr>
   		</thead>
   		<tbody class="x-cate" id="test">
   		</tbody>
 	</table>
</div>
</body>
<script type="text/javascript">
	var test=document.getElementById("test");
	$.ajax({
		url:"Servlet?method=link",
		datatype:'json',
		type:'post',
		async:true,
		success:function(data){
			var p=eval("("+data+")");
			var tt=p;
			var str="";
			for(var i=0;i<tt.length;i++){
				str+="<tr cate-id='0' fid='0'>"+"<td>"+tt[i].hotwords+"</td>"+
				"<td>"+tt[i].title+"</td>"+
				"<td><a target='_blank' href="+tt[i].href+">点击进入</a></td>"+"<tr>";
			}
			test.innerHTML=str;
		},
		error:function(arg1){
			alert("数据加载失败");
			console.log(arg1);
		}		
	})
</script>
</html>

 dao层:

package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import bean.entity;
public class Dao {
    public List<entity> list1(){
        List<entity> list =new ArrayList<entity>();
        try {
            Connection conn =Util.getConnection();
            // 添加图书信息的SQL语句
            String sql = "select * from final_hotword";
            // 获取Statement
            Statement statement = conn.createStatement();
   
            ResultSet resultSet = statement.executeQuery(sql);
   
            while (resultSet.next()) {
                entity book = new entity();
                book.setHotwords(resultSet.getString("hotname"));
                book.setNum(resultSet.getString("num"));
                list.add(book);
            }
            resultSet.close();
            statement.close();
            conn.close();
}catch (Exception e) {
    e.printStackTrace();
}
        return list;
    }
    //
    public List<entity> list2(){
        List<entity> list =new ArrayList<entity>();
        try {
            	Connection conn = Util.getConnection();
            	// 添加图书信息的SQL语句
            	String sql = "select * from website";
            	// 获取Statement
            	Statement statement = conn.createStatement();
   
            	ResultSet resultSet = statement.executeQuery(sql);
   
            	while (resultSet.next()) {
                	entity book = new entity();
                	book.setHotwords(resultSet.getString("hot"));
                	book.setExplain(resultSet.getString("hotexplent"));
                	book.setWebsite(resultSet.getString("link"));
                	list.add(book);
            	}
            	resultSet.close();
            	statement.close();
            	conn.close();
        	}catch (Exception e) {
        		e.printStackTrace();
        	}
        return list;
    }
    public List<entity> list3(){
        List<entity> list =new ArrayList<entity>();
        try {
            	Connection conn = Util.getConnection();
            	// 添加图书信息的SQL语句
            	String sql = "select * from Link";
            	// 获取Statement
            	Statement statement = conn.createStatement();
   
            	ResultSet resultSet = statement.executeQuery(sql);
   
            	while (resultSet.next()) {
                	entity book = new entity();
                	book.setHotwords(resultSet.getString("wordname"));
                	book.setTitle(resultSet.getString("title"));
                	book.setHref(resultSet.getString("href"));
                	list.add(book);
            	}
            	resultSet.close();
            	statement.close();
            	conn.close();
        	}catch (Exception e) {
        		e.printStackTrace();
        	}
        return list;
    }
}

 bean层:

package bean;

public class entity {
	public String hotwords;
	public String num;
	public String explain;
	public String website;
	public String title;
	public String href;
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getHref() {
		return href;
	}
	public void setHref(String href) {
		this.href = href;
	}
	public String getHotwords() {
		return hotwords;
	}
	public void setHotwords(String hotwords) {
		this.hotwords = hotwords;
	}
	public String getNum() {
		return num;
	}
	public void setNum(String num) {
		this.num = num;
	}
	public String getExplain() {
		return explain;
	}
	public void setExplain(String explain) {
		this.explain = explain;
	}
	public String getWebsite() {
		return website;
	}
	public void setWebsite(String website) {
		this.website = website;
	}
	public entity(String hotwords, String num, String explain, String website, String title, String href) {
		super();
		this.hotwords = hotwords;
		this.num = num;
		this.explain = explain;
		this.website = website;
		this.title = title;
		this.href = href;
	}
	public entity() {
		super();
	}
}

 servlet层:

package servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.google.gson.Gson;

import bean.entity;
import dao.Dao;
 
/**
 * Servlet implementation class servlet
 */
@WebServlet("/Servlet")
public class Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    Dao dao1=new Dao();
 /**
  * @see HttpServlet#HttpServlet()
  */
 public Servlet() {
     super();
     // TODO Auto-generated constructor stub
 }
 
 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String method=request.getParameter("method");
        System.out.println(method);
        if("find".equals(method))
        {
            find(request, response);
        }else if("find2".equals(method))
        {
            find2(request, response);
        }
        else if("link".equals(method)) {
        	getLink(request, response);
        }
 }
        private void find(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
            request.setCharacterEncoding("utf-8");
             List<entity> list =new ArrayList<entity>();
                HttpSession session=request.getSession();
                String buy_nbr=(String) session.getAttribute("userInfo");
                 entity book = new entity();
                List<entity> list2=dao1.list1();
                System.out.println(list2.size());
//                String buy_nbr=(String) session.getAttribute("userInfo");
//                System.out.println(buy_nbr);
                Gson gson2 = new Gson();
                String json = gson2.toJson(list2);
                System.out.println(json);
               // System.out.println(json);
               // System.out.println(json.parse);
                response.setContentType("text/html;charset=UTF-8");
                response.getWriter().write(json);
        }
        private void find2(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        	request.setCharacterEncoding("utf-8");
            List<entity> list =new ArrayList<entity>();
               HttpSession session=request.getSession();
               String buy_nbr=(String) session.getAttribute("userInfo");
                entity book = new entity();
               List<entity> list2=dao1.list2();
               System.out.println(list2.size());
//               String buy_nbr=(String) session.getAttribute("userInfo");
//               System.out.println(buy_nbr);
               Gson gson2 = new Gson();
               String json = gson2.toJson(list2);
               System.out.println(json);
              // System.out.println(json);
              // System.out.println(json.parse);
               response.setContentType("text/html;charset=UTF-8");
               response.getWriter().write(json);
        }
        private void getLink(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        	request.setCharacterEncoding("utf-8");
            List<entity> list =new ArrayList<entity>();
               HttpSession session=request.getSession();
               String buy_nbr=(String) session.getAttribute("userInfo");
                entity book = new entity();
               List<entity> list2=dao1.list3();
               System.out.println(list2.size());
//               String buy_nbr=(String) session.getAttribute("userInfo");
//               System.out.println(buy_nbr);
               Gson gson2 = new Gson();
               String json = gson2.toJson(list2);
               System.out.println(json);
              // System.out.println(json);
              // System.out.println(json.parse);
               response.setContentType("text/html;charset=UTF-8");
               response.getWriter().write(json);
        }
}

 项目结构:

 界面:

 

 之后继续进行生成word。

作者:哦心有
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/haobox/p/15144633.html