

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、封面作者: PanHongliang仅供个人学习攀枝花学院学生课程设计(论文)题目:JSP IP 查询工具所在院(系):计算机专 业:计算机科学与技术班级:09 计算机科学与技术 1 班指导教师:罗学刚职称:讲师20122012 年 5 5 月 3131 日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书题目JSP IP 查询工具1、课程设计的目的通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开 发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能 力。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等) 利用 jsp 技术,设计开发 IP 查询
2、的工具提供 IP 查询页面,完成 IP 地址的查询,并显示 IP 位置3、主要参考文献1朱福喜Java 语言程序设计(第二版)科学出版社2 陈国君等.Java 程序设计基础(第二版)清华大学出版社3 Deitel.Java 大学基础教程(第六版).电子工业出版社4 MaryCampione.Java 语言导学(第四版).机械工业出版社Y.Daniel Liang.Java 语言程序设计基础篇(第六版).机械工业出版社Kathy Sierra.Head First Java(第二版).东南大学出版社4、课程设 计工作进度计划序号时间(天)内容安排备注11分析设计准备周一22编程调试阶段周二至周三
3、31编写课程设计报告周四41考核周五总计5 (天)指导教师(签 字)日期年 月曰教研室意见:年 月 日学生(签字):接受任务时间:年 月曰注任 务 书 由 指 导 教 师 填 写0课程设计(论文)指导教师成绩评定表题目名称评分工程分 值 得分评价内涵工 作表 现20 %01学习态度6遵守各坝纪律,丄作刻苦努力,具有良好的科学 工作态度。02科学实践、调研7通过实验、实验、查阅文献、深入生产实践等渠 道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。能力水平33%04综合运用知识的能力10能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论
4、分析, 得岀有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并 较好地论述课题的实施方案;有收集、加工各种 信息及获取新知识的能力。06设计(实验)能力, 方案的设计能力5能止确设计实验方案,独立进行装置安装、调 试、操作等实验工作,数据正确、可靠;研究思 路清晰、完整。07计算及计算机应用能 力5具有较强的数据运算与处理能力;能运用计算机 进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的 分析能力(综合分析 能力、技术经济分析 能力)10具有较强的数据收集、分析、处理、综合的能 力。成 果质 量45%09插图(或图纸)质 量、篇幅、设计(论 文)规范化程
5、度5符合本专业相关规范或规定要求;规范化符合本 文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分, 结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名:年 月曰目录摘要 71 前言 81.1IP 数据库的必要 81.2 IP 数据库的制作 81.3 JSP 查询 IP82 工程分析 92.1 需求分析 92.2 开发工具和环境 92.3 查询流程 93 相关技术分析 103.1 数据库分析 103.2 IP 查询核心算法 103.3 jsp 页面的设计 104 设计与实现 114.1 jsp
6、 页面的设计 114.1.1 用户自定义 IP 查询归属 11 4.1.2 查询本机 IP 归属 114.2 ip 整型的转化 124.3 数据库的连接 134.4 ip 整型查找地址 13结论 16附录 1 :参考文献 17附录 2:java 程序代码 18摘要随着现在互联网技术的飞速发展,冲浪成了大众生活中重要的一部分,并 出现了各式各样的网络文化。从以前的上网找资料,看新闻,到现在越来越丰 富的网络生活,如微博,博客,空间,论坛等。这些都有来自各个地方具有相 同兴趣爱好的人们聚集起来,分享着大家兴趣的东西,并且相互留言,讨论 等。留言板就扮演着一个重要的角色,可以记录来客的留言,日期,还
7、可以有 地址,同样论坛中也是如此。我们可以关注别人的地址,考虑交个朋友什么 的。这就是现在要讨论的 JSP IP 查询技术。通过获取访问者的 IP,查询到对 方的所在地。关键字 JSP , IP 查询,地址, IP/ 、八1 前言1.1IP 数据库的必要现在网络上很多地方都用到了 IP 查询的功能,有专门的 IP 查询的网站, 也有些留言板上有记录地址的功能,这种技术非常人性化,应用也越来越广 泛。这里就来讨论jsp IP 查询的技术。也是现在主要用到的 IP 查询技术。这 个过程中要用到 IP 数据库,里面记录了很多 ip 网段和对应的实际地址。另外 有种方法是其他网站提供了一个 IP 查询
8、的接口,自己不需要 ip 数据库,这个 就要依赖别人的数据库和服务器。也许很多人会认为不靠谱,所以还是要拥有 自己的 IP 数据库。1.2 IP 数据库的制作IP 数据库的查找还不是一个容易的事情,为了找到一个记录比较完整和准 确的 IP数据库花了这次课程的很多时间。刚才网上找到了qq 纯真 IP 数据库,这个是课程设计前几天更新的,包含 43 万条记录,包含了所有网址,详细重点 在中国。部分记录了运营商,楼号,网吧等详细地址,是目前最好最完整的 IP 数据库。但是这个数据库导出来是文本型的,要转换成jsp 所用的 mysql 数据库文件,这个比较复杂的过程。简述一下,先用了一个EditPlu
9、s 软件把多大于一个空格的连续空格都替换成一个空格,然后把文本文件导到 access 中,以空 格为分割。但是为了实现查询,还要将 ip 通过一个算法转化成无符号长整型, 这里用的是双精浮点型。为了把 ip 通过一个算法转化成双精浮点型,个人用 delphi 编写了一个转换软件,依次将每条记录中的两个 ip 转换成两个整数放 到每条记录后面。花费半个小时完成了整个数据库的转换制作。1.3 JSP 查询 IP现在就是用 jsp 技术查询数据库了。用同样的算法把访问者的 IP 转换成整 型后,拿到数据库中去查找。由于 IP 数据库中的记录是一个网段存在的,所以 获取到的 IP 地址不能单纯的直接拿
10、到数据库中去查找,必须通过一个算法处理 后才能查找,这个算法后面会详细介绍。IP 归属查询,输入 IP 地址,即可得到该 IP 的归属IP 地址,不用自行输入用户的 IP 地址,直接就能2.2 开发工具和环境Win dows xp操作系统。Java jdk 7.1。Eclipes Java EEapache-tomcat-6.0.33Mysql。Navicat for MySQL。2.3 查询流程2 工程分析2.1 需求分析用记需要一个简单快捷的地。如果用户要查询自己的显示用户的归属。3 相关技术分析3.1 数据库分析图 1数据库一角:图 2ID:为主键,也是每条记录的序号。ip1 :网段的起
11、始 ip。Ip2:网段的结束 ip。Addr:网段的所属地址。Ad1 : ip1 的整型表示。Ad2: ip2 的整型表示.3.2 IP 查询核心算法查询一个 ip 地址, IP 地址 4 位,中间有. 隔开,用正则表达式把 ip 按. 分割字符串,分别存在字符串数组中。如 list 存放了分割好的字符串。Ad=list0*256A3+list1*256A2+list2*256+list3。假设 list已经转化成 整型Ad 就是 ip 到整型的转换。通过这个 ip 到整型的转换后,就可以在在数据库中 轻松的查找地址。直接查找 ad=ad1 and ad=ad2 的记录就能准确的找出要查询的地
12、址。只要 保证了 ad 前面这个条件,就确定 ip 一定在这条记录的 IP 网段中!3.3 jsp 页面的设计为了方便的查询,要设计出友好的查询界面,用户只需要输入欲查询的 ip 地址即可一键查询。如果用户要查询自己的 ip 地址,也可以直接点击查询本机 ip 即可。查询本机 ip 时,获取远程访问者的 ip,进行查找。用户要控制输入合法的 ip,否则出错无法查询。数据库涵盖了所有的 ip, 已经精确到最后一位,所以用户需要输入完成的 ip 地址才能准确查找到 ip 所属 地址。使用 HTML 标记语言写编辑框,按钮和表格。4 设计与实现4.1 jsp 页面的设计 输入 IP: 本机 IP:
13、/结果显示图 34.1.1 用户自定义 IP 查询归属用户输入一个合法的 IP 地址,然后点击查询,即可显示相应的结果,如下图:图 4String ipstr = request.getParameter(ipstr。) /ipstr 为获取的 ip 字符串IP ip = new IP()。long ID = ip.Dot2LongIP(ipstr) 。 /IP 的整型转化Mdao id = new Mdao()。String addr = id.Serachadd(ID)。 /IP 整型转化后在数据库中查询,返回归 属地System.out.println(addr)。session.set
14、Attribute(addr,addr)。session.setAttribute(ipstr,ipstr)。response.sendRedirect(massage.jsp。)此过程调用了两个个方法,非常方便直接显示了程序的流程4.1.2 查询本机 IP 归属用户点击查询本机 IP,即可显示相应的结果,如下图:图 5String ipstr =request.getRemoteAddr(。) /获取本机 ipIP ip = new IP()。long ID = ip.Dot2LongIP(ipstr) 。 /IP 的整型转化Mdao id = new Mdao()。String addr
15、= id.Serachadd(ID)。 /IP 整型转化后在数据库中查询,返回 归属地System.out.println(addr)。session.setAttribute(addr,addr)。session.setAttribute(ipstr,ipstr)。response.sendRedirect(massage.jsp。)此过程调用了两个个方法,非常方便直接显示了程序的流程。4.2 ip 整型的转化前面已经分析过 ip 整型转化的必要性和核心算法的简述,这里用一个类负责IP整型的转化工作 .package cn.pzhu.mc_196。public class IP public
16、 static void main(String args) public long Dot2LongIP(String dotIP) String str = dotIP。System.out.println(str)。long ip。String subIP = str.split(.) 。 /分割 ip 到字符串数组中ip=256*256*256*Long.parseLong(subIP0)+256*256*Long.parseLong(subIP1)+256*Long.parseLong(subIP2)+Long.parseLong(subIP3)。return ip。Dot2Long
17、IP 方法获取 IP 字符串,返回整型转化后的无符号长整型。4.3 数据库的连接这里连接到 mysql 数据库:public class Mdao public final static String DB_URL =jdbc:mysql:/localhost:3306/mc_196?useUnicode=true&characterEncoding=UTF-8&user=root&password=* 。static try Class.forName(com.mysql.jdbc.Driver)。 catch (ClassNotFoundException e) e
18、.printStackTrace()。这里指定了数据库的名称和连接密码,密码已省略。然后指定使用 mysql 的数据库的驱动,并注意抓取连接失败的异常。4.4 ip 整型查找地址返回的整型 IP 用于在数据库中查询public String Serachadd(long id) String bRs = 。String sql = select * from 123ok where ad1=?。ResultSet rs = null。Connection conn = null。/数据库查询代码PreparedStateme nt pst = nullSystem.out.println(id
19、)。try conn = getConnection()。pst = conn .prepareStateme nt(sql)pst.setLong(1, id)。将整型 IP 放在 sql 语句中第一个?处pst.setLong(2, id)。将整型 IP 放在 sql 语句中第二个?处 / 即“ select * from 123ok where ad1=idrs = pst.executeQuery(。) /执行代码if (rs.next() bRs = rs.getString(Addr)。 catch (SQLException e) e.printStackTrace()。 fin
20、ally try pst.close()。conn.close()。 catch (SQLException e) System.out.pri ntln(错误)。return bRs。 /查询后返回的结果此处将对处理好的整型 IP 转换成字符串,嵌入到 sql 语句中去查询 IP 归属 地。查询 sql 语句为:select * from 123ok where ad1=id123ok 为 IP 数据库,id 为整型 IP。只要这个 id 在两个 ad1 和 ad2 之间,就能确定这个 IP 在所查询的网段内。 其中注意抓取执行 sql 语句的异常。结论这次课程设计遇到了诸多问题,期间主要通
21、过搜索引擎,如百度进行求 解,也有和其它同学一起讨论,共同解决。开始是数据库的设计,这个根据算 法的需要,能够很好的设计出数据库,但是数据库里面的大量 ip 数据只能从网 上寻找,发现了很多数据库有bug,数据少,不准,不全。最后找到的纯真数据库比较完美,但是要转换成能用的 mysql 数据库比较困难和复杂,其中经常 遇到 ip的整型表示问题,至少要用无符号长整型,但是数据库是有符号长整 型,所以最终换成了双精浮点型才完整放入数据库中。然后 jsp 技术中主要运用了表单,这个比较简便。 Java 代码中设计了一个 类,专门做 ip 的整型转化,另一个类负责数据库的连接和 ip 地址的查询。通过
22、这次课程设计,学习了 java 编程的基本思想,面向对象的编程方式。 熟悉了集成开发工具 eclipes 的使用,环境的配置等。同时也掌握了数据库的转 化方法,收益甚多。此工程未作错误处理,不具健状性,非法 IP 输入会出错。由于时间紧迫, 没有完善此工程附录 1:参考文献1 朱福喜.Java 语言程序设计(第二版)科学出版社2 陈国君等.Java 程序设计基础(第二版)清华大学出版社3 Deitel.Java 大学基础教程(第六版).电子工业出版社4 MaryCampione.Java 语言导学(第四版).机械工业出版社Y.Daniel Liang.Java 语言程序设计基础篇(第六版).机
23、械工业出版 社Kathy Sierra.Head First JavO(第二版).东南大学出版社附录 2: java 程序代码package cn.pzhu.mc_196。import java.sql.* 。public class Mdao publicfinalstaticStringDB_URL=jdbc:mysql:/localhost:3306/mc_196?useUnicode=true&characterEncoding=UTF-8&user=root&password=607382。static try Class.forName(com.mysql.
24、jdbc.Driver)。 catch (ClassNotFoundException e) e.printStackTrace()。public String Serachadd(long id) String bRs = 。String sql = select * from 123ok where ad1=? 。 ResultSet rs = null。Connection conn = null。PreparedStateme nt pst = nullSystem.out.println(id)。try conn = getConnection()。pst = conn .prepa
25、reStateme nt(sql)pst.setLong(1, id)。pst.setLong(2, id)rs = pst.executeQuery() if (rs.next() bRs = rs.getString(Addr) catch (SQLException e) e.printStackTrace() finally try pst.close()conn.close() catch (SQLException e) System.out.pri ntln(错误)return bRs。private Connection getConnection() throws SQLEx
26、ception Connection conn =null。conn = DriverManager.getConnection(DB_URL)。 return conn。package cn.pzhu.mc_196。public class IP public static void main(String args) public long Dot2LongIP(String dotIP) String str = dotIP。 System.out.println(str)。 long ip。String subIP = str.split(.) 。/ 分割 ip 到字符串数组中ip=2
27、56*256*256*Long.parseLong(subIP0)+256*256*Long.parseLong(subIP1)+256*Long.parseLong(subIP2)+Long.parseLong(subIP3)。return ip。用户自定义 IP 查询 JSP 页面: request.setCharacterEncoding(UTF-8。) Stringipstr = request.getParameter(ipstr。) IP ip = new IP() 。long ID = ip.Dot2LongIP(ipstr) 。Mdao id = new Mdao()。Stri
28、ng addr = id.Serachadd(ID)。System.out.println(addr)。 session.setAttribute(addr,addr)。session.setAttribute(ipstr,ipstr)。response.sendRedirect(massage.jsp。)本机 IP 查询 JSP 页面:request.setCharacterEncoding(UTF-8。)String ipstr =request.getRemoteAddr(。) /获取本机 ipIP ip = new IP() 。long ID = ip.Dot2LongIP(ipstr
29、) 。Mdao id = new Mdao()。String addr = id.Serachadd(ID)。System.out.println(addr)。 session.setAttribute(addr,addr)。session.setAttribute(ipstr,ipstr)。resp on se.se ndRedirect(massage.jsp)数据库下载:纯真 IP 数据库 2012-5-25.mdbJSP 工程文件下载此工程未作错误处理,不具健状性,非法IP 输入会出错。由于时间紧迫,没有完善此工程版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整 理。版权为潘宏亮个人所有This article includes some parts, including text, pictures, and desig n.Copyright is Pan Hon glia ngs pers onal own ership.用户可将本文的内容或服务用于个人学习、研究或欣赏,以及 其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理学题库考编及答案解析
- 雪狐狸护理考编题库及答案解析
- 企业安全履职测试题B卷及答案解析
- 2025年AI音箱行业研究报告及未来行业发展趋势预测
- 2025年粉刷石膏行业研究报告及未来行业发展趋势预测
- 2025年赤霉素行业研究报告及未来行业发展趋势预测
- 绝缘制品制造工应急处置考核试卷及答案
- 家具配件厂能耗降低实施细则
- 橡胶厂固定资产管理实施办法
- 2025河南文旅厅所属单位招聘高层次人才12人考试参考题库及答案解析
- 第四章 土壤污染调查与风险评价
- GB/T 9877-2008液压传动旋转轴唇形密封圈设计规范
- GB/T 21471-2008锤上钢质自由锻件机械加工余量与公差轴类
- GB/T 12670-2008聚丙烯(PP)树脂
- 共享服务中心(HRSSC)课件
- 非贸项下对外付汇的政策解读和实操疑难解答课件
- 工程结构检测鉴定与加固第1章工程结构检测鉴定与加固概论课件
- 高中心理健康课程《人际关系-寝室篇》课件
- 数字色彩课件
- 一年级上册科学课件-第一单元 走近科学 复习课件-鄂教版(共23张PPT)
- 煤矿现场急救技术
评论
0/150
提交评论