[java原始碼] Java Web 文章管理系統(Jsp+Ajax+JDBC+MySql實現)
本示例是使用JavaWeb技術實現一個簡單的文章管理系統(新聞管理系統)其中主要功能如下:
- 使用者和管理員登入
- 使用者釋出新文章、文章詳情檢視、文章修改、文章刪除與恢復
- 使用者檢視他人對自己授權的文章及其文章資訊
- 使用者將自己的文章對他人進行授權
- 管理員對普通使用者新發布的文章進行稽核和刪除
- 管理員檢視普通使用者釋出的所有文章及其詳情
- 管理員釋出新文章
使用的主要技術有:
JavaEE、JDBC、AJAX、JSP、JavaBean
本專案開發環境為:
- Intellij IDEA 2016.3
- Tomcat 8
- JDK 1.8
- MySQL 5.5
專案工程下載地址:文章管理系統
下載完工程檔案,按照下面的資料庫結構截圖建立好資料庫的表,然後在 NewsRealeseDao.Java中配置好相關的資料庫URL、使用者名稱和密碼應該就可以直接執行起來了。
簡單介面展示
登入介面
使用者主要瀏覽介面
釋出文章介面
管理員介面
為了能夠讓下載的工程檔案直接執行這裡再放上資料庫的結構圖:
簡單程式碼介紹
為了節省篇幅這裡主要介紹JSP中負責和Servlet或後臺DAO有關的程式碼。
登入介面:
主要的就是form標籤裡的action屬性,表示將表單裡的內容提交給後臺的checkLogin_user這個Servlet進行處理,其中input標籤裡的name屬性標記其中的值,可以在Servlet中使用request.getparameter()方法得到標籤中填入的值。
(還有一點需要注意的是action裡的方法需要先在web.xml檔案中進行註冊,這樣tomcat伺服器才能正確的找到對應的類進行後續的處理,實際上所有的Servlet類都需要在web.xml中進行註冊,所以後面就不再贅述這個問題了)
<form method="post" action="checkLogin_user" >
<div class="panel">
<div class="panel-head"><strong>使用者登入</strong></div>
<div class="panel-body" style="padding:30px;">
<div class="form-group">
<div class="field field-icon-right">
<input type="text" class="input" name="user" placeholder="Username"/>
<span class="icon icon-user"></span>
</div>
</div>
<div class="form-group">
<div class="field field-icon-right">
<input type="password" class="input" name="pass" placeholder="Password"/>
<span class="icon icon-key"></span>
</div>
</div>
</div>
<div class="panel-foot text-center">
<button class="button button-block bg-main text-big">登入</button>
</div>
</div>
</form>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
處理登入的Servlet:
處理JSP傳送過來的資料,呼叫後臺程式進行處理,並返回結果。
package servlet;
import dao.NewsRealeseDao;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class checkLogin_user extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
//這裡的"user"和"pass"必須要和JSP裡的對應的標籤的name屬性相同
String user=request.getParameter("user");
String pass=request.getParameter("pass");
NewsRealeseDao newsRealeseDao=new NewsRealeseDao();
try {
boolean checked=newsRealeseDao.ischecked(user,pass,"user");
//呼叫後臺的Dao方法利用user表進行身份驗證
if(checked)
{
HttpSession session=request.getSession();
session.setAttribute("username",user);//設定使用者的姓名
response.sendRedirect("content_user.jsp");
}
else
{
response.sendRedirect("login_user.jsp");
}
}
catch (Exception ex)
{
Logger.getLogger(checkLogin.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description"+"public String getServletInfo() ";
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
資料庫訪問類newsRealeseDao:
訪問資料庫並提供相關的方法。
import com.lut.beans.NewsRealese;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
public class NewsRealeseDao {
public static String driver = "com.mysql.jdbc.Driver";//定義驅動
public static String url = "jdbc:mysql://localhost:3306/myNews?useUnicode=true&characterEncoding=utf-8";//定義URL
public static String databseUser = "root";//定義使用者名稱
public static String password = "root";//定義密碼
private ArrayList getNews(Statement stat, String sql)//處理具體的新聞查詢請求,返回所有結果
{
ArrayList newsRealese = new ArrayList();
try {
ResultSet rs = stat.executeQuery(sql);
while (rs.next()) { //例項化VO
NewsRealese news = new NewsRealese();
news.setNewsId(rs.getString("newsid"));
news.setContent(rs.getString("content"));
news.setHead(rs.getString("head"));
news.setIssueuser(rs.getString("issueuser"));
news.setPublish_time(rs.getString("publish_time"));
news.setNewstype(rs.getString("newstype"));
newsRealese.add(news);
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
return newsRealese;
}
}
public ArrayList UserQueryAllNews(String username, String table) throws Exception {//使用者檢視自己所有的文章
Connection conn = null;
ArrayList newsRealese = new ArrayList();
try {
//獲取連線
Class.forName(driver);
conn = DriverManager.getConnection(url, databseUser, password);
//執行SQL語句
String sql = "select * from " + table + " where issueuser='" + username + "' order by publish_time desc";
Statement stat = conn.createStatement();
newsRealese = getNews(stat, sql);
if (newsRealese.size() == 0) {
System.out.println("查詢不到任何資訊============");
return null;
}
stat.close();
} catch (Exception e1) {
e1.printStackTrace();
} finally {
try {//關閉連線
if (conn != null) {
conn.close();
}
} catch (Exception ex) {
}
return newsRealese;
}
}
public ArrayList UserQueryOthersNews(String username) throws Exception {//檢視自己可見的其他人的所有的文章
Connection conn = null;
ArrayList rt = new ArrayList();
try {
//獲取連線
Class.forName(driver);
conn = DriverManager.getConnection(url, databseUser, password);
//執行SQL語句
String sql = "select * from news where newsId IN (select newsId from authority where username=?) order by publish_time desc";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, username);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
NewsRealese news = new NewsRealese();
news.setNewsId(rs.getString("newsid"));
news.setContent(rs.getString("content"));
news.setHead(rs.getString("head"));
news.setIssueuser(rs.getString("issueuser"));
news.setPublish_time(rs.getString("publish_time"));
news.setNewstype(rs.getString("newstype"));
rt.add(news);
}
if (rt.size() == 0) {
System.out.println("查詢不到任何資訊============Dao.UserQueryOthersNews");
return null;
}
conn.close();
} catch (Exception e1) {
e1.printStackTrace();
} finally {
try {//關閉連線
if (conn != null) {
conn.close();
}
} catch (Exception ex) {
}
return rt;
}
}
public ArrayList AdministorQueryAllNews(String username) throws Exception {//管理員檢視所有的文章
Connection conn = null;
ArrayList newsRealese = new ArrayList();
try {
//獲取連線
Class.forName(driver);
conn = DriverManager.getConnection(url, databseUser, password);
//執行SQL語句
String sql = "select * from news order by publish_time desc";//獲取
Statement stat = conn.createStatement();
newsRealese = getNews(stat, sql);
if (newsRealese.size() == 0) {
System.out.println("查詢不到任何資訊============");
return null;
}
stat.close();
} catch (Exception e1) {
e1.printStackTrace();
} finally {
try {//關閉連線
if (conn != null) {
conn.close();
}
} catch (Exception ex) {
}
return newsRealese;
}
}
//查詢一個訊息
public ArrayList AdministorQueryCheckPending() throws Exception {//查詢所有的待稽核的文章
Connection conn = null;
ArrayList newsRealese = new ArrayList();
try {
//獲取連線
Class.forName(driver);
conn = DriverManager.getConnection(url, databseUser, password);//不安全
//執行SQL語句
Statement stat = conn.createStatement();
String sql = "select * from check_pending order by publish_time desc";//獲取newsid,使用?代替字串,以免會發生錯誤
Statement st = conn.createStatement();
newsRealese = getNews(st, sql);
stat.close();
} catch (Exception e1) {
e1.printStackTrace();
} finally {
try {//關閉連線
if (conn != null) {
conn.close();
conn = null;
}
} catch (Exception ex) {
}
return newsRealese;
}
}
//使用者刪除資料
public String deleteOneNews(String newsid, String table) throws Exception {
Connection conn = null;
ArrayList newsRealese = new ArrayList();
try {
//獲取連線
Class.forName(driver);
conn = DriverManager.getConnection(url, databseUser, password);//不安全
//執行SQL語句
String sql_move = "insert into dustbin select * from news where newsId='" + newsid + "'";
String sql_delete = "DELETE FROM " + table + " WHERE newsId='" + newsid + "'";//獲取newsid,使用?代替字串,以免會發生錯誤
Statement ps = conn.createStatement();
int rs_move = ps.executeUpdate(sql_move);
if (rs_move != 0) {
int rs = ps.executeUpdate(sql_delete);
if (rs == 0)
System.out.println("刪除失敗==================NewsrealeaseDao");
} else {
System.out.println("插入到dustbin出錯=============NewsrealeaseDao");
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
try {//關閉連線
if (conn != null) {
conn.close();
}
} catch (Exception ex) {
}
return newsRealese.toString();
}
}
public String AdmindeleteCheck_pendingNews(String newsid) throws Exception {
Connection conn = null;
int rs = 0;
try {
//獲取連線
Class.forName(driver);
conn = DriverManager.getConnection(url, databseUser, password);//不安全
//執行SQL語句
String sql_delete = "DELETE FROM check_pending WHERE newsId='" + newsid + "'";//獲取newsid,使用?代替字串,以免會發生錯誤
Statement ps = conn.createStatement();
rs = ps.executeUpdate(sql_delete);
if (rs == 0) {
System.out.println("刪除失敗==================NewsrealeaseDao");
return null;
}
else
return "成功刪除"+rs;
} catch (Exception e1) {
e1.printStackTrace();
} finally {
try {//關閉連線
if (conn != null) {
conn.close();
}
} catch (Exception ex) {
}
}
return null;
}
public int AuthorizeOneNews(ArrayList<String> userlist, String newsid) {
int count = 0;
Connection conn = null;
try {
//獲取連線
Class.forName(driver);
conn = DriverManager.getConnection(url, databseUser, password);//不安全
//執行SQL語句
Statement stat = conn.createStatement();
for (int i = 0; i < userlist.size(); i++) {
String sql = "insert into authority VALUES(?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, newsid);
ps.setString(2, userlist.get(i));
System.out.println(ps.toString());
count += ps.executeUpdate();
}
System.out.println("成功新增" + count + "行");
stat.close();
conn.close();
} catch (Exception e1) {
e1.printStackTrace();
} finally {
try {//關閉連線
if (conn != null) {
conn.close();
}
} catch (Exception ex) {
}
return count;
}
}
//插入資料
public int insertOneNews(HashMap<String, String> addnews_list, String table) throws Exception {//插入一個新的新聞
Connection conn = null;
try {
//獲取連線
Class.forName(driver);
conn = DriverManager.getConnection(url, databseUser, password);//不安全
//執行SQL語句
Statement stat = conn.createStatement();
String sql = "insert into " + table + " VALUES(?,?,?,?,?,?)";//獲
相關推薦
[java原始碼] Java Web 文章管理系統(Jsp+Ajax+JDBC+MySql實現)
本示例是使用JavaWeb技術實現一個簡單的文章管理系統(新聞管理系統)其中主要功能如下: 使用者和管理員登入使用者釋出新文章、文章詳情檢視、文章修改、文章刪除與恢復使用者檢視他人對自己授權的文章及其文章資訊使用者將自己的文章對他人進行授權管理員對普通使用者新發
java中利用IO流實現簡單的圖書管理系統(利用陣列和IO實現)
這個案例,主要對陣列及IO流進行總結! 利用IO流實現簡單的圖書管理系統,在控制檯上列印! 功能:1,檢視所有書籍 2,新增書籍 3,刪除書籍 4,修改書籍 5,退出 package com.baojian.bookStore; import java.io.Buf
java學生管理系統(IO流和檔案實現)
利用IO流和檔案的儲存和讀取來實現學生管理系統,核心在於使用集合ArrayList<E>和IO流讀取和寫入,需要掌握以下知識點: (1)ArrayList<E>介面實現可變陣列的大小,E代表陣列型別,E為什麼,定義的物件即為什麼型別,常用的功能是增刪
java+SQL做學生資訊管理系統(增刪改查)學生新作
java+SQL做學生資訊管理系統(增刪改查) 過程中需要用到的所有工具資料庫以及資料庫管理器等等 密碼:q80t 大學學習java後做的第一個小專案忍不住分享一下,也是我自己的面向物件程式設計的實踐作業啦,有點水,不是很優。廢話不多數,下面進入正題 介面的編
JAVA高階特性——迷你圖書管理系統(DOM4J操作儲存集合中的物件)
要求:使用XML儲存圖書資訊,使用DOM4J操作XML,進行圖書的增刪改查。 使用技術:XML/DOM4j/集合/物件 部分實現效果如果下: 實現思路 首先需要建立一個圖書類(Book類),儲存圖書的屬性(屬性和XML檔案一致,因
基於JAVA的圖書管理系統(jsp+mysql+tomcat)
這裡分享一個java web 專案,是一個基於JAVA 的圖書管理系統 本系統使用JSP+MySQL+Tomcat開發完成,由於開發時間過短,功能不甚完善,前臺頁面也不怎麼美觀,但是麻雀雖小,五臟俱全
Java入門教程之圖書管理系統(由簡入繁)(八)
作者:AlexTan E-mail: [email protected] 更新日誌: 由於最近在忙專案,所以推遲到現在才更新部落格...這次更新的內容主要是把程式碼拆分成了兩部分,一部分是客戶端,只是介面,即MCV中的V,和網路程式設計的一些東西,自己定義了一個
Java之學生資訊管理系統(File類、集合類)
使用Java編寫一個能增刪改查以及儲存和載入的學生資訊管理系統,使用集合類來儲存學生的資訊,使用File類將資訊儲存到檔案中,方便下一次呼叫。 直接上程式碼: 學生類: package Student; public c
Java入門教程之圖書管理系統(由簡入繁)(三)
作者:AlexTan E-mail: [email protected] 上一篇部落格我們講到了用ArrayList來實現圖書管理系統,用ArrayList彌補了二中所提到的那兩個缺點。但是一個漏洞填完,又來了新的一個漏洞,所謂精益求精嘛。接下來我們就在原始碼的
基於SSM框架的文章管理系統(增加留言回覆功能)
一個簡單的文章管理系統(增加留言回覆功能)簡單使用百度富文字實現了文章管理的功能,增加了留言回覆功能,其實這個小專案只是為了測試怎樣實現留言回覆功能而提取出來的,並不是很完善,主要實現了對文章的增刪改查功能,專案後臺頁面使用了layui官網提供的後臺模板。留言回覆功能詳情請參
畢業論文管理系統(類圖,er圖)
分享 body http inf er圖 論文 管理系 類圖 clas 畢業論文管理系統(類圖,er圖)
利用C語言簡單的實現庫存管理系統(本地檔案生成形式儲存)
問題描述: 庫存管理系統是廠家、商城、商場等的管理商品資訊不可缺少的部分,利用這個系統,可以更好地管理商品的資訊。 本系統的功能: 新增、修改、刪除庫存商品資訊,商品資訊包括:編號、名稱、類別、數量、產地等; 進貨或售出商品後,相應的庫存商品數量應該有所改
學生管理系統(工具類,配置環境)
jdbc環境配置。 driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/user username=root password=123456 日期格式工具方法。 package com.wh.utils;
員工請假管理系統(MFC+ACCESS資料庫+ODBC資料來源)
主要介面:(未新增面板) 登陸介面: 主介面: 1.題目要求 用MFC和ACCESS資料庫設計一個請假管理系統可以進行對員工請假的管理和對公司假期及國定假期的設定。 2.功能需求 2.1.系統管理 更換登入使用者 退出
超簡單JSP人員資訊管理系統(適合新手練手用)
自己以前閒著沒事寫的JSP小專案,適合剛學完JSP拿來練手的朋友。 github地址: https://github.com/mudfish/userManager 專案說明: 軟體需求: 開發工具:eclipse 資料庫:mysql 應用伺服器:t
課程設計————學生資訊管理系統(包含歷代思路和程式碼)
課程設計————學生管理系統(包含歷代思路和程式碼) 一.前言 學生資訊管理系統是我第一個獨立完成的比較長的程式碼,也算是花費了一些心血,這個系統是我一點點把它從幾百行的程式碼逐漸優化到上千行,功能從簡單到複雜。在這裡我把我的思路分享給大家,希望能給大家
JSP + Servlet + JDBC + Mysql 實現增刪改查 課程管理系統
1.專案目錄結構 2.專案環境 Eclipse IDE MYSQL jdk tomcat jar包 3.資料庫相關配置 先建立一個course的資料庫名,然後在建立一個course的表 要注意將id欄位 自動遞增 4.原始碼  
Java——Web開發之MVC設計模式的學生資訊管理系統(二)
為什麼這個標題為“(二)”,其實是對於上一個特別簡單學生資訊管理系統裡功能的完善。 所謂的“(一)”在這:學生資訊管理系統(一) 系統實現的功能: 實現新增學生 顯示查詢到的學生 刪除學生 更新學生資訊 模糊查詢符合相關資訊的學生
基於springMVC、Java web、Mysql的B/S人口資訊管理系統(二)
經過不斷努力,環境基本搭建好了,由於接近1年多時間沒有碰Eclipse好多都忘記了,進度可能會有點慢。以及第一次接觸SpringMVC好多東西都不清楚,不過應該問題不大。鑑於網路的問題,現在還在下載MySQL,大致講一下環境已經已經做了的工作 。 JDK1.
基於Java Web的網上圖書商城管理系統——(三)
三、詳細設計 1.註冊 regist.jsp頁面------>UserServlet----->UserDao &