笔者最近学完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中的源代码

如果有幸这篇随笔能被某位路人朋友看到,笔者此谢谢观看啦

  

转载于:https://www.cnblogs.com/secret-ChenC/p/9278811.html

JAVA原生mvc实现用户信息的增删查改相关推荐

  1. JAVA学生信息管理系统——增删查改

    1.首先添加学生类 2.再实现增删查改 在编程中遇到的小问题: 1.case语句中代码重复的话,可以注释掉,程序依然会向下执行 2.编写查询时,要考虑没有学生的情况 3.编写增加和修改和查询时,要以唯 ...

  2. 使用java图形界面实现简单的数据库增删查改

    1.确定数据库连接类型 这里我使用的是SqlServer数据库 如果需要修改数据库的连接类型,可以自己修改数据库的连接 package com.andios.ForFunction;import ja ...

  3. Java小案例(二) 用数组实现增删查改排序

    文章目录 案例一 案例二 案例三 案例四 案例五 案例一 Student.Java package curd;public class Student {private String stuid;pr ...

  4. ASP.NET 电影票信息的增删查改

    题目 1.使用Code First技术创建一个Movie数据模型. public class Movie{public int ID { get; set; } //电影编号public string ...

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

    ElasticSearch(名称太长,后面简称ES)作为一个搜索引擎,目前可谓是如日中天,几乎和solr齐驾并驱.关于他能做什么,跟云计算有什么关系,在此不再描述.但是ES的官方文档,特别是关于jav ...

  6. 初学jsp课,一个基于jsp+javabean+servlet+sql server小型房源网站,实现了用户表,房源表,及留言板的增删查改。使用deamwear编译器

    1 设计目的 <Web应用开发课程设计>是实践性教学环节之一,是<Web程序设计>课程的辅助教学课程.通过课程设计,使学生掌握Web网站的基本概念,结合实际的操作和设计,巩固课 ...

  7. 【超详细Django网站开发过程7】便利店管理系统之——利用管理员用户对客户数据进行增删查改

    提到数据库,就免不了对信息的增删查改,今天来做一个管理员用户对顾客数据的增删查改功能. 导航 1.增删查改中的--"查"操作如下: 2.增删查改中的--"增"操 ...

  8. (4) hibernate增删查改+批量操作+类似Mybatis动态sql

    简介 采用spring + hibernate + freemaker+ maven搭建起来的一个hibernate增删查改和 类似mybatis动态sql查询的一个案例 增删查改demo + 动态s ...

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

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

最新文章

  1. python编写脚本方法_python 定时器,实现每天凌晨3点执行的方法
  2. java方法示例注释 @_Java 8中的功能接口是什么? @功能注释和示例
  3. 计算机网络层实验路由表苏州科技,苏州科技大学计算机网络实验报告课案.docx...
  4. 欧拉:他停止了生命和计算
  5. BZOJ 2019 [Usaco2009 Nov]找工作:spfa【最长路】【判正环】
  6. HTML+CSS制作3D步数统计界面
  7. Caffe傻瓜系列(1):数据层及参数
  8. Java虚拟机——虚拟机类的加载机制
  9. 只需要几行代码就可以轻松实现OCR图片转文字
  10. MR 眼镜会取代手机成为下一代终端,中国产业有机会领先世界
  11. 在地化和本土化的区别_本地化、全球化和国际化:区别何在?
  12. Stewart六自由度平台正反解算法
  13. 台式电脑主板插线步骤图_台式机电源线接法图解(电脑主板接线图解高清图)...
  14. uni.getUserProfile获取的微信昵称是微信用户,头像获取的是默认头像
  15. FPGA--ZCU106通过SFP+/SGMII模块传输数据-第二讲(全网唯一)
  16. Greenplum 分布键 distribute hash分布和随机分布
  17. 趣味中秋,用动画字符来贺岁佳节
  18. 企业微信---第三方应用开发 笔记
  19. POI列子:替换文本框值
  20. 对PES NALU 帧的疑惑

热门文章

  1. Boost:Boost概念的function_requires()的测试程序
  2. boost::contract模块实现loop的测试程序
  3. Boost:bind绑定和数据成员的测试程序
  4. Boost:boost::bimaps::unordered_multiset_of的测试程序
  5. Boost:bind绑定作为一个组合的测试程序
  6. ITK:减去两个图像
  7. DCMTK:DcmDecimalString类的测试程序
  8. VTK:图表之DepthFirstSearchIterator
  9. OpenCV转换PyTorch分类模型并使用OpenCV C ++启动
  10. C语言实现QR(正交三角)分解(附完整源码)