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中的源代码
如果有幸这篇随笔能被某位路人朋友看到,笔者此谢谢观看啦
JAVA原生mvc实现用户信息的增删查改的更多相关文章
- Java连接MySQL数据库及简单的增删查改操作
主要摘自 https://www.cnblogs.com/town123/p/8336244.html https://www.runoob.com/java/java-mysql-connect.h ...
- 基于SpringMVC+SpringJDBC的用户管理系统(增删查改)
鉴于MyBatis暂时不会用,所以用刚学的SpringJDBC代替,也很简洁.以下贴出几个重要的代码. 1.UserDaoImpl数据库操作实现类 package com.wxy.dao.impl; ...
- java操作ElasticSearch(es)进行增删查改操作
有时间是要了解一下ES这个东西的~ ---------------------------------------------------------------------------------- ...
- 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...
- java实现简单的数据库的增删查改,并布局交互界面
一.系统简介 1.1.简介 本系统提供了学生信息管理中常见的基本功能,主要包括管理员.管理员的主要功能有对学生信息进行增加.删除.修改.查找等操作,对信息进行管理,对信息进行修改.查找等操作 ...
- 在MVC中使用泛型仓储模式和依赖注入实现增删查改
标签: 原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository ...
- java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)
1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件 准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...
- 后端Spring Boot+前端Android交互+MySQL增删查改(Java+Kotlin实现)
1 前言&概述 这篇文章是基于这篇文章的更新,主要是更新了一些技术栈以及开发工具的版本,还有修复了一些Bug. 本文是SpringBoot+Android+MySQL的增删查改的简单实现,用到 ...
- 4.在MVC中使用仓储模式进行增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-using-the-repository-pattern-in-mvc/ 系列目录: ...
随机推荐
- 团队作业4-Day2
团队作业4-Day2 项目git地址 1. 站立式会议 2. 项目燃尽图 3. 适当的项目截图(部分) 4. 代码/文档签入记录(部分) 5. 每人每日总结 吴梓华:今日进行了小程序与网页代码编写的区 ...
- AcWing 309. 装饰围栏
题目链接 这道题与下一章的数位\(dp\)解题思路十分一致. 把寻找答案变成按位(并且是字典序从小到大)枚举当前这一位可以填的情况. 通过\(dp\)预处理的信息告诉我们可行性,就可以把答案紧逼到一个 ...
- hiveSQL和MySQL区别
1.hive支持按行分割,按字段分割,如按','分割: lateral view explode(split( , ',')) 2.hive不支持等值连接,即不支持where a.id = b.id的 ...
- 云服务器 ECS Linux 安装 VNC Server 实现图形化访问配置说明
阿里云官方公共 Linux 系统镜像,基于性能及通用性等因素考虑,默认没有安装 VNC 服务组件.本文对常见操作系统下的 VNC Server 安装配置进行简要说明. 本文中仅讨论VNC的安装,关于图 ...
- Robot Framework+adb框架自动化测试Android设备案例⑹——源码地址、测试报告
一.源码地址 GitHub:https://github.com/xiongye105554598/DVR8010_AutoTest 二.测试报告
- 最详细Python批量字典暴力破解zip密码
工具破解 前两天在网上下来了一波项目案例,结果全是加密的压缩包,于是去网上找了一个压缩包破解的工具 苦于工具破解太慢,一个压缩包要好久,解压了三个之后就放弃了,准备另寻他法 密码字典 巧的是破解的三个 ...
- C++模板元编程----选择排序
目录 目录 前言 代码详解 数据的结构 数据的操作 分割向量 合并向量 寻找最大值 排序 总结 前言 模板在C++一直是比较神秘的存在.STL和Boost中都有大量运用模板,但是对于普通的程序员来说, ...
- STL——容器(List)List 的数据元素插入和删除操作
push_back(elem); //在容器尾部加入一个元素 1 #include <iostream> 2 #include <list> 3 4 using namespa ...
- Consul的使用
Consul的使用 生产部署中,Consul安装在要注册服务的每个节点上.Consul有两种运行模式:客户端和服务器端,每个Consul数据中心必须至少有一个服务器,负责维护Consul状态,为了 ...
- [日常摸鱼]51nod1237-最大公约数之和V3-杜教筛
题意:求$\sum_{i=1}^n \sum_{j=1}^n gcd(i,j),n<=1e10$ 之前刚好在UVA上也做过一个这样求和的题目,不过那个数据范围比较小,一开始用类似的方法 $ans ...