笔者最近学完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实现用户信息的增删查改的更多相关文章

  1. Java连接MySQL数据库及简单的增删查改操作

    主要摘自 https://www.cnblogs.com/town123/p/8336244.html https://www.runoob.com/java/java-mysql-connect.h ...

  2. 基于SpringMVC+SpringJDBC的用户管理系统(增删查改)

    鉴于MyBatis暂时不会用,所以用刚学的SpringJDBC代替,也很简洁.以下贴出几个重要的代码. 1.UserDaoImpl数据库操作实现类 package com.wxy.dao.impl; ...

  3. java操作ElasticSearch(es)进行增删查改操作

    有时间是要了解一下ES这个东西的~ ---------------------------------------------------------------------------------- ...

  4. 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  5. java实现简单的数据库的增删查改,并布局交互界面

        一.系统简介 1.1.简介  本系统提供了学生信息管理中常见的基本功能,主要包括管理员.管理员的主要功能有对学生信息进行增加.删除.修改.查找等操作,对信息进行管理,对信息进行修改.查找等操作 ...

  6. 在MVC中使用泛型仓储模式和依赖注入实现增删查改

    标签: 原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository ...

  7. java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)

    1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...

  8. 后端Spring Boot+前端Android交互+MySQL增删查改(Java+Kotlin实现)

    1 前言&概述 这篇文章是基于这篇文章的更新,主要是更新了一些技术栈以及开发工具的版本,还有修复了一些Bug. 本文是SpringBoot+Android+MySQL的增删查改的简单实现,用到 ...

  9. 4.在MVC中使用仓储模式进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-using-the-repository-pattern-in-mvc/ 系列目录: ...

随机推荐

  1. 密码学系列之:明文攻击和Bletchley Park

    目录 简介 crib和明文攻击 布莱奇利公园(Bletchley Park) 简介 明文攻击就是指已经知道了部分明文和它对应的加密后的字段,从而可以推测出使用的加密手段或者密码本.明文攻击这个故事还要 ...

  2. 网络QoS的平衡之道——音视频弱网对抗策略介绍

    作者:网易智企云信资深音视频引擎开发工程师 王兴鹤 随着AI和5G的到来,音视频应用将变得越来越广泛,人们对音视频的品质需求也越来越高,视频分辨率已经从高清发展为超高清.VR,视频帧率也已出现60fp ...

  3. 深入理解Java虚拟机(十)——线程安全与锁优化

    什么是线程安全 当多个线程同时访问一个对象的时候,不需要考虑什么额外的操作就能获取正确的值,就是线程安全的. 线程安全的程度 1.不可变 不可变的对象一定是线程安全的,因为值始终只有一个. final ...

  4. GaussDB(DWS)磁盘维护:vacuum full执行慢怎么办?

    摘要:在数据库中用于维护数据库磁盘空间的工具是VACUUM,其重要的作用是删除那些已经标示为删除的数据并释放空间. vacuum的功能 回收空间 数据库总是不断地在执行删除,更新等操作.良好的空间管理 ...

  5. JWT 原理

    1.COOKIE使用和优缺点 参考博客:https://baijiahao.baidu.com/s?id=1608021814182894637&wfr=spider&for=pc 用 ...

  6. HashMap 中 Key 类型的选择

    什么对象可以作为HashMap的key值? 从HashMap的语法上来讲,一切对象都可以作为Key值.如:Integer.Long.String.Object等.但是在实际工作中,最常用的使用Stri ...

  7. Vagrant批量安装CentOS7

    环境准备 下载virtualbox https://download.virtualbox.org/virtualbox/6.1.10/VirtualBox-6.1.10-138449-Win.exe ...

  8. CentOS 7 mini版本安装后必须要做的几件事

    Linux家族非常的庞大,诸如Debian.Ubuntu.RedHat.CentOS.ArchLinux.Gentoo,甚至还有国内比较有名的Deepin,都是Linux家族闪耀的明星.根据实际需求涉 ...

  9. vue第十七单元(电商项目逻辑处理,电商划分)

    第十七单元(电商项目逻辑处理,电商划分) #课程目标 1.什么是电商项目 2.什么是B2B,B2C,C2C模式,常见的电商项目 3.移动端电商项目常见的逻辑处理 4.[知识扩展]传统系统架构及分布式系 ...

  10. 神奇的BFC

    BFC是什么? 块格式化上下文(Block/box Formatting Context,BFC) 是Web页面的可视CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域 ...