摘要:目前該功能并未完善,敬請期待。反正每次都會有新的東西補充上去一開始我本來想做的是可以使用微信登陸,也可以使用賬戶郵箱登陸,也可以使用短信登陸的。后來發現微信登陸要企業認證,做不了。
從零開發項目概述
最近這一直在復習數據結構和算法,也就是前面發出去的排序算法八大基礎排序總結,Java實現單向鏈表,棧和隊列就是這么簡單,十道簡單算法題等等...
被虐得不要不要的,即使是非常簡單有時候繞半天,想不明白。
本來這篇博文是想留到我最后Java基礎復習完再寫出來的,鑒于公眾號有的同學想看看郵箱登陸的案例,想看看Java開發后臺是怎么的,于是我就提前寫了這篇博文
這個項目是我自己手寫的第一個SSM項目(畢竟學了當然得搞點事情,對吧),是上年寫的小東西。當然了,現在回過頭去看這個項目是有很多的不足的,僅供參考。用的也不是新技術,只是把我之前當時所學的一些東西做一個總結...如果想學新知識的同學看到這里就可以留步啦~
所以說,你可能會看到比較舊的技術,寫得不好的地方都會有~如果是寫過項目的同學而言,這個僅僅是一個Demo。對于沒寫過項目的同學可以適當的參考一下,因為用的是非常簡單的技術,都是耳熟能詳的技術,不會有什么難懂的地方~
PS:希望各位大佬不要攻擊它,我沒有做任何的安全措施。即使留了評論的功能,XSS攻擊防范也沒做,請手下留情啊~
地址:
預覽:http://www.zhongfucheng.top/
GitHub:https://github.com/ZhongFuCheng3y/910convenienceSite
編寫記錄:
從零開始寫項目第一篇【搭建環境】
從零開始寫項目第二篇【登陸注冊、聊天、收藏夾模塊】
從零開始寫項目第三篇【在線聊天和個人收藏夾】
從零開始寫項目第四篇【搭建Linux環境】
從零開始寫項目第五篇【評論功能、備忘錄】
從零開始寫項目終極【維護網站、修復Bug】
一、功能介紹巴巴拉拉地說了一大堆東西,我們來看一下這個項目有什么功能~
這是首頁,會根據當地給出三天的天氣預報:
很簡單的注冊頁面,通過郵箱來進行注冊~
2018年3月30日15:51:23,好吧,寫這篇博文的時候也出錯了.....
org.springframework.mail.MailAuthenticationException: Authentication failed
我懷疑是授權發送郵箱的密碼錯了(過時),于是我去更新了一下,果然就行了~
此時點擊注冊,就會要郵箱校驗了~
去自己的郵箱查看一下郵件:
點擊校驗它即可完成注冊(如果不校驗的話,那么是不允許登陸的):
該項目用Shiro做了權限認證的,如果沒在登陸的狀態下點擊以下的菜單都會跳轉到登陸頁面~:
網站說明:
這個網站的功能并不復雜,開發的功能都是為了方便使用而已。
一、個人收藏夾:將常用的網站添加進去,值得注意的地方就是:url(網址)最好是從瀏覽器復制下來,這是最方便也是最安全的做法
二、個人備忘錄:添加個人備忘錄,設置好時間、在郵件發送出去之前都能夠修改時間
發送郵件好像會有點延遲~~~~
接下來是個人收藏夾了,添加一些常用的網址進去,并給它命名,當輸入命名部分的字符時,即會提示:
用鍵盤上下鍵選中按回車即可跳轉到對應的頁面了~
二、技術介紹網站用到的技術:
一、全站頁面布局:前端是使用Bootstrap來進行布局的、背景是使用了GitHub的一個開源項目:particles-js。導航條來源于一個國外網站:http://toolofna.com/
二、首頁:天氣預報功能來源于高德地圖API和和風天氣API組合而成,能夠查看當前IP地址所在地的近三日天氣
三、個人收藏夾:使用了Elasticsearch全文搜索引擎工具。
四、在線聊天:使用了GoEasy的服務推送和jquery.barrager.js構建彈幕。目前該功能并未完善,敬請期待。
五、注冊和登陸:使用了BootstrapValidation進行表單校驗、JavaMail發送郵件的功能、Gif動態驗證碼
六、個人備忘錄:使用了Quartz任務調度工具來定時發送郵件
總概要:
???1. Maven構建項目
???2. 使用Mysql數據庫
???3. Tomcat作用應用服務器
???4. Dao層采用Mybatis,Controller層采用SpringMVC,Spring對Mybatis和SpringMVC進行整合和事務管理
???5. Shiro權限管理框架控制登陸以及對個人收藏夾、在線聊天功能進行認證的管理
???6. 使用FreeMarker來渲染頁面和配置發送郵箱的模版
???7. 使用Quartz和Spring整合,完成個人備忘錄的功能。
???8. 使用Nginx作為代理服務器,對靜態資源處理,代理轉發
可以看到的是,網站的功能并不多,就幾個小模塊,我就創建了三張表而已:
三、談談編寫過程其實所有的初學者都一樣:怎么使用Java編寫一個網站?數據庫設計感覺好難,設計錯了就很麻煩了。Web前端好煩啊,自己寫的頁面不好看。這個功能感覺好難實現哦,應該是挺高深的技術吧。我的基礎還不夠扎實,等我學好了再寫吧,等等等..就一直有想寫網站的念頭,但一直沒開始動手。
上面的問題我都有想過,不過我還是寫了這么一個小東西....
當時寫的練手項目都是視頻教程給出的題目,比如我之前發過的:移動商城項目總結和納稅服務系統總結,jar包或者maven的坐標都是有給出來的,項目的前臺頁面和數據庫標也大都是設計好的,我只需要補補填填寫Java代碼。而這一次,前端頁面,數據庫設計,Maven坐標等等全由自己包辦
從開始到編寫結束大概花了我一個月的時間,期間要去上課呀,回家呀,一些瑣事呀等等才拖了那么久。如果自己從來沒寫過項目的同學建議自己折騰一下搞一個,期間能學到很多很多東西的。也不要怕自己寫得不好(只要像我一樣不要臉,不也將這么一個小東西發到公眾號上來,發到其他的博客平臺了么)
那么我自己折騰這么一個小玩意能學到什么了呢?
3.1搭建環境收獲在搭建環境的時候,不要覺得最新的版本就是牛逼,我要用最新的,不做過時的男人!我當時就是撘環境是用Spring5.0,Mysql驅動包6.x,jdk1.8,能用最新就用最新的,覺得自己賊牛逼。然后撘完項目就啟不動了~~~
其實沒必要用最新的,最新的一般都會有bug,沒bug的也不一定兼容其他的版本。要知道,Spring可不單單有Spring的東西,還依賴很多其他的jar包的。同樣Mysql用最新的驅動包,逆向工程時也不好使(我在SegementFault已經見過幾次跟我一樣遇到的坑)
一般最新的東西資料都挺少的,除了官方文檔,出了什么問題都只能自己解決了。較老的版本就不一樣了,很多人都會遇到的問題,解決方案也會相當多~
當時我在圖書館撘了一個晚上,得出的教訓:
3.2登陸與注冊收獲登陸與注冊這個功能只要學過JavaWeb基礎的同學,肯定做過。反正我是做了很多很多次的了,學Servlet做一次,學JSP做一次,學AJAX做一次,學xxx系統做一次,學XXX商城做一次。反正每次都會有新的東西補充上去
一開始我本來想做的是可以使用微信登陸,也可以使用賬戶(郵箱)登陸,也可以使用短信登陸的。
后來發現微信登陸要企業認證,做不了。短信登陸要錢,不想給。
所以最后就只有用郵箱登陸了~~~當然了,該有的基本功能是有的:
加密密碼
前臺校驗和后臺校驗參數
忘記密碼,記住我功能
驗證碼
由于之前是簡單學過Shiro的,當時覺得Shiro做權限很方便,于是自己也想體驗一把~實際上用起來并沒有我當時學的時候那么簡單!
在Shiro這一塊也耽誤了不少時間,因為我當時想的是使用AJAX來提交,如果正確則跳轉到首頁,如果密碼(參數..)等錯誤就返回JSON給用戶一個友好的提示。可是,Shiro的表單認證起默認返回的是一個頁面,在這里就卡住了挺久的(有的時候沒bug,有的時候又有bug),百思不得其解...最后查閱了很多資料才將FormAuthenticationFilter改寫好,Shiro很多東西都是要自己重寫來進行控制的,當時理解后畫的流程圖:
Shiro的“記住我”功能本來以為是很好用的,實則也挺雞肋的..當時我做的記錄:
反正Shiro給我的感覺就是很多東西都要自己來重寫,控制,而如果是小范圍使用我覺得自己寫url控制會方便。也可能是我的學習姿勢不對~
在登陸注冊模塊期間也自己去找了不少資料。
數據庫設計上也是參考了網上和自己做了些許修改
JavaMail我之前是沒接觸過的
BootStrapValidation也是看中了就用,
折騰Shiro幾天就更不用說了。
所以說,未必要使用自己熟悉的東西,只要想實現一些普通、你見過的功能,總會有方案可以參考。
3.3個人收藏夾收獲這個自動補全功能是我一開始想要做自己網站的時候想做的。因為我習慣了使用鍵盤去找文件,去找東西。
比如,在windows下,我下了一個rolan,將常用的軟件丟進去,輸入一些關鍵字即提示我,然后我通過鍵盤上下選擇就可以打開軟件了,十分方便
在編寫之前,我學過Lucene的相關知識,知道Lucene是全文搜索索引的始祖(沒做過相關案例)【參考博文:Lucene就是這么簡單】,后來知道Solr和Elasticsearch在企業上是用得挺火的,而Elasticsearch又是各種火熱,各種吹(哈哈哈,無貶義,是挺好用的)。
于是我就花了幾天從零開始學Elasticsearch,當時參考的博主給出的是2.3.3版本,我也覺得沒什么,就使用了。那是最新是5.x~就有了后來的博文:【Elasticsearch就是這么簡單】
Elasticsearch遇到很多的問題都得去翻英文的,所以可以訪問外網也挺重要的~
我英語也不咋地,就慢慢看看,弄個Chrome插件翻譯唄,事情總得解決,也就這么成長的~
3.4搭建Linux環境收獲在之前只會Linux一些非常簡單的命令,ls cd vi 這些,用得少就忘記了,于是又得重新去回顧一下Linux(這個學期也開了Linux的課,我打算過一陣再總結Linux的常用命令和相關要點,敬請期待~)
花了點點錢買了臺云服務器(學生有優惠就10塊一個月),我也建議是在校的學生也可以買來自己玩玩,熟悉一下Linux命令,還有很多軟件都在Linux下才更好地支持(例如:Elasticsearch,Nginx),尤其Elasticsearch在windows下裝它簡直麻煩!
到了Linux階段,我也去學了下Nginx了。在沒學Nginx時我就經常聽說過這個HTTP服務器了,但一直不知道它是干嘛用的。它的最常見作用就兩個:
處理靜態資源
動態資源轉發到Web服務器(Tomcat)
學學Nginx的配置文件相關知識,是如何配置的,配置有什么用~就可以使用了
3.5評論功能和備忘錄收獲評論功能在數據庫設計上也有好幾種:
將回復和評論都統一當成是評論,能夠使用@XXX來當做是回復,類似與IOS知乎的評論【此做法是最簡單的】
將回復和評論分開,要么單表就多增加一個父屬性,要么就分兩張表【稍微復雜,一個評論可以對應多個回復】
實現評論與回復“蓋樓”的方式,這種就是網易的評論【此種是最復雜的】
我做的只是一個留言的功能,就直接使用第一種了~
對于備忘錄就得用到Quartz時間調度框架,之前接觸過,但用的使用還是出現了Bug
在Junit測試Quartz沒有反應
Spring不能注入對象進Quartz的Job類中
如果業務簡單的話,下次也想玩玩Spring自帶的任務調度~
四、最后上面簡要地介紹了我的小項目的功能和編寫過程,更詳細的業務得去看我下面的博文和源碼了~也希望大家能夠有所收獲,自己動手做一個小項目~
現在看來很多沒有寫成規范(返回JSON、JavaScript模塊化)等等,但畢竟是自己學編程的成長經歷,看回以前的代碼總會有這種感覺。我短時間內也不做重構了,學Java基礎去~
后面的博文幾乎都是Java基礎或算法(少量)了,希望大家多多支持哈,在校的日子我會盡量保持日更的~
如果文章有錯的地方歡迎指正,大家互相交流。習慣在微信看技術文章,想要獲取更多的Java資源的同學,可以關注微信公眾號:Java3y
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71086.html
摘要:前言由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 前言 由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導航哦~想要獲取最新原創的技術文章歡迎關注我的公眾號:Java3y Java3y文章目錄導航 Java基礎 泛型就這么簡單 注解就這么簡單 Druid數據庫連接池...
摘要:認證鑒權與權限控制在微服務架構中的設計與實現一引言本文系認證鑒權與權限控制在微服務架構中的設計與實現系列的第一篇,本系列預計四篇文章講解微服務下的認證鑒權與權限控制的實現。 java 開源項目收集 平時收藏的 java 項目和工具 某小公司RESTful、共用接口、前后端分離、接口約定的實踐 隨著互聯網高速發展,公司對項目開發周期不斷縮短,我們面對各種需求,使用原有對接方式,各端已經很...
摘要:有人反駁人家工作兩年,你談個球的標準。,,,,的概念不能更廣啊。附錄一個項目用來演示各種新特性的示例,有超過個示例程序。 這篇博客什么技術內容都沒有,純粹是介紹JAVAEE這個寬廣的概念。 本文內容的基于的環境是JavaEE7 起因: 起因是因為看了這個java EE兩年,目前北京在職,年后可以上班,下面有個人問: hantsy:Java EE 工程師?請問用過哪...
摘要:看起來沒有集合框架,線程,等那么耀眼,但它可是很多框架的基礎啊回復反射查看相關文章,先把基礎學會,后面的得用到它。 回頭看看, 我進入Java 領域已經快15個年頭了, 雖然學的也一般, 但是分享下我的心得,估計也能幫大家少走點彎路。[入門]我在2001年之前是C/C++陣營, 有C和面向對象的基礎, 后來轉到Java ,發現沒有指針的Java真是好簡單, 另外Java 的類庫好用的讓...
摘要:更詳細的內容下一章開篇深入聊聊前后分離講述關于我目前在寫從零構建前后分離項目系列,修正和補充以此為準不斷更新的項目實踐地址彩蛋提前預覽下一章傳送門 開篇 : 縱觀WEB歷史演變 在校學習和幾年工作工作中不知不覺經歷了一半的 WEB 歷史演變、對近幾年的發展比較了解,結合經驗聊聊 WEB 發展歷史。 演變不易,但也是必然,因為為人始終要進步。 WEB 的發展史 一、開山鼻祖 - 石器時代...
閱讀 3806·2021-09-23 11:32
閱讀 2472·2021-09-06 15:01
閱讀 1632·2021-08-18 10:24
閱讀 3470·2019-12-27 11:44
閱讀 3616·2019-08-30 15:52
閱讀 2524·2019-08-30 11:11
閱讀 699·2019-08-29 17:27
閱讀 610·2019-08-29 16:22