新闻发布的一点小总结

  经过一段时间的学习,完成了新闻发布的基础功能,进行一点小总结,方便日后回顾。下面是我的一点小总结,不足之处请勿见笑。。。

我们想要完成一个新闻发布,首先要使其能够成功发布,并且让它能够实现添加、删除、修改、查询、上传、下载等功能。
我们还调用AJAX功能查看输出为XML、JSON格式的新闻内容。为完成以上功能,我们首先要进行jdk、tomcat、eclipse的安装和配置。
1、各软件的安装和配置
1.1、jdk的安装和配置:
1.1.1、下载jdk:下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
1.1.2、安装jdk:安装jdk.exe
1.1.3、配置环境变量:右击"我的电脑"-->"高级"-->"环境变量"
1)在系统变量里新建"JAVA_HOME"变量,变量值为:C:\Program Files\Java\jdk (根据自己的安装路径填写)
2)新建"CLASSPATH"变量,变量值为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (变量值中"."是不可或缺的)
3)在PATH变量(已存在不用新建)添加变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin (注意变量值之间用";"隔开)
1.1.4、测试:"开始"-->"运行"-->输入"javac"-->"Enter",如果能正常打印用法说明配置成功!
1.1.5补充环境变量的解析:
1)JAVA_HOME:jdk的安装路径
2)CLASSPATH:java加载类路径,只有类在classpath中java命令才能识别,在路径前加了个"."表示当前路径。
3)PATH:系统在任何路径下都可以识别java,javac命令。
1.2、tomcat的安装和配置:{其各个文件夹的功能}:
1.2.1、Tomcat的获取和安装:Apache的官方网站下载(http://tomcat.apache.org/),有两种不同的下载,一种是普通安装版本,一种是解压安装版本。使用起来是一样的,只是在普通安装版本中有一些界面可提供对Tomcat的快捷设置,而且普通安装会将Tomcat作为系统服务进行注册。
Tomcat的启动是一个bat文件(Windows下),在bin目录下。双击即可。如果启动不成功,一般的情况是控制台出来一下立即消失,说明Tomcat没有找到Java的运行时环境。简单理解,就是Tomcat找不到jdk,没办法运行。
1.2.2、Tomcat的运行环境搭建:在JAVA_HOME变量(在jdk配置时已经创建),指向jdk安装目录。启动Tomcat,在浏览器地址栏输入http://localhost:8080/如果看到关于Tomcat的介绍神马,说明配置成功。
1.2.3、Tomcat的目录结构介绍:bin目录存放一些启动运行Tomcat的可执行程序和相关内容。
      conf存放关于Tomcat服务器的全局配置。
      lib目录存放Tomcat运行或者站点运行所需的jar包,所有在此Tomcat上的站点共享这些jar包。
      webapps目录是默认的站点根目录,可以更改。
      work目录用于在服务器运行时过度资源,简单来说,就是存储jsp、servlet翻译、编译后的结果。
common文件夹是存放公共jar包的。
logs文件夹主要是存放日志文件的。

1.1.4、其他更详细的介绍:(http://www.cnblogs.com/Johness/archive/2012/07/20/2600937.html)
1.3、eclipse的安装和配置:
1.3.1、下载Eclipse:( http://www.eclipse.org/downloads/)
1.3.2、Eclipse配置:
1)配置jdk:点击"window"-->"preferences"-->"java"-->"installed JRES"
2)配置tomcat:点击"window"-->"preferences"-->"Server"-->"Runtime Environment"-->"Add"
2、各功能的实现
2.1、连接数据库:
多项功能都需要连接数据库,我们创建一个用于连接数据库的工具(util),命名为"SQLServerConnectiont"。
1)加载JDBC驱动程序
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
2)创建数据库连接
Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=test1","sa","sd951208");
JDBC连接常用数据库和基本的CURD可参考(http://www.360doc.com/content/16/0816/17/35826655_583667086.shtml)。
2.2、JavaBeen:
创建"*.java",添加id、b_id、title、content、author、time、area、fileName、fileContent等属性。
鼠标右键,依次选择弹出菜单中的"源码"/"生成Getter和Setter"菜单项。
在弹出的"生成Getter和Setter"对话框中,单击"全部选中"按钮,并保留其它选项的默认值。
点击"确定"按钮,生成属性的getXxx()与setXxx()方法。
2.3、新闻的发布(添加):
发布新闻时,将新闻的各种属性填写好进行发布。在jsp页面将数据提交到Servlet处理,调用sql语句insert储存进数据库。其中日期属性使用了My97DatePicker插件,简介使用textarea标签和ckeditor插件。
2.3.1、My97DatePicker插件
下载My97DatePicker插件(http://download.csdn.net/detail/emoven/8249073)。
在页面中引入该组件js文件: <script type="text/JavaScript" src="/test/My97DatePicker/WdatePicker.js"></script>
在添加日期时,<input id="1" type="text" name="time" class="Wdate" onfocus="WdatePicker({dateFmt:‘yyyyMMdd HH:mm:ss‘,isShowClear:false,readOnly:true})">
其他更详细的调用到官网查看(http://www.my97.net/dp/demo/index.htm)。
2.3.2、ckeditor插件
下载ckeditor插件(http://ckeditor.com/download)。
在页面<head>中引入ckeditor核心文件ckeditor.js <script type="text/javascript" src="ckeditor/ckeditor.js"></script>
在使用编辑器时,textarea rows="10" cols="30" name="textarea1" class="ckeditor">简介内容</textarea>
2.4、删除:
在jsp显示页面通过超链接提交要删除的数据id到Servlet处理,调用sql语句delete删除相应的数据。在这里使用了事务的处理,避免删除书籍信息时没有删除书籍的附件。
简单事务的详细使用方法(http://blog.sina.com.cn/s/blog_4b5bc0110100h0wz.html)。
2.5、修改:
根据id,通过查询的Servlet调用sql语句select查询出新闻数据,在修改的jsp页面显示。然后将修改后的数据发送到修改的Servlet调用sql语句insert将数据储存到数据库里。
2.6、查询:
按照id、关键字、日期等要求查询新闻的数据,在jsp页面发送到Servlet处理调用sql语句select查询出新闻数据。
为了让查询数据显示时,将要求一同显示在页面上:在jsp显示页面String id = (String) request.getAttribute("id"); if (id == null) { id = ""; request.removeAttribute("id"); } 在Servlet处理,获取要求:String Id = request.getParameter("Id"); if (Id != null && !Id.equals("")) { sql1 += " and ID_=?"; } 然后if(Id != null && !Id.equals("")) { ps1.setString(i, Id); i++; System.out.println("Id"+Id); }
2.7、上传:
在jsp发布页面将附件上传,通过Servlet处理分析将附件数据和其他数据区分,然后通过调用sql语句insert储存进数据库。
1)上传附件需要使用commons-fileupload.jar和commons-io.jar两个包。
2)文件上传必须满足的条件: 页面表单的method必须是post,因为get传送的数据太小了 ; 页面表单的enctype必须是multipart/form-data类型的; 表单中提供上传输入域
3)具体代码可参考(http://blog.csdn.net/ajun_studio/article/details/6639306)。
2.8、下载:
首先通过超链接将要下载的附件的id发送到Servlet处理,调用sql语句select查询出附件名和附件内容,然后将附件通过ServletOutputStream和InputStream和byte b[]将附件下载。
具体代码可参考(http://blog.csdn.net/doymm2008/article/details/5630814)。
2.9、中文字符乱码:
方法一:tomcat的自带编码是ISO-8859-1的格式,是不兼容中文的编码的。resp.setContentType("text/html;charset=utf-8");//设置页面的字符编码,解决界面显示中文乱码的问题
方法二:req.setCharacterEncoding("utf-8");//必须写在第一位,因为采用这种方式去读取数据,否则数据会出错。
方法三:修改配置文件。也就是web.xml文件
更加详细方法参考(http://www.jb51.net/article/74710.htm或者http://blog.sina.com.cn/s/blog_675e9aeb0101357h.html)。
2.10、特殊字符转义:
String temp = news.getArea(); //获取需要转义的内容
if (temp != null) { //内容不能为空
temp = temp.replaceAll("<", "&lt;"); //将特殊符号"<"转义为"&lt;"
temp = temp.replaceAll(">", "&gt;"); //将特殊符号">"转义为"&gt;"
temp = temp.replaceAll("&", "&amp;"); //将特殊符号"&"转义为"&amp;"
temp = temp.replaceAll("“", "&quot;"); //将特殊符号"“"转义为"&quot;"
temp = temp.replaceAll(" ", "&nbsp;"); //将特殊符号" "转义为"&nbsp;"
news.setArea(temp);
}
其他方式可参考(http://blog.csdn.net/songlixing/article/details/6957902)。
2.11、让CKEditor支持jsp上传图片
思路是:1)准备一下JSP上传文件的JAR包:commons-fileupload.jar和commons-io.jar;2)编写一个JSP用于接收上传的文件(这里除上传图片功能外,需调用一个核心JS语句);3)编写一个JSP用于浏览文件(这里除上传图片功能外,需调用一个核心JS语句);4)修改CKEditor的config.js,将上传文件和浏览文件的JSP配置进去。
具体代码可以参考(http://www.cnblogs.com/hannover/archive/2011/07/29/2121536.html)。
2.12、分页显示
定义变量pageSize(每页显示多少条变量、用户指定)、pageNow(希望显示第几页、用户指定)、pageCount(总共有多少页、计算:if (rowCount % pageSize == 0) { pageCount = rowCount / pageSize; } else { pageCount = (rowCount / pageSize) + 1; })、rowCount(总共有多少条变量、通过查询)。
rowCount查询:select count(ID_) from news;
显示select top " + pageSize + " * from news where ID_ not in(select top " + (pageSize * (pageNow - 1)) + " ID_ from news order by id_ desc)order by id_ desc
设计首页、上一页、超链接跳转、下一页、末页、直接跳转XX页。
详细代码可参考(http://www.cnblogs.com/yony/archive/2012/06/15/2550607.html)。
2.13、复选框
对属性设置复选框,可进行多选、全选来操作,可同时操作多条数据。这里使用了js的功能。复选框的类型type="checkbox"。思路如下:
1)将前台jsp页面中的所有你要用到checkbox的name值设为相同。
2)在后台获取参数时,使用数组获取。
3)进行数组必要的格式转换,再进行sql操作。
代码可参考(思路:http://www.cnblogs.com/haore147/p/3617968.html | 复选框的设置:http://bbs.csdn.net/topics/350072249 | 参考实例:http://zhidao.baidu.com/link?url=Y2GFIBUHCIuift_2IQzSmtQhfejgYo6_wyh9pBe-A4z5CZk4jby9DSO08MoPbVOBnP1s4-Sy3WHe8uF9WBr8YvQqOs4xKpT0soagJqeN02e)
3、AJAX功能
3.1、输出XML:
当用户点击上面的"Get LIST info"这个按钮,就会执行 loadXMLDoc() 函数。 loadXMLDoc() 函数创建XMLHttpRequest 对象,添加当服务器响应就绪时执行的函数,并将请求发送到服务器。当服务器响应就绪时,会构建一个 HTML 表格,从 XML 文件中提取节点(元素),最后使用已经填充了 XML 数据的 HTML 表格来更新 copy 占位符。
Servlet中调用sql语句select查出数据,转换成XML格式输出。
AJAX XML实例(http://www.w3school.com.cn/ajax/ajax_xmlfile.asp)。
输出XML文件代码可参考(http://wentao365.iteye.com/blog/1102815)。
3.2、输出JSON:
当用户点击上面的"获取json"这个按钮,就会执行 loadXMLDoc() 函数。 loadXMLDoc() 函数创建XMLHttpRequest 对象,添加当服务器响应就绪时执行的函数,并将请求发送到服务器。当服务器响应就绪时,会构建一个 HTML 表格,从 json 文件中提取节点(元素),最后使用已经填充了 json 数据的 HTML 表格来更新 copy 占位符。
Servlet中调用sql语句select查出数据,转换成JSON格式输出。再转换成json格式时使用了jsonStringer类
AJAX取得Servlet获取输出json文件可参考(http://bbs.csdn.net/topics/390708035)8楼。
输出JSON文件代码可参考(http://www.tuicool.com/articles/6niEjy)。

时间: 2024-12-26 06:18:01

新闻发布的一点小总结的相关文章

牛腩新闻发布系统-小技巧

在敲写牛腩新闻发布系统的后台代码时发现并整理了一些小技巧.分享给大家. 技巧一:将常用的代码放到工具箱 常用的代码一直反复写效率难免有些低.如果在同一窗体复制粘贴还算简便.但是如果不同的窗体间呢?这难免显得有些拖塌.VS给我们提供了这样的一个小功能.我们可以把经常需要使用的代码拖到工具箱中.用的时候再拖出来.非常方便.附图如下: 备注:大家可以看到.我拖了四段代码到工具箱中并进行了重命名,用的时候就可以双击或直接拖出去. 技巧二:插入外部代码#region 大家在一个窗体中写的代码为了有更好的直

牛腩新闻发布系统笔记——怎么写CSS

根据这牛腩学习敲新闻发布系统已经有一段时间了,挺佩服牛腩的,讲那么多东西,我听着也不觉得枯燥,反而有种,一不留神就会错过很多东西的感觉,所以有些地方也是重复又重复的在看. 这篇博客就总结总结小编在学习牛腩新闻发布系统的时候一些笔记.可能知识还比较原生态,but who cares.现在先提炼出来,以后慢慢的体会和升华吧. 牛腩一部分可以说是和机房相似,也是让我从.net到c#的一个过渡.中间一部分就是讲div +css了.里面的知识说多也不多的,根据不同的需求,它又有各种变形和组合,这加起来就有

有趣的CSS盒子模型——【牛腩新闻发布系统】

前言 传统的表格排版是通过大小不一的表格和表格嵌套来定位排版网页内容,改用css排版后,通过由css定义的大小不一的盒子和盒子嵌套来编排网页.css盒子模型是div排版的核心. 说白了就是以前没用css盒子模型,html中的元素就像一堆散乱的苹果:用了之后,就变成整箱整箱的苹果摞到一起.这种方式排版的网页,代码简洁,更新方便,容易兼容多种浏览器.    css盒子模型元素和计算 通过定义一系列与盒子相关的属性(内容content.填充padding.边框border.边界margin)来控制各个

关于学习python的一点小建议

Python是最容易入门的编程语言,没有之一.如果初学者接触的第一门语言是C或者C++,对他们来说最难的不是语法,而是容易出现内存泄漏.指针等问题.有时候排查这些问题对初学者的打击很大,尤其是没掌握排查BUG技巧时. 如果初学者接触的第一门语言是Python,学习曲线则会平滑得多,掌握一些基本语法和Python内置的数据结构,已经可以上手写一些小工具或者小型应用.这对初学者来说,非常重要.因为学习的过程是一个突破舒适区的过程,会面临很多痛苦,如果学习过程得不到激励,很容易半途而废,类似我们开玩笑

牛腩新闻发布系统---外键约束下如何删除记录

一.为什么使用外键? 查了些资料,八个字"保持完整性.一致性",结合我之前做的重构机房收费系统,我的理解是"防止相关表中数据没有关联而变得孤立,最终导致数据冗余",得出这个结论是上次让贾丽敏帮忙点系统时候我最深刻的感受,因为我的数据库关系图中辣么多张表却没有丝毫关系-- 既然官方解释是"完整性和一致性",就先来说明一下: 对于完整性和一致性,不少人都混为一谈了. 完整性(integrity)更多是针对实际业务来说的,比如说一个职员ID,不能在一个

牛腩新闻发布系统概要

开始了B/S项目学习,第一个学习内容就是开发新闻发布系统,跟着牛腩老师的视频学习有几天了,在这个过程 中也积累了点知识,在这里把新闻发布系统的一个轮廓叙述一下了. 系统说明 1.系统的整体功能 就是能够实现后台人员添加新闻,在前台可以浏览新闻并发表评论 2.功能图 3.数据库设计图 4.建表 --建立数据库 create database newssystem --建立类别表 create table category ( id int identity(1,1) primary key, [n

牛腩新闻发布系统--重构SQL Helper

天外有天,人外有人.自我进提高班以来,一直都在考虑,先前重构机房的时候,看到别人在D层加了SQL Helper,就一定要学者加上玩玩,等做完了以后,进行下一个阶段牛腩的时候,又看到了人家建的SQL Helper,不觉感慨,跟人家比,人家就是我的老师! 闲话就不多说了,进行正式的话题:如何写好SQL Helper?从宏观上讲,SQL Helper是完全体现了面向对象的抽象和封装的思想的.它对重复代码抽取出来,进行抽象,抽象就是为了封装,提高了代码的复用. 那么就该讨论怎么写的问题.如果我先上来给大

【牛腩新闻发布系统】----你的验证码正确么

前言 这是一个神奇的网站--牛腩新闻发布系统,虽然做的不咋地,但毕竟是自己动手敲出来,还是有一点点的满足感.同时这也是小编的第一个雠小鸭,长相不算漂亮,发育还是挺健全的. 终有一天我的丑小鸭会变成白天鹅. 一步一步的进化,一步一步的蜕变-- 你的验证码正确么 哎呀--为什么我的牛腩新闻发布系统   请输入验证码的图片一直为这个样子呀--不显示,就是不显示图片,图片加载出错呀.想想估计是图片路径不正确. 尝试一:牛老师说的图片加载路径 <img src="handler/WaterMark.

初识ASP.net-牛腩新闻发布系统

       在做牛腩新闻发布的系统的时候,总有一种感觉就是:我仍然在敲机房收费系统,唯一不同的一点,就是敲机房收费的时候,用户界面是是自己手动画界面,而,在牛腩新闻发布系统中,用户界面,却是需要自己利用代码编写,然后通过样式和标签控制web(网页)上文字和控件的各种布局,web窗体上的各个控件,又是通过盒子模型,有条理的出现在web窗体上的 CSS样式:盒子模型:如下图,盒子模型,中由外向里依次是外边距,边框,内边距,内容 通过Margin:设置4个外边框的外边距 通过padding:设置4个