笔者最近学完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. Go语言的context包从放弃到入门

    目录 一.Context包到底是干嘛用的 二.主协程退出通知子协程示例演示 主协程通知子协程退出 主协程通知有子协程,子协程又有多个子协程 三.Context包的核心接口和方法 context接口 e ...

  2. Spring自带的定时任务框架Schedule的优缺点及使用

    spring自带的定时任务框架的有点:简单,拆箱即用 spring自带的定时任务框架的缺点: 不支持集群:为避免重复执行的问题 不支持生命周期统一管理:不重启服务情况下关闭,启动任务 不支持分片任务: ...

  3. 微信小程序 rich-text 修改照片

    <view> <rich-text nodes="{{delcon}}" /> </view> data: { delcon:'' }, var ...

  4. k8s ingress - traefik

    前面提到过 k8s 的 ingress 有 ingress-nginx,traefik,haproxy 等多种.今天来实践一下 tarefik. 闲言少叙,直接上代码. # cat traefik.y ...

  5. Jupyter Notebook在多个虚拟环境配置与使用

    1 问题描述 使用Anaconda配置了包括Pytorch.Tensorflow等多个虚拟环境后,依然无法使用Jupyter Notebook选择不同的虚拟环境运行代码,问题如下图所示. 2 解决方法 ...

  6. Javascript JQuery select选择之Safari与Firefox

    发现在苹果IOS手机及Safari浏览其中,如下代码不工作. $("#users option[value='hello']").attr("selected" ...

  7. Spring Boot 简单入门案例

    第一:打开idea 找到spring  Initializr 第二:点击Next 在点击下一步 找到web之后勾选第一个spring web 就完成了 在写一个类 点击运行 结果如下:

  8. 在wildfly中使用SAML协议连接keycloak

    目录 简介 OpenID Connect和SAML SAML的工作流程 在keycloak中使用SAML 准备wildfy和应用程序 简介 我们知道SSO的两个常用的协议分别是SAML和OpenID ...

  9. 从苹果BigSur官网学点东西

    从苹果BigSur官网学点东西 Awsome配色 这个 蓝紫渐变大底 + 简洁的 矩形状字块 + 粗细层次字形,看着就蛮舒服. 看看css配色: .section-hero div[data-comp ...

  10. 关于 ReentrantLock 中锁 lock() 和解锁 unlock() 的底层原理浅析

    关于 ReentrantLock 中锁 lock() 和解锁 unlock() 的底层原理浅析 如下代码,当我们在使用 ReentrantLock 进行加锁和解锁时,底层到底是如何帮助我们进行控制的啦 ...