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


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

環境准備:

開發工具eclipse

jdk-1.8.0_72

tomcat-9.0.5

 

前端部分:

1.自己手寫了一套樣式

2.使用ajax交互

 

目錄結構:

java目錄:

 

前端目錄

 

 

 

需求分析:

1.能夠實現用戶的登錄和注冊

2.能夠實現對用戶信息的增刪查改

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

 

由於筆者不是很擅長寫界面,所以后台界面部分不是寫的很好看,這里就先預覽一遍

 

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

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

首先我們都知道HttpServlet這個類中已經幫我們實現了doGet和doPost,可是如果請求的后台url一多,不可能每個都單獨寫成一個類,所以這兩個方法根本不可取,我們要的是一個類中的多個方法都能被我們以url傳參的形式訪問。

例如: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中的源代碼

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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM