JAVA原生mvc實現用戶信息的增刪查改

筆者最近學完jsp和servlet,因而心血來潮的打算寫個簡單的用戶案例

環境準備:

開發工具eclipsehtml

jdk-1.8.0_72前端

tomcat-9.0.5java

 

前端部分:

1.本身手寫了一套樣式

2.使用ajax交互

 

目錄結構:

java目錄:

 

前端目錄git

 

 

 

需求分析:

1.可以實現用戶的登陸和註冊github

2.可以實現對用戶信息的增刪查改web

3.登陸過一次的用戶保存登陸記錄,也就是記錄sessionajax

 

因爲筆者不是很擅長寫界面,因此後臺界面部分不是寫的很好看,這裏就先預覽一遍

 

因爲代碼量太多了,我就把這個項目放到了github上   https://github.com/chenCmengmengda/javaweb_usertomcat

接下來我把最最最核心的部分貼出來session

首先咱們都知道HttpServlet這個類中已經幫咱們實現了doGet和doPost,但是若是請求的後臺url一多,不可能每一個都單獨寫成一個類,因此這兩個方法根本不可取,咱們要的是一個類中的多個方法都能被咱們以url傳參的形式訪問。eclipse

例如:http://localhost:8080/demo1/xxx?method=login

 

因而我在資料中翻到了這麼一段話。

注意藍色字體HttpServlet的實現關鍵在於覆蓋了service方法,所以咱們只要本身寫一個類覆蓋HttpServlet中的service方法就OK了

其實不少代碼只要照搬HttpServlet就OK了,想要實現咱們的功能,那麼就加上反射的思路進去就OK了

 1 public class BaseServlet extends HttpServlet {  2     /*
 3  * 它會根據請求中的m,來決定調用本類的哪一個方法  4      */
 5     protected void service(HttpServletRequest req, HttpServletResponse res)  6             throws ServletException, IOException {  7         req.setCharacterEncoding("UTF-8");  8         res.setContentType("text/html;charset=utf-8");  9 
10         // 例如:http://localhost:8080/demo1/xxx?method=login
11         String methodName = req.getParameter("method");// 它是一個方法名稱 12     // System.out.println(methodName); 13         
14         // 當沒用指定要調用的方法時,那麼默認請求的是execute()方法。
15         if(methodName == null || methodName.isEmpty()) { 16             methodName = "execute"; 17  } 18         Class c = this.getClass(); 19         try { 20             // 經過方法名稱獲取方法的反射對象
21             Method m = c.getMethod(methodName, HttpServletRequest.class, 22                     HttpServletResponse.class); 23             // 反射方法目標方法,也就是說,若是methodName爲add,那麼就調用add方法。
24             String result = (String) m.invoke(this, req, res); 25             // 經過返回值完成請求轉發
26             if(result != null && !result.isEmpty()) { 27  req.getRequestDispatcher(result).forward(req, res); 28  } 29         } catch (Exception e) { 30             throw new ServletException(e); 31  } 32  } 33 }

有了這個類以後,咱們本身就能夠建立一個controller的包

裏面的類繼承上面的BaseServlet類

 

OK,本次案例到此結束,更多的細節請去看github中的源代碼

若是有幸這篇隨筆能被某位路人朋友看到,筆者此謝謝觀看啦

相關文章
相關標籤/搜索