【JS】获取当前浏览器版本和电脑系统版本

一、浏览器版本

  • 函数封装,方便适配各种浏览器
export function getBrowserVersion() {
  const ua = navigator.userAgent;
  let tem;
  let match = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
  if (/trident/i.test(match[1])) {
    tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
    return `IE ${tem[1] || ''}`;
  }
  if (match[1] === 'Chrome') {
    tem = ua.match(/\b(OPR|Edge)\/(\d+)/);
    if (tem != null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
  }
  match = match[2] ? [match[1], match[2]] : [navigator.appName, navigator.appVersion, '-?'];
  if ((tem = ua.match(/version\/(\d+)/i)) != null) match.splice(1, 1, tem[1]);
  return match.join(' ');
}
  • 使用
const version = getBrowserVersion()
console.log(version)	// Chrome 124

二、电脑系统版本

  • 函数封装,方便适配各种系统电脑
export function getOSVersion() {
  const { userAgent } = navigator;
  let os = 'Unknown';
  if (userAgent.indexOf('Win') !== -1) {
    os = 'Windows';
    if (userAgent.indexOf('Windows NT 10.0') !== -1) {
      os += ' 10';
    } else if (userAgent.indexOf('Windows NT 6.3') !== -1) {
      os += ' 8.1';
    } else if (userAgent.indexOf('Windows NT 6.2') !== -1) {
      os += ' 8';
    } else if (userAgent.indexOf('Windows NT 6.1') !== -1) {
      os += ' 7';
    } else if (userAgent.indexOf('Windows NT 6.0') !== -1) {
      os += ' Vista';
    } else if (userAgent.indexOf('Windows NT 5.1') !== -1) {
      os += ' XP';
    } else if (userAgent.indexOf('Windows NT 5.0') !== -1) {
      os += ' 2000';
    }
  } else if (userAgent.indexOf('Mac') !== -1) {
    os = 'Mac OS X';
    if (userAgent.indexOf('Mac OS X 10.15') !== -1) {
      os += ' Catalina';
    } else if (userAgent.indexOf('Mac OS X 10.14') !== -1) {
      os += ' Mojave';
    } else if (userAgent.indexOf('Mac OS X 10.13') !== -1) {
      os += ' High Sierra';
    } else if (userAgent.indexOf('Mac OS X 10.12') !== -1) {
      os += ' Sierra';
    } else if (userAgent.indexOf('Mac OS X 10.11') !== -1) {
      os += ' El Capitan';
    } else if (userAgent.indexOf('Mac OS X 10.10') !== -1) {
      os += ' Yosemite';
    } else if (userAgent.indexOf('Mac OS X 10.9') !== -1) {
      os += ' Mavericks';
    } else if (userAgent.indexOf('Mac OS X 10.8') !== -1) {
      os += ' Mountain Lion';
    } else if (userAgent.indexOf('Mac OS X 10.7') !== -1) {
      os += ' Lion';
    } else if (userAgent.indexOf('Mac OS X 10.6') !== -1) {
      os += ' Snow Leopard';
    } else if (userAgent.indexOf('Mac OS X 10.5') !== -1) {
      os += ' Leopard';
    } else if (userAgent.indexOf('Mac OS X 10.4') !== -1) {
      os += ' Tiger';
    } else if (userAgent.indexOf('Mac OS X 10.3') !== -1) {
      os += ' Panther';
    } else if (userAgent.indexOf('Mac OS X 10.2') !== -1) {
      os += ' Jaguar';
    } else if (userAgent.indexOf('Mac OS X 10.1') !== -1) {
      os += ' Puma';
    } else if (userAgent.indexOf('Mac OS X 10.0') !== -1) {
      os += ' Cheetah';
    }
  } else if (userAgent.indexOf('Linux') !== -1) {
    os = 'Linux';
  } else if (userAgent.indexOf('Android') !== -1) {
    os = 'Android';
  } else if (userAgent.indexOf('iOS') !== -1) {
    os = 'iOS';
  }
  return os;
}
  • 使用
const version = getOSVersion()
console.log(version)	// Windows 10
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
2014年09月12日 V2.85更新包(推荐升级) 1.[*修复]修复后台某文件出现任意下载漏洞【感谢乌云[haitaowuyun]发现】 2.[*修复]修复前台存在的SQL注入风险漏洞【感谢乌云[语邑尘]发现】 3.[*修复]修复前台存在的xss跨站脚本攻击漏洞【感谢乌云[evil]发现】 4.[修复]修复内容页投票区域部分浏览器不会居中BUG 5.加强前台提交表单信息的安全过滤 6.修复几个细节BUG 2014年04月30日 V2.84更新包(推荐升级) 1.修复安装向导配置时对数据库字符过滤不严存在入侵漏洞 2.修复后台模板样式文件字符过滤不严存在入侵漏洞 3.修复后台登录验证没有清空验证码信息,导致增加暴力解密风险 4.修复通过后台文章编辑附件栏自定义内容可能导致删掉网站任意文件的BUG 5.修复后台服务器文件管理,文件总大小超过几G会出现页面程序错误BUG 6.完善后台JS复制事件 7.修复其他BUG (1~4更新点感谢白帽:seraph1984,通过乌云平台告知我们网钛。这些入侵漏洞只要有根据程序后台引导页提示对后台文件夹进行重命名以及重命名或删掉安装向导文件夹均不会受影响) 2014年04月10日 V2.83更新包 1.[纠正]纠正后台 会员参数设置 有时自适应高度不对的BUG 2.[纠正]纠正后台如果是用chrome核心浏览器,会造成底部一大截空白的BUG 3.[纠正]纠正部分浏览器后台导航菜单间间隔背景图会重复显示多次BUG 4.[纠正]纠正前台导航下拉二级菜单多次经过会出现重复伸缩问题 5.[纠正]选择服务器文件页面没有滚动条的BUG 2014年03月07日 V2.82更新包 1.[新增]会员投稿管理也加入复制功能 2.[改进]改进后台文章管理 缩略图示意图,图片图标代表本地缩略图,电脑图标代表远程缩略图 3.[纠正]纠正外部调用代码会显示出未审核状态和隐藏状态的文章 4.[纠正]纠正外部调用代码对采用外部链接的文章路径没法显示正确 2013年10月23日 V2.81更新包 1.[新增]文章管理 增加 复制 按钮,免去写形似文章的工作量,直接在现有的修改下即可成新文章 2.[改进]网站参数设置 增加 清除JS内容 按钮 3.修复其他几个小细节 2013年09月07日 V2.80更新包 1.[改进]去掉旧版AJAXRequest换成jQuery中的AJAX 2.[改进]为了系统安全和稳定去掉宇初验证码和印象码,加入4种数字验证码、1种中文验证码、1种计算题验证码供用户选择 3.[改进]为了后台系统安全,后台登录页不用判断是否已登录状态并自动跳转到管理页 4.[改进]后台编辑器CKEditor V3.6.1升级到CKEditor V3.6.6 5.[改进]前台编辑器KindEditor V3.5.5升级到KindEditor V3.5.6 6.[纠正]纠正栏目管理中非顶级分类,次页显示模式选择[分类列表2]没提示不允许选择的提示 7.[纠正]纠正部分浏览器后台列表管理的复选框全选失效的BUG 8.[纠正]纠正部分浏览器后台列表管理的多选处理按钮和下拉菜单失效的BUG 9.[改变]后台兼容模式提升到IE8模式 10.修复其他诸多小细节 2013年07月19日 V2.74更新包 1.[新增]后台引导页加入非IE浏览器提示,后台部分功能在非IE浏览器下可能没法使用 2.[修复]【紧急】纠正后台设皮肤目录存在入侵挂马BUG 3.[修复]纠正服务器时间跟保存到数据库里格式不同造成登录有时出现时间不匹配问题 4.[纠正]生成sitemap 纠正隐藏状态文章和未审核文章也会显示出来的BUG 5.[改变]后台 新增栏目 次页显示模式默认为【图+摘要1】,首页栏目图片文章默认开启 6.[改变]前台网站公告、搜索结果默认显示模式为【图+摘要1】 7.[改变]RSS调用默认调用数量从20改成50 2013年04月15日 V2.73更新包 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去,后台更新下皮肤样式。 1.[改进]文章管理-评论管理 留言内容字符显示50字节扩大到80字节 2.[纠正]纠正后台登陆页密码框只能输入20字符的限制 3.[纠正]纠正栏目编辑时模式选择外部链接,导航菜单和首页栏目开关项没显示的BUG 4.[纠正]纠正sitemap生成把隐藏状态的文章也显示出来的bug 5.全站验证码默认选择传统数字型 6.修复其他小细节 2013年03月18日 V2.72更新包 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去,后台更新下皮肤样式。 1.[修复]由于上传图片管理中的占用数不准确,故去除 2.[改进]前台编辑器字体和背景色盘由原来的十几色改成全色系 3.[改进]完善过滤script标签的JS函数 4.[改进]后台密码设置由原来限制最长20位扩展到50位 5.[纠正]纠正幻灯片下面的广告位和首页栏目广告位宽度少2像素BUG 6.修复其他小细节 2013年03月02日 V2.71更新包 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。 1.关键字管理的地址栏加入自动换行,防止网址过长造成右侧会没显示 2.列表页导航分页加入超过100分页时,下拉选择自动变成文本框输入,防止下拉项太多而影响速度 3.纠正文章管理因异常栏目信息,而造成页面错误 4.生成的缓存文件加入字符的编码,防止因配置内容含asp代码而造成程序出错 5.读取文件加入对0字节文件的错误判断处理 2013年01月11日 V2.7升级包 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。 1.纠正后台AJAX函数的加载图路径错误BUG 2.宇初验证码换成印象码 3.纠正后台引导页可能会被安全狗屏蔽的问题 4.自动完善内容页正文里的图片alt和title属性值 5.纠正富媒体验证码浮层层级问题 6.改进后台首页HTML代码 7.程序里“分类”纠正成“栏目” 8.纠正最新消息更多列表没加入最新消息文章属性限制 9.后台评论管理中,文章链接地址改用伪静态路径 10.去掉后台参数设置中,[后台头部界面]和[用户管理菜单]项 11.解决后台编辑器之前空2格低于一个汉字的问题 12.完善几个细节问题 13.整合20121103~20121220补丁 2012年12月20日 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。 1.富媒体验证码更新到最新版 2.采集项目管理增加创建时间信息 3.上传图片和上传文件框加入编码指定,防止乱码出现 4.修复其他细节bug 2012年11月03日 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。 1.纠正后台文章编辑时获取编辑器缩略图有时没有显示全的bug 2.纠正数据处理管理页面权限不对bug 3.后台文章管理快捷属性设置,加入 首图/缩图/幻灯/滚图 属性的是否有缩略图文件判断 4.纠正后台皮肤管理 高级模式中 界面框架主体(960px)项没保存到数据库的bug 5.前台内容页关键词替换,加入排除已有超连接或图片标签的内容替换 2012年07月06日 V2.6升级包 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。(如果之前没打过2012年05月25日补丁,需要在网站上运行admin/update_20120525.asp文件(如网址输入:http://你的域名/后台目录名/update_20120525.asp),升级完成后删掉update_20120525.asp文件;如果打过就跳过该步骤,直接删掉update_20120525.asp文件。) 1.后台 文章参数设置里的初始化设置,加入注释信息 2.后台 采集管理的[教程]链接纠正 3.皮肤管理加入2个皮肤风格下载路径 4.后台 网站参数设置对路径加入注释信息 5.其他细节修复 6.整合2012年03月27日~2012年06月07日补丁 2012年06月07日 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。 1.[纠正]纠正一些站长工具检索不到网站关键词和网站描述 2.[纠正]纠正注册敏感词如有空值造成无法注册的BUG 3.纠正几处细节BUG 2012年05月25日 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去,覆盖好后,并在网站上运行admin/update_20120525.asp文件(如网址输入:http://你的域名/后台目录名/update_20120525.asp),升级完成后删掉update_20120525.asp文件。 1.后台 网站参数设置 新增验证码模式选择 2.后台 网站参数设置 纠正几处选项名称 3.纠正 关闭全站验证码 会员注册和登录 却还显示的BUG 2012年05月17日 1.纠正20120515补丁造成的页头JS失效BUG 2.纠正20120515补丁造成页头搜索项失效BUG 2012年05月15日 1.纠正后台皮肤管理的生成CSS样式的个别样式问题 2.文章编辑,获取编辑器图片增加bmp格式图片 3.纠正开启IP库时,如果没发现IP库会出现提示信息而不是页面出错 4.完善 字符串长度截取函数 5.改进前台底部友情链接间隔符 6.纠正留言和评论提交成功后会弹出验证码的BUG 7.纠正会员注册计算是否允许再次注册时出现页面错误BUG 8.纠正其他几个小细节 2012年04月17日 1.后台评论管理和留言管理内容加入强制换行,防止有时会撑爆页面 2.后台评论管理和留言管理新增允许修改用户留言/评论内容 2012年03月31日 1.[*紧急修复]修复次页存在的一个xss攻击安全漏洞 2.纠正当新的验证码无法使用时系统自动切换到传统数字验证码 3.其他几个小细节纠正 2012年03月27日 1.后台每页显示个数增加最大200限制 2.网站验证码改为富媒体验证码,更难以被识别和破解 3.其他几个小细节修复和完善 2012年03月21日 V2.5升级包 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。 1.[新增]前台会员投稿和后台文章编辑 新增重复性标题检查按钮和本地获取关键词 2.[新增]新增本地关键词库(位置:inc/keyWord.txt),可以根据自己需求往里面编辑需要的关键词 3.[新增]前台 文章管理 新增查询栏 4.[新增]后台 常规设置-底部栏目 新增链接 留言板 模式 5.[改进]后台 文章管理-栏目管理 文字和细节完善 6.[改进]后台 留言管理和评论管理 内容加入强行换行,防止个别情况撑爆界面 7.[改进]后台 友情链接管理 纠正新增框初始排序值有时非最大值问题 8.[改进]完善前台编辑器细节 9.[修复]后台 会员管理 注册日期查询是失效的BUG 10.[修复]修复留言本页面 会员注册/登录失效问题 11.其他细节修复 2012年02月29日 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。 1.[修复]后台文章管理-栏目管理 二级栏目模式显示错误的BUG 2.[修复]前台页头导航栏二级栏目模式为单篇页时,链接无效BUG 2012年02月10日 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。 1.[新增]后台新增文章时作者栏 加入{%称呼%}自动替换为当前后台用户昵称 2.[改进]后台分页数太多,提交成功后要提示下 3.[新增]后台引导页加入生成首页静态页判断 4.[改进]后台留言管理,对留言内容和用户名加入字符串强制换行 5.[修复]纠正前台投票时,当投票数超过32767时,程序会出错的BUG 2012年01月18日 bug修复 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去,覆盖好后,并在网站上运行admin/update_20120119.asp文件(如网址输入:http://你的域名/后台目录名/update_20120119.asp),升级完成后删掉update_20120119.asp文件。 1.修复“最新信息”列表页会显示出 没有设置“最新信息”属性的文章BUG 2.修复文章管理,状态查询失效BUG 3.栏目编辑 新增 外部链接/单页面 也可设置打开方式 4.内容页正文底部广告移到正文分页下面 5.新增编号22广告位,位于内容页正文分页上面 6.更换“分享到代码”为 百度分享,地址改成百度分享,加入默认内置代码重置,内容页分享代码移到正文底部 7.搜索栏新增京东商城搜索 2012年01月05日 V2.4升级包 1.新增【管理员专区】->【数据处理管理】功能,可以批量替换数据和处理因敏感词而无法正常打开网页问题 2.纠正后台文章编辑,获取编辑器图片无法获取网络图片路径问题 3.后台文章管理,标题后面加入是否含缩略图的图标 4.纠正后台文章编辑,保存远程图片到本地,如果缩略图是网络图片没纠正成本地路径的BUG 5.删除网站参数设置里无用字段信息 6.后台友情链接新增 链接注释信息 栏 7.后台栏目编辑和单篇页编辑,加入模式选择(栏目、外部链接、单篇页) 8.更新免费版安装向导程序至V2.4,加入版本判断和数据库初始化功能 9.节日倒计时改为写文件方式保存缓存文件,以便无法访问外部的空间也可以正常使用该功能 10.整合12.4日补丁 2011年12月4日 bug修复 1.改进采集栏目中对过滤标签进行注释 2.采集过程中,加入 采集标题 去HTML化处理 3.改进保存远程图片和采集图片逻辑 4.几个小细节纠正 2011年11月24日 V2.3升级包 1.MSXML2.XMLHTTP更换成MSXML2.ServerXMLHTTP,防止采集或生成首页静态页会卡死问题 2.纠正采集的图片标签中有js脚本时,可能会造成图片获取不到的BUG 3.友情链接管理,到期日期加入快捷的1、3、6、12个月的选择按钮 4.sitemap加入最后更新时间 5.对首页最新评论和最新留言中连续数字或者连续字母进行强制换行,防止内容被隐藏 6.解除对p、img、input、button等标签默认空隙的限制 7.屏蔽掉网站数据库和采集数据库的数据库还原功能 8.广告管理中广告编辑,加入上传本地图片到编辑器中功能 9.纠正内容页图文排版时,后台设置图片间距无效bug 10.纠正后台采集结果预览,列表小图为绝对路径时没显示出来的BUG 11.整合5.14~11.4的更新包 2011年11月4日 BUG修复 1.修复11.1补丁造成的文章内容摘要过滤HTML失效而可能影响到前台排版问题【重要】 2011年11月1日 BUG修复+细节完善 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去;进入后台皮肤管理,点击[更新全部] 1.后台新增用户和修改用户名加入特殊符号过滤 2.纠正前台留言和评论,如果内容是连续数字或者英文可能会出现不能自动换行的BUG 3.首页logo加入首页超连接 4.纠正蒙层窗口分页导航含中文会错误的BUG 5.后台文章编辑,内容摘要编码化,防止破坏前台HTML代码 6.其他小细节修复 2011年10月13日 BUG修复+细节完善 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去 1.文章管理,标题编码化,防止因为含有HTML代码而排版错乱 2.后台有生成缓存文件的地方加入是否生成成功的判断 3.前台搜索 Google 搜索链接错误 4.减少打开蒙层窗口 要点击2次才会打开的机率 5.文章内容,超标图片下面新增[点击查看原图]超链接 2011年9月30日 BUG修复+细节完善 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去 1.广告管理加入【广告位具体位置说明】链接 2.提高导航下拉二级菜单的浮动层级,让其尽可能不会被其他元素覆盖了 3.纠正首页最新消息置顶文章和首页栏目more链接,当为外部链接时没采用外部链接bug 4.去掉生成首页静态页失败时用跳转语句替代 5.增加后台生成首页静态页错误的原因提示种类 2011年9月25日 功能增加+BUG修复+细节完善 ★更新方式:补丁包里的所有文件覆盖进去 1.网站地图条数最大限制增至100万 2.去掉获取网站自身网址时加入端口的判断 3.采集项目修改,预览采集目标地址列加编号 4.纠正会员投稿保存时,出现js代码文字 5.采集入库相关文章和评论默认开启 2011年9月12日 BUG修复 ★更新方式:补丁包里的所有文件覆盖进去 1.纠正前台编辑器明明有内容却提示没内容的BUG 2.纠正会员注册时有时没判断用户名的唯一性 3.纠正页头网站LOGO与右侧广告位错位3个像素BUG 4.针对百度SEO建议程序优化 (另:针对百度SEO优化请检查后台 网站参数设置-》网站基本信息-内容页“分享到”代码,如存在img标签并且不存在alt属性,请加上alt属性,不然会被扣‘图片Alt信息’分数,如“”改成“”) 2011年9月5日 细节完善+BUG修复 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去 1.纠正后台栏目管理,修改栏目所属,文章的分类没有相应纠正过来的BUG 2.纠正采集历史记录结果查询条件失效的BUG 3.前台编辑器更新到最新版KindEditor V3.5.5 4.后台编辑器更新到最新版ckeditor V3.6.1 2011年8月8日 细节完善+BUG修复 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去;进入后台皮肤管理,点击[更新全部] 1.上传文件名超长时,自动截断 2.纠正网速慢造成出现“stack overflow at line: 0”警示框的错误提示 3.纠正火狐导航下拉菜单只能显示1个子栏目BUG 4.纠正内容页的顶踩进度条在IE6下高度超出BUG 5.纠正114啦天气预报出错问题 6.几个小细节修复 2011年7月22日 细节完善+BUG修复 1.纠正广告管理,点查看代码,跳到页头BUG 2.纠正采集模块为隐藏状态时,新增/修改采集项目还会显示的BUG 3.后台 修改密码,新增其他信息设置菜单,加入列表页每页显示数量设置 4.完善新增栏目后会继承上个添加的部分信息 5.纠正2个小细节 2011年7月8日 细节完善+BUG修复 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去;进入后台皮肤管理,点击[更新全部] 1.纠正蒙层窗口关闭时,有时会造成部分页面元素被隐藏而没显示出来BUG 2.图片生成设置 加入是否aspJpeg组件是否支持的判断 3.后台引导页对网钛信息加入对空间访问官网的速度检测,如速度过慢,不自动获取官网信息 4.纠正列表页右侧分类导航IE浏览器右侧边线不见的BUG 5.纠正页面几个HTML标签错误 6.广告管理,加入生成缓存文件是否成功的提示信息 7.纠正导航菜单长度超过会折到第二行的BUG。 8.修复几个小细节 2011年6月16日 细节完善+BUG修复 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。 1.纠正IE6下评论和留言页面的分页下拉框掩盖住蒙层窗口bug 2.加强注册信息保存时的过滤 3.后台 文章评论和留言新增显示游客IP信息 4.纠正前台会员个别用户名出现登录上去了,却提示还未登录的BUG 5.改进广告管理 6.修复几个小细节 2011年6月3日 细节完善+BUG修复 1.外部调用,文章属性由且关系,改成用或关系 2.文章列表页增加【标题】(只有标题)、【分类列表2】(即一行显示2个类别)2种模式 3.文章 缩略图/图片 新增支持外部图片链接(http://开头的) 4.纠正皮肤管理中,更改模板样式文件名失效的问题 5.评论和留言,默认留言者改为“游客” 6.纠正后台引导页中会员待审核文章统计错误BUG 7.纠正后台文章管理(会员投稿)审核状态查询条件失效BUG 8.完善小细节 2011年5月27日 1.改进首页静态页每日自动生成的逻辑。 2.纠正单页面图片路径不是采用相对路径问题 3.纠正几个小细节 2011年5月20日 1.纠正RSS订阅,栏目有时显示不全问题 2.纠正会员模块小细节bug 3.纠正后台外部调用页,栏目有时显示不全问题 4.优化几个小细节代码 2011年5月14日 ★更新方式:直接覆盖。 1.纠正标签列表页分页错误 2.纠正友情链接采用远程图片时,内页显示不出来问题 3.纠正内容页需要会员登录状态时,内容没显示出来问题 4.纠正伪静态时列表页和内容页,标签超连接错误问题 5.纠正几个小细节 2011年5月10日 OTCMS V2.2 升级包 ★更新方式:admin文件夹改成你后台目录名,然后直接覆盖,覆盖好后,并在网站上运行admin/update_5.8.asp文件(如网址输入:http://你的域名/后台目录名/update_5.8.asp),升级完成后删掉update_5.8.asp文件。 1.新增RSS功能 2.栏目标题改为:栏目名称+标题附加内容+网站名称 3.列表页新增标签信息 4.内容页新增标签信息和相关文章 5.新增功能外部调用代码 6.新增文章参数设置 7.多处小细节修复和完善 8.集成4月10日~4月26日的补丁 2011年4月26日 ★更新方式:admin文件夹改成你后台目录名,然后直接覆盖。 1.纠正后台设置项当为“-”或“.”造成前台读取文件错误问题 2.纠正后台皮肤管理权限ID匹配不正确问题 3.纠正伪静态时,导航菜单使用单页面是链接错误 4.纠正几个小细节 2011年4月20日 ★更新方式:admin文件夹改成你后台目录名,然后直接覆盖。 1.纠正个别滚动信息没显示出来的BUG 2.纠正伪静态内容页,评论数没递增Bug 3.后台索引页,授权信息获取方式修改 2011年4月12日 1.纠正V2.1前台会员投稿,栏目没关联上的问题 2.纠正单篇内容页页面错误打不开问题 3.纠正会员投稿点击提交一直卡在加载处理中状态 4.纠正V2.1前台会员投稿,栏目没关联上的问题 5.纠正V2.1后台采集栏目每关联上的问题 6.纠正几个其他小细节 2011年4月11日 1.纠正个别用户二级列表页显示不出内容的问题 2011年4月10日 ★更新方式:admin文件夹改成你后台目录名,然后直接覆盖。 1.纠正升级到V2.1后单篇内容页访问错误问题 2.纠正新增的114啦天气预报在伪静态列表页/内容页中找不到文件问题 3.纠正文章管理类别批量移动到更新到V2.1模式 2011年4月9日 OTCMS V2.1 升级包 ★更新方式:admin文件夹改成你后台目录名,然后直接覆盖,覆盖好后,并在网站上运行admin/update_4.1.asp文件(如网址输入:http://你的域名/后台目录名/update_4.1.asp),升级完成后删掉update_4.1.asp文件。 1.重点对文章部分优化程序和数据库 2.获取网址信息加入端口判断,防止不是用默认端口80,会造成页面访问错误问题 3.纠正留言和评论通过非正规渠道提交而绕过字数限制BUG,及加强恶意灌水的防范措施。 4.纠正后台上传图片,选择swf时会提示图片格式无效问题。 5.去除网站参数中最新消息范围选取,改为新增文章属性最新消息 6.文章属性新增“首页缩略图”,首页栏目显示的图片文章于缩略图无关,于此属性有关 7.留言和评论加入楼层字段 8.会员发表文章采用新的编辑器kindeditor,并加入分页设置功能 9.纠正文字水印当为英文时定位位置不准确问题 10.纠正编辑器从word、excel里黏贴进来的样式丢失问题 11.新增对ok3w/老Y迁移程序迁移过来的会员登录支持 12.皮肤管理新增[全部更新]按钮,一次性更新所有皮肤css样式文件 13.新增页头日期 年月日星期、年月日时分秒星期 2种模式选择 14.新增页头天气预报 114啦天气预报 今天、今天明天 2种模式选择 15.新增滚动信息显示条数控制 16.新增搜索结果、网站公告列表页、最新消息列表页的每页条数控制 17.新增首页最新留言、最新评论的标题名称 18.新增评论、留言回复称呼和回复颜色自定义 19.新增生成sitemaps功能 20.新增会员重复注册时间间隔设置,及注册IP加入黑名单 21.新增IP记录管理,管理注册间隔时间和黑名单的IP信息 22.其他细节调整和优化 23.整合2.2日~3.2日的所有补丁 2011年3月2日 1.自动过滤掉内容页中正文的clear样式,已防止部分采集的内容被隐藏 2.纠正26日补丁造成的后台获取关键词失效问题 3.纠正后台皮肤管理出现JS错误问题 4.后台采集入库新增过滤内容摘要中的分页符 5.去掉页头JS时间时分秒及时间自动刷新 6.去掉最新消息及列表页的内容摘要链接 7.加入文章仅限会员阅读,而不需限制积分。 8.纠正评论、会员的文章管理分页失效问题。 9.优化部分代码 ★更新方式:直接覆盖,admin文件夹改成你后台目录名,覆盖好后,进入后台的皮肤管理【刷新】下当前使用的皮肤css文件(该补丁有改动皮肤样式文件,故需重新生成下)。 2011年2月26日 1.纠正之前漏加入的国外空间运行出错问题 2.会员退出登录后返回到当前页面,而不是首页 3.会员投稿提交后如为即时响应会有等待10秒设置,防止个别网站速度有所延时,造成会员重复提交问题。 4.首页最新留言去掉经过变粗,首页最新评论经过改成变下划线 5.纠正非动态路径时,站内搜索结果页,第二页开始页面错误问题 6.改善后台授权人信息栏代码 ★更新方式:直接覆盖,admin文件夹改成你后台目录名。 2011年2月23日 紧急补丁 1.【紧急】纠正22日补丁造成的连续新增文章而变成修改上一篇新增文章的问题。 2.首页栏目h1标签改成h2标签 3.首页栏目标题加入超连接 ★更新方式:直接覆盖,admin文件夹改成你后台目录名,覆盖好后,进入后台的皮肤管理【刷新】下当前使用的皮肤css文件。 2011年2月22日 1.纠正15日补丁造成的首页全3栏第一栏会掉下来的问题。【需要在后台对当前皮肤修改保存下以更新皮肤样式】 2.纠正文章内容页有些超连接文字字号偏小问题. 3.扩大导航菜单个数的选择,新增3~8 4.后台新增文章后跳到新增文章页时会自动内置些之前添加的信息 5.后台文章管理里新增“来源”“作者”查询条件 6.后台皮肤管理,新增[更新css]按钮 7.纠正前台搜索结果、网站公告列表、留言板右侧精彩推荐、点击排行没记录问题 2011年2月15日 1.纠正伪静态时,底部栏目链接错误问题 2.去掉底部栏目“请您留言”菜单 3.纠正首页中间模块部分向右偏移2像素问题【需要在后台对当前皮肤修改保存下以更新皮肤样式】 4.纠正伪静态是,当前位置的首页链接错误问题 5.在首页打开蒙层窗口时,暂停滚动信息和滚动图片的滚动,以消除光标闪烁频繁问题 6.会员等级里“管理员”等级暂时没用到,暂时屏蔽掉 7.纠正后台新增会员无法修改密码的错误 2011年2月8日 1.纠正后台皮肤管理,专业模式,保存出错问题 2.去除皮肤模板中,重复定义样式 3.纠正后台文章新增/修改结束,2秒倒计时返回有时会失效问题。 4.纠正伪静态路径文章内容页附件下载错误问题 5.新增皮肤导入/导出 6.纠正后台默认页网站统计信息,一周内/一个月内范围选取错误问题。 7.纠正后台编辑器对复制于word、excel文档的内容进行过滤格式问题 8.纠正伪静态时前台需用户登录才可查看的文章图片路径错误,及附件没显示出来问题(感谢 ♂嫼脃暒涳♀ 发现该问题) 2011年2月2日 1.纠正前台和后台获取关键字乱码问题 2.纠正内容页[上一篇][下一篇]没把隐藏状态的文章排除的问题 3.纠正注册时,个别注册成功而没有提示成功及刷新的问题 4.后台默认页新增网站统计信息,及安全性提示。 5.后台栏目管理加入栏目所属不能选择自己的判断,及新增检测有没有被遗漏的栏目 2011年1月31日 发布OTCMS V2.0 正式版
概述    WAP上网所谓WAP(Wireless Application Protocol)即无线应用协议,是一项全球性的网络通信协议。WAP使移动Internet 有了一个通行的标准,其目标是将Internet的丰富信息及先进的业务引入到移动电话等无线终端之中。WAP定义可通用的平台,把目前Internet网上HTML语言的信息转换成用WML(Wireless Markup Language)描述的信息,显示在移动电话的显示屏上。WAP只要求移动电话和WAP代理服务器的支持,而不要求现有的移动通信网络协议做任何的改动,因而可以广泛的运用于GSM、CDMA、TDMA、3G等多种网络。 [编辑本段]应用和原理   用户可以借助无线手持设备,如掌上电脑,手机,呼机,双向广播,智能电话等,通过WAP获取信息。 WAP支持绝大多数无线网络,包括GSM, CDMA, CDPD, PDC, PHS, TDMA, FLEX, ReFLEX, iDen, TETEA, DECT, DataTAC, 和Mobitex。 所有操作系统都支持WAP,其中专门为手持设备设计的有PalmOS, EPOC, Windows CE, FLEXOS, OS/9及JavaOS。 一些手持设备,如掌上电脑,安装微型浏览器后,借助WAP接入Internet。 微型浏览器文件很小,可较好的解决手持设备内存小和无线网络带宽不宽的限制。 虽然WAP能支持HTHL和XML,但WML才是专门为小屏幕和无键盘手持设备 服务的语言。WAP也支持WMLScript。这种脚本语言类似与JavaScript,但对内存和CPU的要求更低,因为它基本上没有其他脚本语言所包含的无用功能。 [编辑本段]WAP协议   WAP(无线通讯协议)是在数字移动电话、互联网或其他个人数字助理机(PDA)、计算机应用乃至未来的信息家电之间进行通讯的全球性开放标准。这一标准的诞生是WAP论坛成员努力的结果,WAP论坛是在1997年6月,由诺基亚、爱立信、 摩托罗拉和无线星球(Unwi redPlanet)共同组成的。   通过WAP这种技术,就可以将Internet 的大量信息及各种各样的业务引入到移动电话、PALM等无线终端之中。无论你在何地、何时只要你需要信息,你就可以打开你的WAP手机,享受无穷无尽的网上信息或者网上资源。   WAP能够运行于各种无线网络之上,如GSM、GPRS、CDMA等。WML是无线注标语言(Wireless Makeup language)的英文缩写。支持WAP技术的手机能浏览由WML描述的Internet内容。   WML是以XML为基础的标记语言,用在规范窄频设备,如手机、呼叫器等如何显示内容和使用者接口的语言。因为窄频使得WML受到部分限制,如较小型的显示器、有限的使用者输入设备、窄频网络联机、有限的内存和资源等。   WML支持文字和图片显示,内容组织上,一个页面为一个Card,而一组Card则构成一个Deck。当使用者向服务器提出浏览要求后,WML会将整个Deck发送至客户端的浏览器,使用者就可以浏览Deck里面所有Card的内容,而不需要从网络上单独下载每个Card。   通过WAP这种技术,就可以将Internet的大量信息及各种各样的业务引入到移动电话、PALM等无线终端之中。无论在何时、何地只要需要信息,打开WAP手机,用户就可以享受无穷无尽的网上信息或者网上资源。如:综合新闻、天气预报、股市动态、商业报道、当前汇率等。电子商务、网上银行也将逐一实现。通过WAP手机用户还可以随时随地获得体育比赛结果、娱乐圈趣闻等,为生活增添情趣,也可以利用网上预定功能,把生活安排的有条不紊。   WAP协议包括以下几种:   1、WirelessApplicationEnvironment(WAE)   2、WirelessSessionLayer(WSL)   3、WirelessTransactionLayer(WTP)   4、WirelessTransportLayerSecurity(WTLS)   5、WirelessTransportLayer(WDP)   其中,WAE层含有微型浏览器、WML、WMLSCRIPT的解释器等等功能。WTLS 层为无线电子商务及无线加密传输数据时提供安全方面的基本功能。   WAP论坛一个很重要的指导思想是让WAP尽可能多的与现有的标准一致,以最大限度地保护制造商和应用开发者的投资。在很大程度上利用了现有的WWW编程模型,应用开发人员可以继续使用自己熟悉的编程模型、能够利用现有的工具(如Web 服务器、XML工具)等。另外,WAP 编程模型还针对无线环境的通信特点, 对原有的 WWW编程模型进行了优化和扩展。   在带宽考虑方面,WAP用“轻量级协议栈”优化现在的协议层对话, 将无线手机接入Internet的带宽需求降到最低,保证了现有无线网络能够符合WAP规范。 手机通过使用WAP协议栈可以为无线网络节省大量的无线带宽,例如, 完成一个股票指数的查询操作,如果通过使用HTTP1.0的台式机浏览器来完成要比通过一个WAP浏览器来完成所涉及的包通信量要大一倍以上。 WAP 协议使用的包数量不到标准的 HTTP /TCP/IP协议栈使用的一半。   目前,WAP在很多方面还不够成熟,但是已经足够打开一个新的通讯领域, 为无线网络提供了足够的技术标准基础,让互联网能够真正无所不在。   WAP目前主要使用1.2和2.0两个版本,后者是趋势,低端手机只能浏览1.2版本,目前主流的手机都已经支持2.0版本.有了2.0版本使用手机浏览的内容更生动,也可以像电脑站一样有背景音乐,有背景图片,使原本单调的手机网页变得色彩斑斓。 [编辑本段]技术特点   过去,无线Internet接入一直受到手机设备和无线网络的限制。WAP充分利用了诸如XML,UDP和IP等Internet 标准,它的许多规程建立在HTTP和TLS等Internet标准之上,但进行了优化,克服了原无线环境下低带宽、高延迟和连接稳定性差的弊病。   原来的Internet标准诸如HTML,HTTP,TLS和TCP用于移动网络是远远不能满足要求的,因为极大的文本数据信息需要传送。标准的HTML内容已不可能有效地显示在袖珍手机和寻呼机狭小的屏幕上。   WAP采用二进制传输以更大地压缩数据,同时它的优化功能适于更长的等待时间(long latency)和低带宽。WAP的会话系统可以处理间歇覆盖(intermittent coverage),同时可在无线传输的各种变化条件下进行操作。   WML和WML Script用于制作WAP内容,这样可最大限度地利用小屏幕显示。WAP的内容可从一个最新式的智能电话或其它通信器的两行文字的屏幕上显示出来,也可以转变为一个全图像屏幕显示。   轻巧的WAP规程栈式存储器的设计可使需要的带宽达到最小化,同时使能提供WAP内容的无线网络类型达到最多。它适用于多种网络,诸如全球移动通信系统GSM900,GSM1800和GSM1900;过渡性标准(IS)-136;欧洲制式DECT;时分多址接入;个人通信业务,高速寻呼(FLEX)和码分多址等。同时它也支持所有的网络技术和承载业务,包括短消息业务(SMS)、非结构式辅助业务数据(USSD)、电路交换蜂窝移动数据(DSD)、蜂窝移动数字分组数据(CDPD)和通用分组无线业务(GPRS)。由于WAP建立在可升级的分层结构基础上,每一个分层可独立于其它分层而发展。这就使得在不需要对其它分层改变的情况下就可以引进其它承载业务或使用新的传输规程。   WAP使得那些持有小型无线设备诸如可浏览Internet的移动电话和PDA等的用户也能实现移动上网以获取信息。WAP顾及到了那些设备所受的限制并考虑到了这些用户对于灵活性的要求。 手持式WAP设备的局限性 WAP设备与PC相比: 低分辨率的小显示屏 输入装置容量有限,重要的是没有提供定点装置 低功率CPU,内存较少及能量较不稳定 网络带宽较窄且连接较不稳定 WAP带来的灵活性 与HTML-C相比,WAP标准没有规定WAP设备应为何种形态。这对设备制造商极为有利,可使其能够生产出各种不同类型的设备以满足不同需要。在不久的将来,市场对WAP设备的要求会以浏览器的显示屏尺寸、输入装置及内存大小等不同为根据,从而促使WAP设备在新技术及解决方案上得以发展进步。   通过使用移动电话连上互联网不久将成为一种标准,而WAP就是实现这一标准的技术工具。如今,移动电话上网数量的增长速度要比PC上网数量的增长速度更快。这也就意味着不久以后,大多数新的移动电话都将配有WAP浏览器。 持有WAP设备的无线用户可得到通过互联网提供的相关服务,网络页面的编制采用HTML格式。 届时对许多甚而是绝大多数用户而言,WAP设备将成为其获取这些服务的常用工具。 [编辑本段]WAP能做什么   WAP能给生活带来极大的便利,使不方便使用电脑的你也可以通过WAP上网下载手机图片,手机软件,手机主题,与世界各地的网友进行无线互动,也可上BBS灌水与好友分享自己新拍的照片仍至可以通过WAP购买你需要的东西。
第一章 绪论 1.1. 选题背景 这几年,许多新名词涌入我们的视野:博客、圈子、播客、WAP等。这些都预示着我们进入了一个新的互联网阶段web 2.0,它是相对web 1.0的新的一类互联网应用的总称,是一次从核心内容到外部应用的革命[10]。这个阶段发展迅速,互联网应用趋于多样化,其中变化最大的是由web 1.0网站创造内容的时代变为由用户创造内容的web 2.0时代。 在web 2.0应用中,博客(Blog)是web 2.0核心应用中最典型、最流行的代表之一,也是web 2.0技术应用的最直观的表现,是web 2.0精神和理念的具体体现。 1.2. 问题的提出 Blog记载了日常发生的事情和自己的兴趣爱好,把自己的思想和知识和他人分享、交流,同时又通过“六度空间”结识了更多志趣相投的朋友;而越来越多专业知识的 Blog 的出现,让我们看到了 Blog 更多所蕴涵的巨大的信息价值:不同的 Blog 选择不同的内容,收集和整理成为很多人关注的专业 Blog ——目前越来越多的人获取信息的来源是一些固定的 Blog 。随着博客人数的增加, Blog 作为一种新的生活方式、新的工作方式、新的学习方式已经被越来越多的人所接受,并且在改变传统的网络和社会结构:网络信息不再是虚假不可验证的,交流和沟通更有明确的选择和方向性,单一的思想和群体的智慧结合变的更加有效,个人出版变成人人都可以实现的梦想—— Blog 正在影响和改变着我们的生活。 1.3. 系统的开发目标 管理员通过前台页面进入后台管理模块后,可对注册的博客用户进行维护,包括对注册用户的添加、查找、修改和删除。 管理员进入登录后,可对帐户进行管理,包括添加管理员帐户、修改管理员帐户、删除管理员帐户和对帐户进行权限设置。 博客用户通过前台登录后,可对自己的博客空间进行管理,包括发布自己的网络日志、收藏个人图片、和相关人员进行交流和沟通以及删除访问者发表的评论等。 因此,在具体设计实现该博客网站时,主要考虑了主流博客网站的几个主要功能:(1)博客的注册、登录验证功能(2) 网络用户通过关键字搜索博文功能(3) 最热门博客页面推荐浏览(4) 文章详细内容及相关评论显示(5) 博客页面访问量统计(6) 博客个人文章管理维护功能(7) 博客个人文章分类管理维护功能(8) 博客个人友情链接维护功能(9) 博客个人基本信息管理维护功能(10) 博客图片上传及个人相册管理(11) 网络用户写留言,博主查看留言。 第二章 系统设计 2.1. 系统分析 在整个blog进行开发之前,要确定出整个项目的整体架构,包括系统的选型、运行环境的确定及系统结构设计。下面对这进行详细介绍。 在进行软件系统开发的最初环节,一般都需要进行系统的选型,即根据系统功能的实际需求,选择合适的开发工具及软件架构。 blog对系统的可靠性、稳定性有比较高的要求。本系统设计时,比较主流的B/S设计有基于JSP、ASP、PHP、CGI及J2EE等模式。相比较而言PHP的功能相对简单,不适合做大程序;而CGI效率相对较低,所以也不考虑。由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的吞吐量,提高并发处理客户请求数量,系统采用了IBM服务器作为主机。在数据库处理方面,不需要在数据层借助存储过程及数据库服务器端函数封装过多的业务逻辑,因此数据库系统采用相对精巧的MySQL[6]。 该在线博客系统服务器端如果需要布置到其他主机上,则该主机必备条件如下: 1. 服务器端操作系统:独立于操作系统的跨平台系统,客户端MicroSoft Windows 2000及以上; 2. 数据库:MySQL 5.0.27版本; 3. Web服务器:Tomcat 5.5及以上版本,配合MVC设计模式及 Hibernate开发架构; 4. 客户端运行环境:能运行IE 5以上或Netscape 5以上浏览器的操作系统,配合使用Ajax技术; 5. 客户端运行工具:目前的系统采用浏览器作为客户端,为了支持Ajax开发框架,应该选择使用IE 5以上版本浏览器。 本网站以xp为Web平台,JSP+Ajax+Servlet+JavaBean+Hibernate为网站实现技术,建立基于MySQL数据库系统的核心动态网页,实现博客网站前台及博客个人维护管理等功能模块。 1、 系统处理的准确性和及时性:系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足信息处理的需求。 2、 系统的开放性和系统的可扩充性:系统在开发过程中,应该充分考虑以后的可扩充性。例如数据表中用户选择字段方式的改变,用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。 3、 系统的易用性和易维护性:要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。 4、 系统的数据要求:1、数据录入和处理的准确性和实时性。2、数据的一致性与完整性。3、数据的共享与独立性。 2.2. 系统的可行性分析 2.2.1. 技术可行性 技术上的可行性分析要考虑将来要采用的硬件和软件技术能否满足用户(这里是服务器,网速)提出的要求(如计算机的容量、速度等)。此外,还要考虑开发人员的水平,学习了两年的jsp开发,对于这个系统的编写,我想完整的之需要两个月就可以写出程序,再花上几天的调试,计划两个月左右就可以完成投入使用了。 我们掌握了数据库及其应用技术、数据库原理、计算机网络技术等课程,对数据库的设计、应用、维护及局域网的组成有了深刻的认识与一定的动手实践能力,考取了信息处理、程序设计、数据库技术等国家IT认证。从一定程度上具备了开发一个小型系统的能力。再有就! 2.2.2. 经济可行性 主要从对项目的经济上进行分析评价,一方面是支出的费用,包括设备购置费、管理和维护费用、人员工资和培训费等,另一个是取得的收益。这是个小型的系统,从投入的人力,财力与物力来讲是非常小的,发布出去之需要注册域名就可以了,从节省人力方面,可以让管理人员从繁与复杂的工作中解脱出来,做更多的工作。 2.2.3. 管理可行性 有IP地址、用户名与密码等,可以下载一个FTP上传工具(cure)上传更新后的内容.可以在http://www.skycn.com/soft/683.html下载到. 下载以后,通过"站点管理"-->"新建站点".输入IP,用户名,密码.然后连接即可. 当然也可用FTP工具.直接在IE浏览器地址栏输入ftp://www.域名/然后输入用户名和密码.同样可以上传.随时更新文件! 第三章 开发环境的说明与安装 3.1. 开发语言的选择 3.1.1. JAVA简介 Java是Sun公司推出的新的一代面向对象程序设计语言,特别适合于Internet应用程序开发。Java的产生与流行是当今Internet发展的客观要求,Java是一门各方面性能都很好的编程语言,它的基本特点是简单、面向对象、分布式、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的,特别适合在Internet环境上开发的应用系统。 3.1.2. Web应用程序开发环境—JSP技术 JSP的全称是Java Server Pages,它是SUN推出的一种动态网页技术标准。它在传统的静态页面文件(*.html,*.htm)中加入JAVA程序片段和JSP标记,就构成了JSP页面。JSP具有以下的优点: 1、将业务层与表示层分离:使用JSP技术,网络开发人员可充分使用HTML来设计页面显示部分(如字体颜色等),并使用JSP指令或者JAVA程序片段来生成网页上的动态内容; 2、能够跨平台:JSP支持绝大部分平台,包括现在非常流行的LINUX系统,应用非常广泛的Apache服务器也提供了支持JSP的服务; 3、组件的开发和使用很方便:如ASP的组件是由C++,VB等语言开发的,并需要注册才能使用;而JSP的组件是用Java开发的,可以直接使用; 4、一次编写,处处运行:作为JAVA开发平台的一部分,JSP具有JAVA的所有优点,包括Write once , Run everywhere. 3.2. 数据库的选择 3.2.1. Web应用程序开发环境—SQLserver数据库 SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的。SQL Server 2000是Microsoft公司于2000年推出的最新版本。 SQL Server 特点:   1.真正的客户机/服务器体系结构。   2.图形化用户界面,使系统管理和数据库管理更加直观、简单。   3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。   4.SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffice产品集成。   5.具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。   6.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。   7.SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。   SQL Server 2000与以前版本相比较,又具有以下新特性 :   1.支持XML(Extensive Markup Language,扩展标记语言)   2.强大的基于Web的分析   3.支持OLE DB和多种查询   4.支持分布式的分区视图   安装、运行SQL Server 2000的硬件需求   (1)计算机   Inter及其兼容计算机,Pentium 166Mz或者更高处理器或DEC Alpha和其兼容系统。   (2)内存(RAM)   企业版最少64MB内存,其他版本最少需要32MB内存,建议使用更多的内存。   (3)硬盘空间   完全安装(Full)需要180MB的空间,典型安装(Typical)需要170MB的空间,最小安装(Minimum)需要65MB的空间。 3.3. 开发工具的选择 MyEclipse,Deamweare,选择SQLserver作为后台的数据库,选择JAVA、JSP、JavaScript、Html作为应用程序开发工具,运用Tomcat服务器技术,整个系统完全基于B/S (Browser/Server)模式进行设计。 1、Tomcat应用服务器 目前支持JSP的应用服务器是较多的,Tomcat是其中较为流行的一个Web服务器,被JavaWorld杂志的编辑选为2001年度最具创新的Java产品,可见其在业界的地位。 Tomcat是一个免费的开源的Serlvet容器,在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。 Tomcat也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。Tomcat是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性,越来越受到人们的重视。 2、 B/S 开发模式 伴随着Internet的迅速发展,计算机技术正在由基于C/S(client/ Server)模式的应用系统转变为基于B/S模式的应用系统。 过去,网络软件的开发都采用C/S(client)模式,在这种模式下,主要的业务逻辑都集中于客户端程序,因此,必然导致以下问题: 系统安装、调试、维护和升级困难。由于客户端的硬件配置可能存在差异,软件环能各不相同,因此,在安装时,必须对每一个客户端分别进行配置,同样,在软件升级时也要对客户端分别处理。 B/S模式带来了巨大的好处: 开发成本及维护成本降低。由于B/S架构管理软件只安装在服务器端(Server)上,即应用程序在部署、升级、维护时,只需要在服务器端进行配置就可以了,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。 良好的安全性能,防火墙技术可以保证后台数据库的安全性。所有的配置工作都集中在服务器端且所有客户端请求都是通过DBMS来访问数据库,从而大大减少了数据直接暴露的风险。 第四章 系统设计 4.1开发框架技术介绍 对于框架技术,我们采用Struts+ajax的整合! Struts是应用比较广泛的一种表现层框架 1、 Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Servlet,JSP和custom tag library构建Web应用的一项非常有用的技术。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速。它使用服务层框架可以将JavaBeans从Jsp/Servlet中分离出来,而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的标签库,Struts是应用比较广泛的一种表现层框架。 2、 Ajax我们主要应用就是xmlhttprequest,回调函数实现局部刷新达道数据更新! 4.2需求分析 Blog网站主要是实现注册用户登录、管理相关信息、博文及相关评论、查看留言、友情链接、及图片的上传和图像的播放而为上网用户提供按博文主题搜索,查看注册用户的博文及提出相关评论,并为注册用户写留言,游览注册用户的相册、注册等功能的系统。下面就以两种不同的用户来分析博客网站的需求。 4.2.1注册博友 首先必须在博客首页中登录填写用户名和密码,这样才能执行一些相关操作,不然就是普通用户只能查看一些信息,而不能发表博文。可以在管理页面上添加博文的分类,可以上传图片和游览自己的相册,在上传过程中可以将一张图片定义为自己的签名,在个人管理页面中注册用户还可以修改自己的个人信息。博文管理,友情链接管理及博文分类管理,用例图2。 图2 博客管理页面的用例图 在博客主界面中发表博文时可以选择博文类型,这样可以更好管理自己的博文。并查看和删除网友对自己的博文的一些评论、查看和删除网友留下的一些留言,提供与其他网友交流的空间。更好交流,在信息时代人们通过个人空间沟通也用来但不能在自己的博客主页面中提交评论和留言。。这样在本系统中就可以为博友提供更多的个人色彩。在管理页面中添加和删除友情连接。这样博友可以在自己空间中快速定位自己的关心的网站。这样还可以让网友看到自己的一些信息。友情链接及网页访问量统计显示:在博客的个人页面中还提供了推荐给普通网络用户的相关友情链接,此外,对个人页面的访问量也在随时进行统计,并在个人页面中进行直观的显示。 博客主页面的用例图如图3所示: 图3 博客主页面的用例图 4.2.2 普通用户 在博客注册页面注册成为博客的注册用户,才可以拥有自己独立的空间,进入某一博客页面查看相关文章信息时,可以随时对自己所感兴趣的文章发表评论,同时也可以查看到其他人针对该博文的评论。普通用户在阅读博文时可以在最后留下自己的一些评论。他也可以留下更多的信息。这样他可以写留言。这样他留下的信息就更快地被博友所看到。普通用户进入博友的用例图如图4所示: 图4上网博友在博客主页面的用例图 普通网友可以搜索自己关心的一些数据。并且在搜索结果中提供在结果范围内再次搜索。这样就可以将范围缩小。首页向注册用户提供登陆模块,注册用户在博客网站首页跟上网网友一样可以查看博客和博文推荐。上网网友可以注册成为博客用户,拥有自己独立的空间。这一模块的用例图如图5所示: 图5 博客首页的用例图 4.3 功能模块介绍 4.3.1 博客注册登录管理模块 博客注册登录管理模块用于建立博客网站固定的客户群体,通过记录对应的博客档案,实现对博客信息的后台维护及管理,同时也便于通过博客档案库将网站最新动态及相关企业的信息方便地传达给每一位潜在的客户。 该功能模块实现了以下几个子功能。 (1)新博客在线注册。 (2)博客登录管理。 (3)跳转到博客主页。 只有进行登录并通过身份验证的用户,才可以在个人博客页面发表日志,并借助个人设置实现对个人博客相关信息的管理维护。对于没有经过身份验证的网络用户不允许在博客页面中发表日志,更不允许对博客页面信息进行管理维护。 该模块实现新博客的注册及登录验证功能。其中,注册新博客时会对用户输入的注册信息进行有效性验证,包括基本数据格式的有效性以及逻辑有效性,例如,用户名被占用时将及时给出提示。注册成功的博客登录时,会随时根据博客输入的登录信息进行提示,如用户名错误或者密码错误。 4.3.2 博客及文章检索查询模块 博客及文章检索查询模块为网络用户提供便捷的搜索,以及日志阅读浏览等功能,同时对日志的评论信息、博客推荐也能够及时反馈给网络用户。 该功能模块实现了以下几个子功能。 (1)热门博客页面推荐。 (2)最新博客日志推荐。 (3)日志信息关键字搜索。 该模块能够在网页中随时提供在线的最新日志信息。该信息需要定期更新,网络用户可以随时获得最新日志以及最热门的博客推荐。在客户选择了某个博客或者某个感兴趣的日志后,可以方便地跳转到对应博客页面进行日志的阅读,并和博客进行交流互动。 为了使网络用户尽快定位到所需的博客资料及日志信息,本模块提供了搜索功能,用户可以对所关注的日志信息按照标题进行关键字搜索,以避免用户浏览多个页面来寻找所需的日志信息。 4.3.3博客页面显示模块 当网络用户进入某个人博客主页后,在该页面中将提供博客日志列表的显示,同时为了方便用户浏览,在该模块中提供根据分类名进行日志列表的显示,也提供日志评论的浏览,此外还允许用户在博客页面中发表评论及留言。 该功能模块实现了如下几个子功能。 (1)用户可以分页查看对应的日志内容及评论信息。 (2)用户可以针对日志内容发表评论。 (3)用户可以针对博客进行留言。 (4)用户可以分类查看日志内容。 在该模块中还提供了博客页面统计信息,日志、评论及留言信息分页显示等方便用户的显示效果。 4.3.4 博客个人维护管理模块 博客个人维护管理模块用于实现用户对博客个人主页及相关信息的动态管理。 该功能模块实现了如下几个子功能: (1)日志及日志分类管理。 (2)评论及留言管理。 (3)个人基本信息维护管理。 借助该模块,用户可以随时对个人博客主页中的内容进行增加或修改,包括日志分类信息的更新、评论及留言管理等功能,也允许用户对博客的个人信息进行维护及其管理。 4.4 系统分析 本系统采用严格的J2 EE 应用结构,主要有如下几个分层。 1. 表现层:由JSP 页面组成。 2. MVC 层:使用Struts框架。 3. 业务逻辑层:主要由Spring loC 容器管理的业务逻辑组件组成。 4. DAO 层:由7 个DAO 组件组成,实现类必须继承Spring提供的HibernateDaoSupport。 5. Hibernate 持久层:由7 个PO 组成,并在Hibernate Session 管理下,完成数据库访问。 6. 数据库服务层:使用MySQL 数据库存储持久化数据。 系统的具体分层如图5 所示。 图6 系统结构图 在图6 黑色大方框内的MVC 控制层、Service 层及DAO 组件层的组件,都由Spring IOC 容器负责生成,并管理组件的实例(实例必须是单身模式的,本系统中的bean基本上是单身的)。 4.3.1系统架构说明 本系统不仅严格按MVC 模式设计,还按J2 EE 分层设计,将中间层严格分成业务逻辑层、DAO 层及数据持久层等。MVC 层的控制器绝对禁止持久层访问,甚至不参与业务逻辑的实现。表现层采用传统JSP 技术。 本系统采用的是典型的J2EE 三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。Jsp广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。中间层采用的是流行的Spring+Hibernate ,为了将控制层与业务逻辑层分离,又细分为以下几种。 Web 层,就是MVC 模式里面的C,负责逻辑层和表现层的交互。调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC采用Struts框架。 Service 层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO 层为基础,通过对DAO 组件的正面模式包装,完成系统所要求的业务逻辑。 DAO 层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作。 PO ,持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate 作为ORM 框架。Spring 的作用贯穿了整个中间层,将Web 层、Service 层、DAO 层及PO 无缝整合,其数据服务层用来存放数据。 通过使用Hibernate 持久层,可以避免使用传统的JDBC 操作数据库,对JDBC近一步包装,从而更好地使用面向对象的方式来操作数据库。保证了整个软件开发过程以面向对象的方式进行,即面向对象分析、设计及编程,透过Hibernte 对PO对象持久化操作,不管插入还是查询都是通过PO。 4.3.2实现DAO 层 DAO 还有助于提升系统的可移植性。独立的DAO 层使得系统能在不同的数据库之间轻易切换,底层的数据库实现对于业务逻辑组件是透明的。数据库移植时仅仅影响DAO 层,不同数据库的切换不会影响业务逻辑组件,因此提高了系统的可复用性。 对于不同的持久层技术, Spring 的DAO 提供一个DAO 模板,将通用的操作放在模板里完成,而对于特定的操作,则通过回调接口完成。Spring 为Hibernate 提供的DAO 支持类是: HibernateDaoSupport。 4.3.3 DAO组件的定义 DAO 组件提供了各持久化对象的基本的CRUD 操作。而在DAO 接口里则对DAO组件包含的各种CRUD 方法提供了声明,但有一些IDE 工具也可以生成基本的CRUD方法。使用DAO 接口的原因是:避免业务逻辑组件与特定的DAO组件藕合。由于DAO 组件中的方法不是开始就设计出来的,其中的很多方法可能会随着业务逻辑的需求而增加,但以下几个方法是通用 的。 • get: 根据主键加载持久化实例。 • saveor update: 保存或更新持久化实例。 • remove: 删除持久化实例。 上面涉及了7个PO,这样我们必须设计7个对应的PODao 7个Dao必须继承BaseDao 这个BaseDao 有对接口的一些基本的CURD操作。7个Dao 如下。LinksDao ,BlogDao、FeedBackDao、ArticleDao、MessageDao、SortDao、PictureDao。这7个Dao 分别封装对自己的持久化对象的一些操作。 4.3.4 部署DAO 层 HibernateDaoSupport类只需要一个SessionFactory 属性,即可完成数据库访问。SessionFactroy创建Session,而数据库的CRUD操作都是有Session 完成,并将查询结果保存在一级缓存中,每次用户提交一次会话,可能需要Session完成一些数据库的操作而实际的数据库访问由模板类HibernateTemplate完成,该模板类提供了大量便捷的方法,简化了数据库的访问。 第五章 数据库设计 5.1定义(数据词典) 1、数据库表名的定义使用:重点字_table;重点字可以是多个英文单词的组合,从组合的第二单词起首字母大写,字段命名是能表达字段内容的英文单词的组合,组合方式同表名重点字相同。 2、NN 表示not null 不填表可为空。 3、数据类型不使用固定数据库的类型,标识大众类型,如字符串、字符、数字等。这样在更改数据库时需求的数据是可移植的 4、输写数据表在数据库中的物理名称,可用自己熟悉的语言再定义表名称,方便沟通。 5、长度定义又数据类型决定:如字符串可选8000以下,数字可在50位之间,字符只允许一位。 6、输入方式表示数据的来源:生成表由程序或数据库的索引自动生成,而不需人工录入;输入表示通过文本框等输入的数据;选择表单选框、复选框、下拉列表等通过选择输入的数据;自定获取是为外码的输入设定的,它由程序自动获取。 5.2主要表结构如下 1. 表[blogs]日志数据表 字段名 类型 说明 blogid Int(10) 日志的ID title text 日志标题 pubtime Int(11) 日志发表时间 authorid Int(8) 日志作者的UID replies Int(8) 日志的评论数 tbs Int(8) 日志的trackback数 views Int(8) 日志的查看次数 category Int(3) 日志所属的分类的ID content mediumtext 日志正文内容 property Int(1) 日志的属性 0 公开日志 1 锁定日志 2 隐藏日志 3 一般草稿 2.表[user]博友登陆信息表 字段名 类型 说明 userid Int(10) 博友ID nicheng Text 博友在博客里的称呼 username text 登陆时的用户名 password text 登陆密码 3.表[register]用户数据表 字段名 类型 说明 userid Int(8) 登陆时需要用到的用户名 username text 用户昵称 userpwd Int(8) 登陆密码 regtime Int(11) 注册时间 usergroup Int(2) 所属的用户组ID email text 用户email qq text Qq号 msn text 用户msn gender text 用户性别 第六章 主要功能的实现 6.1 登录控制: if(this.session().getAttribute("rand")!=null){//检验随机数是否为空 if(this.checkCode.equals(this.session().getAttribute("rand").toString())){//比较随机数 uservo=userbo.queryUserByINfo(uservo);//检验用户信息并将信息返回 if(uservo!=null){//看用户是否存在 this.setUserpurview(uservo.getPurviewId());//设置用户权限 this.session().setAttribute("user", uservo);//将用户信息放在session中 return SUCCESS;//返回用户主界面页面 }else{ return ERROR;返回到失败页面} }else{return ERROR; }}else{ return ERROR; } 6.2 Ajax 读取txt格式数据 function ajax_function(var1,var2){ var xmlHttp = null; //创建xmlhttprequest try { // Firefox, Opera 8.0+, Safari 对不同浏览器常见不同对象 xmlHttp=new XMLHttpRequest(); } catch (e) { try { // Internet Explorer xmlHttp=new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { xmlHttp=new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { alert('Your browser does not support AJAX!'); return false; } } } xmlHttp.onreadystatechange=function() { if(xmlHttp.readyState == 4 && xmlHttp.status == 200) { var someDiv = document.getElementById('someDiv'); someDiv.innerHTML=xmlHttp.responseText; } } xmlHttp.open('GET','www/index.jsp?param1='+var1+'¶m2='+var2,true); xmlHttp.send(null); } 6.3 系统架构与数据库的连接 由于我们开发时是利用MVC的设计模式,所以在此我们的数据库连接是封存在M中的,即只要我们和M层连接上,就已经连接上数据库了。 Hibernate使用数据库和配置信息来为应用程序提供持久化服务(以及持久的对象)。我们只需在hibernate.cfg.xml中配置以下语句即可: sa jdbc:microsoft:sqlserver://localhost:1035;DatabaseName=webexamine org.hibernate.dialect.SQLServerDialect sqlserver2000 aaaaaaaa com.microsoft.jdbc.sqlserver.SQLServerDriver org.hibernate.dialect.HSQLDialect true 其实我们在这里配置了一个数据连接,以保证系统的正常运行,我们需要使用proxool连接池,我们经测试,分别用proxool、tomcat JNDI、Hibernate自带的连接池进行配置之后分别执行以上的10000条数据插入和读取,结果显示proxool的性能要优于tomcat JNDI,而Hibernate自带的就更不用提了,差很远。依次为:39265毫秒/10000条、26013毫秒/10000条、50029毫秒/10000条。 6.4数据的备份与还原 我们根据Mysql数据库提供的backup(备份)命令及restore(恢复)命令,进行数据库的备份与还原,在连接数据库后,我们在需要备份和还原的地方加入以下语句: backup database to disk='备份文件名' restore database from disk='备份文件名' 然后发送给数据库的管理对象进行数据还原与备份。 在知道了数据库备份与还原的接口后,用JAVA进行具体的连接,这里采用JAVA直连的方 法,部分代码如下: try{ String user="sa";//连接sqlserver2000数据库登陆名 String password="aaaaaaaa";//连接sqlserver2000数据库密码 String sDBDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";//连接数据库的驱动字符串 String connStr="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=webexamine";//注册连接字符串 Connection con=null; Class.forName( sDBDriver);//注册数据库驱动 con = Driver Manager.getConnection(connStr ,user,password);//获取数据库连接 String sql="backup database xncsims to disk='d:\\xncback.dat'";//备份数据库,还原数据库和着类似,只是将这句变为还原的语句 st=con.createStatement();//创建发送对象 rs=st.executeQuery(sql);//这里就是把你的SQL语句发到数据库执行 }catch(SQLException e){ System.out.println(e.toString());} catch(Exception e){ System.out.println(e.toString());} 6.4部分效果预览图 主页 留言界面

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗不甘坠落的流星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值