最近看老羅視訊,做了一個簡單的使用者注冊系統。使用者通過網頁(JSP)輸入使用者名、真名和密碼,Servlet接收後通過JDBC将資訊儲存到MySQL中。雖然是個簡單的不能再簡單的東西,但麻雀雖小,五髒俱全,在此做一歸納和整理。下面先上源碼:
一、index.jsp
它的運作結果如下:
二、點選上面的“點選注冊”就跳轉到了pass.jsp:
運作效果如下:
三、除上面兩個jsp代碼外,剩下的就是java代碼了。先來看java代碼的結構:
不得不說JavaWeb是一個絕好的了解MVC架構思想的載體,上述有四個包,每個包下面一個檔案。在功能的劃分上有條不紊。
1、com.product.jdbc.dbutil 這個包裡是基于jdbc驅動的一個工具類JdbcUtils.java,代碼已經貼出來了,參見
2、com.product.register.action所謂的action扮演了MVC裡的C的角色,即Control層,裡面放的是各種Servlet。接收來自V(View)---用戶端頁面jsp回傳的資料,然後調M層,把資料存進去。RegisterAction.java的代碼:
3.com.product.register.service 這裡的service其實是一個接口,RegisterService.java代碼:
4.既然有接口就一定有接口的實作者,實作者就是com.product.register.dao下的RegisterDao.java, 負責操縱資料庫,将資訊存到表裡。
下圖是輸入一個使用者的資訊:
用Navicat打開資料庫可以看到:
代碼就完畢了,下面是開發要點:
1、關于中文亂碼的問題,按老羅的視訊一開始我的也亂碼,經研究需要三個地方同時設定utf-8編碼,第一是資料庫裡表的編碼,第二是jsp的編碼:pageEncoding="utf-8" 第三是在Servlet裡同時設定response和request的編碼,代碼如下:
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8"); 記住是缺一不可哦!!!
2、關于JSP往JSP頁面的跳轉很簡單:
<a href="<%=path%>/pass.jsp">點選注冊</a> 超連結裡直接放要跳轉jsp的相對路徑即可。
3、JSP往Servlet跳轉:
<a href="javascript:dosubmit();">
<img src="<%=path%>/images/ok_1.jpg" name="Image8" width="60" height="22" border="0"> </a>
也是用的href超連結,在位址裡寫"javascript:dosubmit();". 這就需要定義dosubmit()函數:
獲得一個表單,然後根據input時的名字擷取對應value,
<INPUT class=text2 maxLength=20 size=18 name="username" minLength="1">
4、上面可以看到jsp往servlet跳轉過程中先經過javascript,接下來說白了是javascript往servlet跳轉:
th.action="<%=path%>/servlet/RegisterAction"
th.submit();
5、Servlet往jsp跳轉:
response.sendRedirect(path + "/index.jsp");這種方法浏覽器位址發生變化,傳參數可以再URL位址裡或用session,不能使用request.setAttribute來傳參數。另一種使用forward來傳,詳細參見這裡:
6、縱觀整個架構,RegisterAction是控制中樞,資料經jsp----javascript傳到RegisterAction。在RegisterAction裡建立了接口Service的執行個體RegisterDao,用Dao來存資料。
關于javaEE的各層分工,詳見
7.因為要通路資料庫,記得将mysql-connector-java-5.1.26-bin.jar拷貝到WebRoot檔案夾下的WEB-INF/lib檔案夾下。
另外在web.xml裡要配對,jsp裡用到了css。其他的細節看源碼吧。
下載下傳連結: