開發工具eclipsehtml
jdk-1.8.0_72前端
tomcat-9.0.5java
前端目錄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中的源代碼
若是有幸這篇隨筆能被某位路人朋友看到,筆者此謝謝觀看啦