1、技術選型javascript
在這裏就涉及到J2EE的MVC模式了,那麼在技術選型上面怎麼肯定要使用什麼技術呢?固然是本身比較熟悉的了。咱們先從三層架構上面逐一來討論。html
一、視圖層前端
目前本人瞭解的視圖層的實現能夠有如下的幾種方式:html,jsp,freemarker,這三種方式配合前端的javascript、jquer、ajax等腳本均可以實現動態的頁面,固然從使用方便上來講仍是freemarker比較優越,而且這個也是本人使用時間比較長的一個視圖模板引擎。java
相關的介紹已經比較詳細了,freemarker的封裝以及使用的方便性是超過jsp以及html的(https://baike.so.com/doc/6837664-7054912.html),可是我的仍是以爲從jsp開始比較好。mysql
二、控制層web
可使用基本的servlet、springMVC、struts實現控制層,這是本人曾經使用過的技術,雖然從使用方便性上面來講使用spring或者struts更便利,可是作了這麼多項目,感受僅僅會搞幾個配置使用大衆的框架感受層次太膚淺了,以爲仍是應該從最基礎的開始,ajax
從底層開始,經過對過往的框架使用經驗、設計模式、曾經接觸到的理念的使用,本身進行封裝達到一樣的目的,那麼作這個自建項目的目的就達到了,最終仍是選擇最基礎的servletspring
三、服務層sql
這裏服務層固然會首先想到spring的IOC(動態依賴注入),這個功能很強大,可是仍是選擇經過自封裝的方式來一步步的構建本身的實現,這無疑是更有意義得多。數據庫
四、數據持久層
固然毫無疑問啦,確定是jdbc,雖然如今有比較流行的ibatis能夠方便的使用,也有功能強大重量級的hibernate,可是這些都沒法瞭解到底層的數據持久層的一些細節,既然知道他的實現原理那麼爲何不本身實現一個呢,雖然會有這樣那樣的缺陷,但這就是進步。
五、數據庫
原先使用過sql server、mysql、oracle,最多的使用的仍是oracle,可是如今開源這麼流行,固然仍是選擇mysql啦,繼續深刻了解下mysql
2、創建初始servlet
一、首先要引用servlet的jar包,這裏咱們在maven倉庫中搜索,在nexus中搜索jar包,而且在maven中引用這裏會出現有幾個版本的servlet-api的jar包,這裏咱們暫時使用2.5的版本
二、強搜索到的servlet版本放入pom文件中
三、建立一個cn.nutrition.base.controller.BaseServlet類繼承HttpServlet,在HttpServlet中看到有四種請求方法,這裏咱們都進行重寫
package cn.nutrition.base.controller; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class BaseServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("dfsdafashiurewo"); } @Override protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } }
四、在web.xml中進行servlet配置
五、項目加載到servers中後啓動,而後訪問http://localhost:8083/selfproject-nutrition/nutrition,這是能夠在Console日誌中看到,以下的日誌,這代表servlet建立成功了。
3、創建一個默認的訪問頁面
一、在webapp目錄下創建文件目錄jsp,而後建立一個簡單的index.jsp文件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> hello! </body> </html>
二、在BaseServlet類中的doPost中加加上以下代碼
@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("dfsdafashiurewo"); req.getRequestDispatcher("jsp/index.jsp").forward(req, resp); //resp.sendRedirect("jsp/index.jsp"); }
req.getRequestDispatcher("jsp/index.jsp").forward(req, resp)(轉發),或者resp.sendRedirect("jsp/index.jsp")(重定向)均可以
三、從新發布啓動servers,而後訪問而後訪問http://localhost:8083/selfproject-nutrition/nutrition
這是能夠在瀏覽器頁面看到「hello!」的輸出,代表已經能夠訪問頁面了。
【構建過程當中遇到的問題】
一、在構建過程當中發現使用servlet繼承的時候報錯,經過百度搜索得知是eclipse的版本太低了,引用的jdk1.8沒法使用,後面經過下載更新的4.x版本,可是在更新web插件的時候一直報錯沒法完成更新,以後又用舊的eclipse版本加jdk1.7。
二、構建過程當中本來打算在WEB-INF中創建jsp文件的,可是在執行過程當中發現WEB-INF中的jsp文件沒法經過重定向訪問,只能經過轉發訪問,還有html也沒法進行訪問(兩種方式都不行),因此再進行基礎的servlet+jsp驗證是使用了webapp下的jsp目錄。
具體的區別會進行專題研究。
【參考資料】
一、轉發與重定向的區別:http://www.cnblogs.com/liushi805347332/p/8983159.html