1. 程式人生 > >如何用初級的JavaWeb知識寫一個較簡單的網站(一)

如何用初級的JavaWeb知識寫一個較簡單的網站(一)

本人JavaWeb初學者,這是學校一門課程的期末作業,之前已經寫了不少了,但是由於一點誤操作,導致專案有點崩盤,加上心態不是很好,所以把整個專案全部刪除重做,這裡記錄一下我寫整個專案的全過程。

環境是mysql + MyEclipes + Tomcat9.0
視覺化工具是Navicat

先簡單看一下大致需求,首頁是下面這幅圖片
這裡寫圖片描述

這是某大學某學院的黨建工作的網站,要求是實現欄目、文章和使用者的增刪改查。不是很難,要求的技術為jsp,servlet,過濾器等JavaWeb開發中較為簡單的一些技術。

下面,開始工作,那麼首先做的應該是設計資料庫,資料庫中應該包含三張表,t_user t_article 以及 t_column(這裡由於所在工作室的命名規範,資料庫命名一律為db_xxxxx,表的命名一律為t_xxxxx)

放在Navicat中如圖
這裡寫圖片描述

我們右鍵資料庫,選擇轉儲sql檔案,這樣就會得到這個資料庫的建立語句,然後放到專案中,防止資料庫丟失。

/*
Navicat MySQL Data Transfer

Source Server         : Test
Source Server Version : 50717
Source Host           : localhost:3306
Source Database       : db_party

Target Server Type    : MYSQL
Target Server Version : 50717
File Encoding         : 65001

Date: 2017-06-06 14:24:40
*/
CREATE DATABASE `db_party`; SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for t_article -- ---------------------------- DROP TABLE IF EXISTS `t_article`; CREATE TABLE `t_article` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `title` varchar(255) NOT NULL COMMENT '標題'
, `author` varchar(255) NOT NULL COMMENT '作者', `content` varchar(255) NOT NULL COMMENT '內容', `click_times` int(11) NOT NULL DEFAULT '0' COMMENT '點選次數', `publish_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '釋出時間', `type` varchar(255) NOT NULL COMMENT '所屬型別', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-- ---------------------------- -- Table structure for t_column -- ---------------------------- DROP TABLE IF EXISTS `t_column`; CREATE TABLE `t_column` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `name` varchar(255) NOT NULL COMMENT '名字', `level` varchar(255) NOT NULL COMMENT '級別', `pid` int(11) NOT NULL COMMENT '父id,0為根節點', `isleaf` int(255) NOT NULL COMMENT '是否是葉子節點,1代表是,0代表不是', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '使用者id', `username` varchar(255) NOT NULL COMMENT '使用者名稱', `password` varchar(255) NOT NULL COMMENT '密碼', `sex` int(255) NOT NULL COMMENT '性別,1代表男,2代表女', `phone_num` varchar(255) NOT NULL COMMENT '電話', `email` varchar(255) NOT NULL COMMENT '電子郵件', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

建好了資料庫,下面正式開始開發

開啟MyEclipes,右鍵,new一個Web Project,填好Project Name,選好Java和JavaEE的版本
這裡寫圖片描述

注意這裡我選擇的只是我電腦裡的版本,真正的選擇要隨你電腦上的版本而定

注意這裡有一個選項,是自動生成web.xml檔案,一定要勾選,之後我們很多東西可能會在裡面配置,當然現在的版本也可以通過註解的方式進行配置,不過勾選上,以防萬一嘛

這裡寫圖片描述

然後,在MyEclipes中配置tomcat並將專案配置到tomcat中去,配置過程我就不再說了,有不明白的可以自行百度

開啟tomcat,測試一下看新new出來的專案能不能跑通

這裡寫圖片描述

出現如圖所示的畫面就證明已經跑起來了,並且現在正在執行的就是你的預設歡迎頁面index.jsp

下面開始我們的後臺封裝,我們先來建立與資料庫的連線,我們來配置一個c3p0連線池,至於配置連線池的好處嘛,大家還是自行百度

首先,我們先把該導的jar包匯入進去,將jar包拷到WebRoot/WEB-INF/lib下,然後右鍵,Build Path,add to Build Path

下面我們開始寫c3p0的配置檔案,我們在根目錄裡new一個新的資料夾resource,然後開始寫配置檔案。關於c3p0的配置檔案網上也很多,這裡我把我的程式碼上傳,大家也可以不看,直接自己配

<?xml version="1.0" encoding="UTF-8"?>  
    <c3p0-config>  
        <default-config>  
            <!-- 資料庫的url -->
            <property name="jdbcUrl">jdbc:mysql://localhost:3306/db_party</property>

            <!-- 資料庫驅動 -->
            <property name="driverClass">com.mysql.jdbc.Driver</property>

            <!-- 使用者名稱 -->  
            <property name="user">root</property>

            <!-- 密碼 -->  
            <property name="password">mysql</property>

            <!-- 當連線池連線耗盡時,客戶端呼叫getConnection()後等待獲取新連線的時間,超時將丟擲SQLException
            若設為0將無線等待,單位毫秒,預設0 -->
            <property name="checkoutTimeout">30000</property>

            <!-- 每多少秒檢查所有連線池中的空閒連線,預設值0,不檢查 -->  
            <property name="idleConnectionTestPeriod">300</property>

            <!-- 初始化連線池中的連線數 -->  
            <property name="initialPoolSize">100</property>

            <!-- 最大空閒時間,超過300s不用則連線被丟棄,若為0則永不丟棄 -->  
            <property name="maxIdleTime">300</property>  

            <!-- 連線池中保留的最大連線數 -->
            <property name="maxPoolSize">100</property>

            <!-- 連線池中保留的最小連線數 -->  
            <property name="minPoolSize">10</property>

            <!-- 用於控制資料來源內載入的PreparedStatements數量 -->  
            <property name="maxStatements">200</property>  
        </default-config>  
    </c3p0-config>  

需要提到的是,由於這個資料夾是作為配置檔案的資料夾,所以需要右鍵,Build Path,Use as source folder 可以看到,resource資料夾瞬間地位就上升了

然後我們開始寫工具類,在src資料夾中new一個新的Class,注意把包名起好,儘量不要寫裸體類,進來之後,把和資料庫相關的操作都封裝在這個類裡面,寫好之後,記得寫一下測試類,如圖,如果控制檯能正常輸出,則說明一切正常

這裡寫圖片描述

封裝好了資料庫,我們開始寫實體類,比如我們先來實現使用者的登入註冊功能,那我們就先來寫一個User的實體類,同樣把類打好包,一般實體類我們放在entites包裡面

這裡寫圖片描述

然後在類中寫出該實體類的屬性,一般來講是要和資料庫中的欄位一一對應的,屬性要設為private,並新增get和set方法。MyEclipes中新增get和set方法是快捷鍵是shift+alt+s

這裡寫圖片描述

寫好實體類之後,開始寫User的Dao層,Dao層裡面一般是和資料庫打交道的一些方法,無非也就是增刪改查的一些方法

我們在src下面再new一個UserDao的類,注意外面的包名寫好

這裡寫圖片描述

然後裡面寫好增刪改查等方法,比如我們剛剛寫好的insert方法

這裡寫圖片描述

寫好方法之後最好是再寫一個測試類測試一下方法寫沒寫錯,當然要是對自己有足夠的信心不寫也沒有大問題

這裡寫圖片描述

然後,再將其他方法寫好,UserDao就算是寫好了,當然我們這裡寫的比較簡單,如果更嚴謹一點的話要先寫介面,再寫實現類,如果再嚴謹一點的話還要再寫一個service層,這裡我們就不那麼麻煩了,如果對這方面有興趣的可以自己去了解一下

我們就先介紹到這裡,後面的我們會在後續文章繼續介紹