經過一段時間的學習,完成了新聞發佈的基礎功能,進行一點小總結,方便日後回顧。下麵是我的一點小總結,不足之處請勿見笑。。。 ...
經過一段時間的學習,完成了新聞發佈的基礎功能,進行一點小總結,方便日後回顧。下麵是我的一點小總結,不足之處請勿見笑。。。
我們想要完成一個新聞發佈,首先要使其能夠成功發佈,並且讓它能夠實現添加、刪除、修改、查詢、上傳、下載等功能。
我們還調用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("<", "<"); //將特殊符號"<"轉義為"<"
temp = temp.replaceAll(">", ">"); //將特殊符號">"轉義為">"
temp = temp.replaceAll("&", "&"); //將特殊符號"&"轉義為"&"
temp = temp.replaceAll("“", """); //將特殊符號"“"轉義為"""
temp = temp.replaceAll(" ", " "); //將特殊符號" "轉義為" "
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)。