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

01

國慶長假終于結束了,博主想到以往這個時候,自己就已經回到學校,和一群基友扯扯犢子,順便吹吹牛,好不快活,可惜這種生活不會再有了。雖說如此,但是參加了工作以后,畢竟有更多的時間去做自己想做的事情,沒有了學校里的那么多約束,也不再需要為了考試忙活個半天,想來也是不錯的。

好的,再次回到這個系列。

不知不覺,我發現自己在簡書已經寫了好幾萬字了。當我無聊的時候,就會去看看自己之前寫的文章,然后感到很奇怪,似乎那些東西根本不是自己寫的一樣。我仿佛是在看別人的文章,好長時間我都有這種感受。

這真的是挺奇怪的,不過我轉念又一想,當我看自己幾個月以前的代碼的時候,也經常有看不懂的情況,于是我也就釋然了。

管他呢,先往下寫吧。

上次登錄工作做得差不多了,當我們在登錄頁面輸入賬號和密碼,后臺會進行一系列的驗證,如果驗證無誤,就跳轉到首頁。

現在我們對首頁進行一個小小的調整,就是說,如果登錄成功了,右上角的登錄圖標就換成登錄人的名字。

Paste_Image.png

這是標題欄對應的頁面 —— header.jsp


Paste_Image.png

代碼

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<div class="header">
    <div class='logo'>原創文字</div>
    <ul>
        <li class='first'><a href="index.jsp">首頁</a></li>
        <li class='item'><a href="javascript:void(0)">原創故事</a></li>
        <li  class='item'><a href="javascript:void(0)">熱門專題</li>
        <li  class='item'><a href="javascript:void(0)">欣賞美文</li>
        <li  class='item'><a href="javascript:void(0)">贊助</a></li>
    </ul>
    
    <div class='login'>
        <span><a href="login.jsp">登陸</a></span>  
        <span>|</span> 
        <span><a href="javascript:void(0)">注冊</a></span>
    </div>
</div>

02

在上一節,我們判斷當用戶名和密碼全部匹配的時候,就把user對象,還有username放到session中。

現在,要實現標題欄判斷的功能,我們可能會這么想,就是能不能在header.jsp里面做一個簡單的if判斷,如果username存在,那么就把 登錄|注冊 這個字樣給換掉。如果不存在,就維持原狀。

對的,毫無疑問,這個思路肯定是可以的。

俗話說得好,只要思想不滑坡,辦法總比困難多。寫程序也是一樣,怕就怕沒思路,有了思路,啥都好說。實在不行,就百度唄。

嗯,我百度了一下(好吧,其實我也不太會。。。),解決了一點點小問題。現在開始進行代碼的實現。

首先,需要導入兩個jar包,


Paste_Image.png

分別是 jstl.jarstandard-1.1.2.jar

接著,在taglib.jsp中引入這個標簽庫

<%@taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>

這是JSTL的一個核心標簽庫,有了它,我們就可以為所欲為,哦不,可以在JSP頁面上進行一些簡單的控制了,比如說邏輯判斷。

于是,代碼就成了這樣。

<div class='login'>
    <c:choose>
        <c:when  test="${empty sessionScope.username}">
            <span><a href="login.jsp">登陸</a></span>  
            <span>|</span>
            <span><a href="javascript:void(0)">注冊</a></span>
        </c:when>
        <c:otherwise>
            <span><a href="javascript:void(0)">歡迎您,${sessionScope.username}</a></span>  
            <span> | </span>
            <span><a href="javascript:void(0)">登出</a></span>
        </c:otherwise>
    </c:choose>
</div>

其實引入標簽庫的時候,我有點疑惑,因為我引入的明顯是一個網址,也就是說,這個標簽庫應該是遠程的。既然是遠程的,為什么我還必須要添加兩個jar包不可呢?可是如果我不添加的話,編譯又報錯了。難道和tomcat的版本有關系?我用的是tomcat7.0。額,如果有大神知道的話,求告知一下,這個我真的不太清楚為什么。

不管了,先繼續往下寫吧。

好的,讓我們測試一下。

Paste_Image.png

用戶名: 張三
密碼: 123456

點擊登錄

Paste_Image.png

成功了。

JSP作為一個被廣泛使用的模板引擎,有著很多很多的標簽庫,也有不少第三方的標簽庫。當然,我們也可以自己編寫標簽,這個有時間的話,我也打算來寫一寫,自定義標簽還是很有趣的。

03

有了登錄,肯定還需要有登出功能,總不可能每次都讓用戶關掉瀏覽器吧。

登出的話,我們只需要把session中的信息都刪掉就行了,然后自動跳轉到登錄頁面。

登出按鈕:

<span><a href="${basePath}/controller/logoutController.jsp">登出</a></span>

我們再在controller文件夾內新建一個logoutController:

Paste_Image.png

登出操作比較簡單,我就直接上代碼了:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%  
    //注銷
    session.removeAttribute("username");
    session.invalidate();
    String path = request.getContextPath();
    //獲取端口
    int port = request.getServerPort();
    String basePath  = null;
    if(port==80){
        basePath = request.getScheme()+"://"+request.getServerName()+path;
    }else{
        basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
    }
    response.sendRedirect(basePath + "/login.jsp");
%>

注銷后,頁面就自動跳轉到登錄頁面。

然后,即便你再次訪問首頁,右上角也不會顯示用戶信息了。

Paste_Image.png
Paste_Image.png

因為我們已經將session中的用戶信息給刪除了。

04

接下來,我們繼續畫頁面,之前首頁的內容區一直沒有做,現在我們來畫一下吧。

既然是文章發布系統,主角就是各種文章,對不對?好的,文章又分很多種類,比如情感類,勵志類,科技類等。于是,我們需要在首頁對不同的文章進行一個分類展示。當然,只會展示前幾條數據。

index.jsp

內容區代碼:

<div class='h600' style='border:1px solid #ccc'>
    <div class='category'>
        <div class='title'>連載小說</div>
        <ul class='items'>
            <li class='item'></li>
            <li class='item'></li>
            <li class='item'></li>
        </ul>
    </div>

</div>

category有類型,種類的意思。

css

.category .title {
    margin-bottom: 10px;
    margin-top: 30px;
    border-bottom: 1px solid #cac5c5;
    height: 30px;
    text-indent:1em;
    font-size:18px;
    color:#666;
}
Paste_Image.png
Paste_Image.png

OK,大概有一個樣子了。

接下來,我們給每一個item設置一個寬高,背景色,再加上一個左浮動。

.category .items .item {
    width: 160px;
    height: 231px;
    background: #ccc;
    margin: 20px;
    float: left;
}

就成了這樣:

Paste_Image.png

因為每一個item都是左浮動,所以別忘了清除浮動。

Paste_Image.png

基于這樣的一個思路,我們現在可以把頁面模型搭出來了。

html

<!-- 內容區域 -->
<div style='border:1px solid #ccc'>
    <br/><br/>
    <div class='category'>
        <div class='title'>連載小說</div>
        <ul class='items'>
            <li class='item'></li>
            <li class='item'></li>
            <li class='item'></li>
            <div style='clear:both'></div>
        </ul>
    </div>
    
    <div class='category'>
        <div class='title'>編程代碼類</div>
        <ul class='items'>
            <li class='item'></li>
            <li class='item'></li>
            <div style='clear:both'></div>
        </ul>
    </div>


</div>

css

.category {
    margin-top: 10px;
    margin-bottom:20px;
}
    
.category .title {
    margin-bottom: 10px;
    border-bottom: 1px solid #cac5c5;
    height: 30px;
    text-indent:1em;
    font-size:18px;
    color:#666;
}
.category .items {
    margin-left:10px;
}
.category .items .item {
    width: 230px;
    height: 320px;
    background: #ccc;
    margin: 20px;
    float: left;
    margin-right:20px;
    cursor:pointer;
}

現在的首頁大概就是這個樣子:


1.gif

我要下載源碼

您的支持是我寫作的最大動力:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,415評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,104評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,884評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,647評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,130評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,366評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,887評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,737評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,174評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,586評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,827評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,608評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,914評論 2 372

推薦閱讀更多精彩內容