- 浏览: 141106 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
skylcf:
整个页面的代码呢?
jquery动态添加行并计算总金额 -
dingherry:
没有大图中图,怎么做?
图片放大镜效果 -
yinjj472:
package com.yin.test;
public c ...
JAVA设计模式之单例模式 -
wangyu1221:
放在spring里面,是不是就不用那么多static priv ...
JAVA设计模式之单例模式 -
xurichusheng:
<p> </p>
<pre na ...
JAVA设计模式之单例模式
站想要让搜索引擎搜到,必须设置好keywords,description,title,做好SEO优化,同时sitemap.xml也是不可缺少的
通过Google,得到一些帮助,把自己做的整理一下:
第一、对文件进行查找:
public class FileDemo { File myDir; File[] contents; List fileList; Iterator currentFileIt; File currentFile; String path; /** * 无参的构造函数 * */ public FileDemo() { path = new String(""); fileList = new ArrayList(); } /** * 有参的构造函数 * */ public FileDemo(String path) { this.path = path; fileList = new ArrayList(); } /** * 设置要查看的文件路径 */ public void setPath(String path) { this.path = path; } /*************************************************************************** * 返回当前目录的路径 */ public String getDirectory() { return myDir.getPath(); } public void refreshList() { if (this.path.equals("")) path = "c:\\"; myDir = new File(path); fileList.clear(); contents = myDir.listFiles(); // 重新装入路径下文件 for (int i = 0; i < contents.length; i++) { fileList.add(contents[i]); } currentFileIt = fileList.iterator(); } /** * 指到下一个条目 */ public boolean nextFile() { while (currentFileIt.hasNext()) { currentFile = (File) currentFileIt.next(); return true; } return false; } /** * 返回当前指向的文件对象的文件名称 */ public String getFileName() { return currentFile.getName(); } /** * 返回当前指向的文件对象的文件尺寸 */ public String getFileSize() { return convertFileSize(currentFile.length()); } /** * 转换文件尺寸为指定格式。 */ private String convertFileSize(long size) { int divisor = 1; String unit = "bytes"; if (size >= 1024 * 1024) { divisor = 1024 * 1024; unit = "MB"; } else if (size >= 1024) { divisor = 1024; unit = "KB"; } if (divisor == 1) return size / divisor + " " + unit; String aftercomma = "" + 100 * (size % divisor) / divisor; if (aftercomma.length() == 1) aftercomma = "0" + aftercomma; return size / divisor + "." + aftercomma + " " + unit; } /** * 返回文件的最后修改日期 */ public String getFileTimeStamp() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = sdf.format(new Date(currentFile.lastModified())); return dateString; } /** * 返回文件是不是一个目录 */ public boolean isDirectory() { return currentFile.isDirectory(); } }
第二、创建一个任务类,继承TimerTask
public class XMLParese extends TimerTask{ private ServletContext context; public XMLParese(ServletContext context){ this.context=context; } @Override public void run() { // TODO Auto-generated method stub createSiteMap(); } public void createSiteMap() { String priority = "0.75";// 级 别 String changefreq = "daily";// "weekly";//频 率 String xmlpath = "e:/sitemap.xml";// sitemap名称以及位置 String homeurl = "http://www.jiujiajiu.cn"; // 栏目首页 String []directory={"promotion","news","brand","goods","services","shop","winelive"}; FileDemo fp = new FileDemo(); try { Document document = DocumentHelper.createDocument(); Element urlsetElement = document.addElement("urlset"); urlsetElement.addAttribute("xmlns ", "http://www.sitemaps.org/schemas/sitemap/0.9"); // "xmlns // "必须要有空格,否则会报错 urlsetElement.addAttribute("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9"); urlsetElement.addAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); urlsetElement.addAttribute("xsi:schemaLocation", "http://www.sitemaps.org/schemas/sitemap/0.9 " + "http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"); //创建url根元素 Element urlElement ; //为url根元素创建loc网页地址,lastmod更新时间,changefreq更改频率和priority级别 Element locElement ; Element lastmodElement; Element changefreqElement; Element priorityElement; fp.setPath("D:\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\webapps\\ROOT\\"); fp.refreshList(); while (fp.nextFile()) { if (!fp.isDirectory()) { homeurl="http://www.jiujiajiu.cn/"; String f=fp.getFileName(); String fname=f.substring(f.lastIndexOf(".")); if((fname.equals(".html")||fname.equals(".htm")) && !f.equals("login.html")){ urlElement = urlsetElement.addElement("url"); locElement = urlElement.addElement("loc"); lastmodElement = urlElement.addElement("lastmod"); changefreqElement = urlElement.addElement("changefreq"); priorityElement = urlElement.addElement("priority"); //导航赋值 homeurl = homeurl + fp.getFileName(); locElement.setText(homeurl); lastmodElement.setText(fp.getFileTimeStamp());// 这里时间是你更新时间,这里暂时统一 changefreqElement.setText(changefreq); priorityElement.setText(priority); } } } //各个目录下的文件 for(int i=0;i<directory.length;i++){ fp.setPath("D:\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\webapps\\ROOT\\"+directory[i]+"\\"); fp.refreshList(); while (fp.nextFile()) { homeurl="http://www.jiujiajiu.cn/"+directory[i]+"/"; urlElement = urlsetElement.addElement("url"); locElement = urlElement.addElement("loc"); lastmodElement = urlElement.addElement("lastmod"); changefreqElement = urlElement.addElement("changefreq"); priorityElement = urlElement.addElement("priority"); homeurl = homeurl + fp.getFileName(); locElement.setText(homeurl); lastmodElement.setText(fp.getFileTimeStamp());// 这里时间是你更新时间,这里暂时统一 changefreqElement.setText(changefreq); priorityElement.setText(priority); } } XMLWriter writer = new XMLWriter(new FileOutputStream(new File( xmlpath))); writer.write(document); writer.close(); document = null; // 格式化 formatXMLFile(xmlpath, "UTF-8"); } catch (Exception ex) { ex.printStackTrace(); } } /** * 格式化XML文档,并解决中文问题 * @param xmlpath:xml文件路径 * @param charSet:格式化的字符集 * @return */ public static boolean formatXMLFile(String xmlpath, String charSet) { boolean returnValue = false; try { SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File(xmlpath)); XMLWriter output = null; OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding(charSet); output = new XMLWriter(new FileWriter(new File(xmlpath)), format); output.write(document); output.close(); document = null; saxReader = null; returnValue = true; } catch (Exception ex) { ex.printStackTrace(); } return returnValue; } }
第三、创建一个任务监听类,实现ServletContextListener 接口
public class TimerListener implements ServletContextListener { // 设置启动时间为23点; private static final int hours = 23; private static final int minutes = 0; private static final int seconds = 0; private Timer timer = null; public void contextDestroyed(ServletContextEvent event) { timer.cancel(); event.getServletContext().log("定时器销毁"); } public void contextInitialized(ServletContextEvent event) { timer=new Timer(true); event.getServletContext().log("定时器已启动"); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, hours); calendar.set(Calendar.MINUTE, minutes); calendar.set(Calendar.SECOND, seconds); //SiteMap生成 //间隔时间1天生成一次 timer.schedule(new XMLParese(event.getServletContext()),calendar.getTime(), 1*24*60*60*1000); } }
第四、在web中添加一个监听器
web.xml里的配置
<!-- 定时器 --> <listener> <listener-class>timer.TimerListener</listener-class> </listener>
发表评论
-
SVN的安装配置 以及与MyEclipse 整合使用开发
2011-12-13 10:31 1251... -
利用SimpleDateFormat获得上一个月和年
2011-06-14 10:24 3520主要用的SimpleDateFormat(主要实现格式化)和C ... -
使用Json实现异步提交
2011-03-01 16:59 1153使用Ajax可以实现无刷新页面请求,但对于java来说个人感觉 ... -
淘宝API的应用
2011-02-24 13:54 3658在http://open.taobao.com开放平台下载相应 ... -
匹配img标签中没有alt属性的正则表达式
2011-02-22 14:50 2520找出所有img标签的,没有带说明属性alt的标签: 正则:& ... -
Java中过滤敏感词
2011-01-27 11:38 2320在发表评论,文章时常常需要过滤一些敏感词... 把自己的拿出 ... -
常用正则表达式整理
2011-01-25 09:45 805常用正则表达式 正则表达式调试工具:Rege ... -
用JUnit做测试时出现的问题
2011-01-21 17:54 1090测试类: public class loginActi ... -
struts2配置
2011-01-13 16:43 981对于struts大家也许都不陌生,但很多时候可能还会出错,今天 ... -
Xdebug的安装
2010-12-31 16:11 802xdebug是一个开源的php调试器,以php模块的形式加载并 ... -
MyEclipse使用时有时svn的版本会不显示问题解决
2010-11-02 13:29 1396有时候再用MyEclipse时,你重新下载项目,然后会不 ... -
JAVA实现写入文件到文本文档
2010-10-20 09:03 14121.以PrintWriter来实现写入 import ... -
自定义checkbox的大小
2010-10-13 11:23 1906自定义checkbox的大小:用css的zoom属性,< ... -
Apache优化
2010-10-13 10:17 854通过对Apache2增加模块MPM来进行优化. 开启mpm:I ... -
seo 搜索引擎优化
2010-10-12 10:31 826SEO是Search Engine Optimization的 ... -
存储过程的优点
2010-10-12 09:37 940存储过程的优点: 1.存储过程只在创造时进行编译,以 ... -
PHP文件管理系统,可以远程管理服务器上的文件,包括上传,下载,新建,编辑,复制,粘贴,删除,远程下载等
2010-09-21 11:14 1207功能特点: 1.可以远程管理服务器上的文件,包括上传,下载,新 ... -
tomcat与Apache配置
2010-09-13 15:29 9771.在配置之前确定Tomcat,Apache已经安装好.在to ... -
配置php-java-bridge,PHP调用自己的JAVA文件
2010-08-28 14:10 1926php_java.dll 需要配置php.ini,新版的php ...
相关推荐
tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl
tornado-6.1-cp36-cp36m-manylinux2014_aarch64.whl
基于java的ssm停车位短租系统程序答辩PPT.pptx
tornado-6.4b1-cp38-abi3-musllinux_1_1_x86_64.whl
基于java的招生管理系统答辩PPT.pptx
本压缩包资源说明,你现在往下拉可以看到压缩包内容目录 我是批量上传的基于SpringBoot+Vue的项目,所以描述都一样;有源码有数据库脚本,系统都是测试过可运行的,看文件名即可区分项目~ |Java|SpringBoot|Vue|前后端分离| 开发语言:Java 框架:SpringBoot,Vue JDK版本:JDK1.8 数据库:MySQL 5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat 开发软件: idea/eclipse(推荐idea) Maven包:Maven3.3.9+ 系统环境:Windows/Mac
基于java的农机电招平台答辩PPT.pptx
jdk23 甲骨文官方安装包
基于java的机场网上订票系统答辩PPT.pptx
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
基于java的网上书店销售管理系统答辩PPT.pptx
tornado-6.3.3-cp38-abi3-win32.whl
【作品名称】:基于 Jsp+Sqlserver 实现的超市信息管理系统 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 系统功能: (1)系统分两种身份:管理员和员工,选择不同的身份进入不同的功能操作界面! (2)商品信息管理:管理员可以添加和维护商品信息,员工只能对商品信息进行查询 (3)员工信息管理:管理员登陆系统后可以可以添加和维护超市员工(收银员)的信息 (4)商品进货管理:管理员登陆系统后可以添加商品进货信息,可以对商品进货信息进行查询和统计,添加商品进进货退货信息,对商品进货退货信息进行查询和统计 (5)商品销售管理:员工(收银员)登陆系统后可以对商品进行销售,可以按时间查询自己的销售业绩;管理员登陆系统后可以按照时间等条件对销售信息进行查询,可以根据小票号登记顾客退货信息,查询顾客退货信息,可以查看员 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。
tornado-6.3.2-cp38-abi3-musllinux_1_1_i686.whl
基于java的热带水果商城答辩PPT.pptx
java awt、Swing实现中国象棋可联机版本采用面向对象思想 采用面向对象的思路,实现中国象棋可联机版本,适合初学者,以及对面向对象有更深层次理解的开发者或者同学。 使用原生的java awt、Swing进行窗口式开发 将素材文件夹放在D:\Game路径下 两个工程直接导入Eclipse,即可运行, ps:一个工程运行两次也可以,需要注意端口号,代码默认如果连接的端口号是3003,则监听3004端口,相反同理。联机前需要确保两台计算机同时处于局域网或外网
web前端设计与开发(详细整理)(包含html讲解,css讲解,移动web讲解),合适学习前端的人员进行基础学习,一秒变高手
分析所需的数据和代码都在这里
Listening Exercise 3 Part 2.mp3
链表 删除链表中的重复元素,链表基础