【手把手】JavaWeb 入門級項目實戰 - 文章發佈系統 (第一節)

来源:http://www.cnblogs.com/skyblue-li/archive/2016/09/24/5902712.html
-Advertisement-
Play Games

序 最近琢磨著要寫點東西,把基本的Java Web開發流程完整地走一遍,最後決定,乾脆就寫一個小小的項目實戰吧。這個小項目作為一個JavaWeb的入門例子,從前臺頁面到項目發佈,把整個流程走通。所謂 麻雀雖小,五臟俱全 。難度不是很高,正好可以作為入門使用。 接下來就是做什麼的問題了,首先不能太簡單 ...


312334546574820.jpg

最近琢磨著要寫點東西,把基本的Java Web開發流程完整地走一遍,最後決定,乾脆就寫一個小小的項目實戰吧。這個小項目作為一個JavaWeb的入門例子,從前臺頁面到項目發佈,把整個流程走通。所謂麻雀雖小,五臟俱全。難度不是很高,正好可以作為入門使用。

接下來就是做什麼的問題了,首先不能太簡單,那樣的話就沒意思了。也不能太複雜,因為我的確也沒那麼多時間,思前想後,我打算寫一個小型的文章發佈系統。

老實說,我也不知道最終會做成什麼樣子,但是基本的CRUD肯定少不了的。前臺頁面的話,我會儘可能做得好看一點,畢竟我也不是專門做前端的。

至於知識點,當然是儘可能豐富,把我用過的,並且理解的東西,一步一步地集成進去。

嗯,這個系列一旦開始,以後基本上就圍繞著這個小項目寫文了。我的意思是,其他文章都不更了,在這個小項目寫完之前,我會把其他的文章都放下,全心全意地編寫這個系列。

終於開始了,想想還有點小激動呢。

1. 項目的大致規劃

開發工具還是用eclipse,資料庫採用mysql。MVC框架的話,我就不用框架了,純粹用JSP來寫,實際開發肯定不會這麼做,不過,這畢竟還是有意義的。當然,你也可以把它換成框架版的。為什麼用JSP?因為JSP比較簡單,作為一個入門級的web項目,而且我是一邊開發一邊寫文,我就懶得用MVC框架了。

為什麼我要一邊開發一邊寫,因為我覺得,如果全部開發好了,再讓我從頭開始,把開發流程寫出來,那是很龐大的工作量,也不現實。而且,一邊開發一邊寫還有個好處,那就是可以幫助讀者看到整個項目的開發流程。

而且,包括我自己也不知道最終會寫成什麼樣子,也可能本文結束後就GG了。

不過不管怎麼說,這樣都會保留一點點新鮮感和樂趣。

如果你是初學者,並且希望完整地看一個小項目是如何做出來的,那麼,這個系列也許會適合你。

可能寫10篇文章就結束,也可能30篇,看情況了。

好了,正式開始吧。

2. 項目搭建
2.1 新建項目

新建一個 Dynamic Web Project,名字叫Article

Paste_Image.png

點擊Finish

Paste_Image.png

將項目的編碼改為 utf-8

Paste_Image.png

2.2 新建web.xml

Paste_Image.png

這是web項目的規範,一個web.xml文件可以對你的web項目進行基本的配置。

2.3 編寫web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

 <!-- 歡迎頁面 -->
 <welcome-file-list>
   <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>

</web-app>
2.4 編寫index.jsp

在WebContent目錄下新建一個index.jsp

Paste_Image.png

代碼:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    恭喜,web項目已經搭建完成。
</body>
</html>

這就是我們項目的首頁。

2.5 用 tomcat 發佈項目

我這邊用的是tomcat7.0

Paste_Image.png

運行。

啟動完畢後,打開瀏覽器,在地址欄輸入

http://localhost:8080/Article/

(我這邊的tomcat埠號為8080)

Paste_Image.png

然後可以清楚得看到,網頁上出現了這麼一行字:

恭喜,web項目已經搭建完成。

這就說明,web項目已經搭建成功了!

3. 首頁製作
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>首頁</title>
<style>
    
</style>
</head>
<body>
    <div class="header">
    
    </div>
</body>
</html>
3.1 標題欄

我們在body區域畫一個div,作為首頁的標題欄。它的樣式先全部在本頁面寫,也就是style塊裡面。

div是塊級元素,所以,雖然我們沒有給它設定寬度,它也預設就是父容器的寬度。所以,我們只需要給它一個高度就OK啦。

*{
    padding: 0 ;
    margin: 0 ;
}
.header {
    height: 60px ;
    background: #458fce ;
}

效果:

Paste_Image.png

接下來,繪製 logo,由於樓主的 PS水平比較渣,所以這個部分就用文字替代吧。當然,如果你是PS大神的話,也可以隨便給我做一個logo,在下一節中我就放上去。

求 logo ...

<div class="header">
    <div class='logo'>原創文字</div>
</div>

css:

*{
    padding: 0 ;
    margin: 0 ;
    font-family: "微軟雅黑" ;
}
.header {
    height: 72px ;
    background: #458fce ;
}
.header .logo {
    color: #fff ;
    line-height: 72px ;
    font-size: 30px ;
    margin-left: 20px ;
    display:inline-block ;
    font-weight:500 ;
}

Paste_Image.png

3.3 導航欄

我隨便想了幾個導航按鈕(其實就是 ul li):

  1. 首頁
  2. 原創故事
  3. 熱門專題
  4. 欣賞美文
  5. 贊助

    <div class="header">
    <div class='logo'>原創文字</div>
    <ul>
        <li>首頁</li>
        <li>原創故事</li>
        <li>熱門專題</li>
        <li>欣賞美文</li>
        <li>贊助</li>
    </ul>
    </div>

同時,我們把 li 的小圓點去掉:

ul li {
    list-style: none ;
}

Paste_Image.png

這個效果顯然不是我們想要的,我們給logo加一個浮動。

Paste_Image.png

然後,給每一個 li 添加一個左浮動:

.header ul li {
    float: left ;
}

Paste_Image.png

接著,我們把位置和顏色做一些調整:

<div class="header">
    <div class='logo'>原創文字</div>
    <ul>
        <li class='first'>首頁</li>
        <li>原創故事</li>
        <li>熱門專題</li>
        <li>欣賞美文</li>
        <li>贊助</li>
    </ul>
</div>

css樣式

.header ul li.first {
    margin-left: 30px ;
}

.header ul li {
    float: left ;
    color: #fff ;
    display: inline-block ;
    width: 112px ;
    height: 72px ; 
    text-align: center ;
    line-height:72px ;
    cursor: pointer ;
}

標題欄

cursor: pointer 的意思就是說,當我滑鼠划上去的時候,讓滑鼠變成一個小手的模樣。

因為實際使用的時候,我們點擊導航按鈕就自動跳轉頁面,所以,一般來說,每一個導航按鈕都應該是一個a標簽。

我們將代碼改一下:

<div class="header">
    <div class='logo'>原創文字</div>
    <ul>
        <li class='first'><a href="javascript:void(0)">首頁</a></li>
        <li><a href="javascript:void(0)">原創故事</a></li>
        <li><a href="javascript:void(0)">熱門專題</li>
        <li><a href="javascript:void(0)">欣賞美文</li>
        <li><a href="javascript:void(0)">贊助</a></li>
    </ul>
</div>

因為預設的a標簽會有下劃線,字體顏色是藍色,為了美觀,我們修改一下a標簽的樣式:

a {
    color: #fff ;
    text-decoration: none ;
}
3.5 給導航按鈕添加hover事件
.header ul li :hover {
    background:#74b0e2 ;
}

效果:

2.gif

奇怪了,li 的區域沒有變色,而當我滑鼠划到文字上的時候,會有一個小範圍的變色,這是咋回事呢?

難道hover失效了?

當樓主寫到這裡的時候,我也確實納悶了一會。。。

結果一查,發現:

Paste_Image.png

我擦,這裡多了一個空格啊,有木有!

好吧,要細心一點。。

那麼,我們去掉空格,就正常了。

.header ul li:hover {
    background:#74b0e2 ;
}

3.gif

這樣就好看多了吧。

時間差不多了,今天就到這裡。至於更新頻率的話,不一定,不過周更是肯定會有的。

這個系列也是我的一次嘗試,希望大家喜歡。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • gson是一個google的開源項目,支持多種JSON方法,這裡主要講解如何使用gson將json轉換成javaBean。 maven坐標 java代碼: 上述代碼代碼中涉及到java內部類的聲明 ,這裡補充一個知識點,關於java內部類就是在一個類裡面定義另一個類,要聲明一個內部類的語法是: Ou ...
  • 本渣渣鴿了一個月終於有時間更新。因為有c++基礎,學起來這章還是比較簡單的,本章我覺得是程式猿質變課程,理解面向對象的思想,掌握面向對象的基本原則以及 Java 面向對象編程基本實現原理,熟練使用封裝、繼承、多態面向對象三大特性,感受和c++之間的異同,下麵是學習路線。 1.類和對象 1-1 什麼是 ...
  • 1.創建一個web工程 2.導入jar包 3.創建Student表 4.創建實體類 5.配置映射文件 6.配置主配置文件 7.創建一個工具類 8.創建分頁實體類 9.創建Dao類 10.實現Dao介面 11.創建業務層的介面 12.實現業務層介面 13.創建Servlet類 Servlet類里的增刪 ...
  • 1. 要求輸入10個整數,從大到小排序輸出 輸入:2 0 3 -4 8 9 5 1 7 6 輸出:9 8 7 6 5 3 2 1 0 -4 解決方法:選擇排序法 實現代碼如下: #include <stdio.h> int main(int argc, const char * argv[]) { ...
  • ...
  • Class類(java.lang.Class) public final class Classextends Objectimplements Serializable, GenericDeclaration, Type, AnnotatedElement Class對象的三種實例化模式 對象.g... ...
  • 使用Java多線程編程時經常遇到主線程需要等待子線程執行完成以後才能繼續執行,那麼接下來介紹一種簡單的方式使主線程等待。 java.util.concurrent.CountDownLatch 使用countDownLatch.await()方法非常簡單的完成主線程的等待: ...
  • 烏龜與兔子進行賽跑,跑場是一個矩型跑道,跑道邊可以隨地進行休息。烏龜每分鐘可以前進3米,兔子每分鐘前進9米;兔子嫌烏龜跑得慢,覺得肯定能跑贏烏龜,於是,每跑10分鐘回頭看一下烏龜,若發現自己超過烏龜,就在路邊休息,每次休息30分鐘,否則繼續跑10分鐘;而烏龜非常努力,一直跑,不休息。假定烏龜與兔子在 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...