【JavaWeb】17-利用反射改写servlet与beanutils的使用

【Java基础知识 54】Java BeanUtils用法详解,附源码分析 目录一、org.apache.commons.beanutils.BeanUtils简介二、使用的前置条件三、添加pom四、代码实例1、为属性赋值2、拷贝对象,为对象赋值3、map转bean4、bean转map五、Apache的BeanUtils与Spring的BeanUtils 一、org.apache.commons.beanutils.BeanUtils简介 BeanUtils是Apache Commons组件的成员之一,主要用于简化JavaBean封装数据的操作。​ 简化反射封装参数的步骤,给对象封 阅读详情

通常我们使用sevlet利用servlet派生的时候会有大量的switch…case…这无疑增加了代码的冗余性,利用反射改写极大的简化了代码

定义一个父类的servlet,DispatcherServlet

public class DispatcherServlet extends HttpServlet {

	private static final long serialVersionUID = 935992874761738564L;

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		// 获取method参数
		String methodName = request.getParameter("method");
		
		// 判断method是否为空,如果没有method参数,或者method参数是空内容,我们调用默认指定的方法execute。
		if (methodName == null || methodName.trim().equals("")) {
			methodName = "execute";
		}

		// 创建本类的class对象
		Class<?> clazz = this.getClass();

		try {
			// 通过class对象获取对应的方法
			Method method = clazz.getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
			// 执行对应的方法
			method.invoke(this, request, response);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

其他的类只需要继承这个类并写自己的实现

@WebServlet("/")
public class IndexServlet extends DispatcherServlet {
	
	private static final long serialVersionUID = 1L;

	public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.getRequestDispatcher("/post?method=list").forward(request, response);
	}

}

使用BeanUtils封装实体类

pom依赖

<!-- beanutils -->
<dependency>
	<groupId>commons-beanutils</groupId>
	<artifactId>commons-beanutils</artifactId>
	<version>1.9.4</version>
</dependency>
1. form表单提交时,利用request.getParameterMap()去获取表单值的集合。
2.User user = new User();
3. BeanUtils.populate(user, request.getParameterMap())就可以实现将我们表单提交额数据直接封装到实体类中了。
Zephyr RTOS 嵌入式 C 编程 (使用嵌入式 RTOS POSIX API)8. Zephyr RTOS 与以太网、Wi-Fi 及 TCP/IP 支持的 BSD 函数包括:socket()、close()、recv()、recvfrom()、send()、sendto()、connect()、bind()、listen()、accept()、fcntl()(用于设置非阻塞模式)、getsockopt()、setsockopt()、poll()、select()、getaddrinfo()和 getnameinfo()。向开发板烧录代码也可能存在问题。可以通过调用 net_if_up() 开启网络接口 ,调用 net_if_down() 关闭接口。 阅读详情

相关推荐

表格数据学习的图神经网络综述

今天学习一篇发表在中科院一区期刊《ACM Computing Surveys》的综述文章《Graph Neural Networks for Tabular Data Learning: A Survey with Taxonomy & Directions》,该刊主要刊载计算机理论方法领域的系统性综述与教程论文,注重跨学科技术融合研究,最新的影响因子为28.0。本文的目的在于通过学习这篇文章,了解关于表格数据学习点图神经网络一些基础知识。

qq_41009600的博客 798

java轻量级架构开发实践_Java Servlet开发的轻量级MVC框架最佳实践

在Servlet开发的工程实践中,为了减少过多的业务Servlet编写,会采用构建公共Servlet的方式,通过反射来搭建轻量级的MVC框架,从而加快应用开发。前后端交互的基本形式一般来说,前端提交数据请求有三种基本方式,分别是表单、链接和Ajax1. 按钮1 2 用户3 提交4 2. 链接删除学生3. Ajax1 按钮2 3 functionfn(){4 $.post("/Bas...

weixin_36289211的博客 189

新手必看!BUUCTF-PWN题实战:从零搭建Kali环境到成功RIP栈溢出

本文为CTF二进制安全新手提供了一份详实的BUUCTF-PWN入门指南。内容涵盖从零搭建Kali Linux环境、安装配置pwntools等核心工具,到深入浅出地讲解栈溢出原理与汇编基础,并手把手带领读者完成一道名为“rip”的经典栈溢出题目实战,成功利用漏洞获取系统权限。

t8u9v0w1x的博客 504

servlet BaseServlet的创建,以及如何证明servlet是单例模式

abstract class BaseServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取method ...

91奔跑的蜗牛 431

Argoverse2数据集保姆级导入教程:从下载到预处理全流程解析

本文详细解析了Argoverse2数据集的完整导入流程,从环境配置、数据下载到预处理和高效加载策略。作为自动驾驶领域的标杆数据集,Argoverse2提供多模态传感器数据和高精地图信息,帮助研究者快速搭建数据处理流水线。文章包含实用代码示例和性能优化技巧,特别适合自动驾驶算法开发者参考。

weixin_29035405的博客 332

华北理工大学以升实验班蓝桥杯选拔赛题解

文章目录华北理工大学以升实验班蓝桥杯选拔赛题解A:期末考试题目描述题目讲解代码B:月份题目描述题目讲解代码C:打饭题目描述题目讲解代码D : 正弦波信号题目描述题目讲解代码E : 亲爱的长方形题目描述题目讲解代码F:挖金子题目描述题目讲解代码G : 金金的游戏题目描述题目讲解代码H : 区间和题目描述题目讲解代码详细视频讲解请关注华北理工大学b站账号。 华北理工大学以升实验班蓝桥杯选拔赛题解 A:期末考试 题目描述 Description 期末考试过去许多天了,如今成绩都出来了,那么现在让我们对成绩我分个类

Qq1739206233的博客 1127

一个Servlet类实现多个请求处理(Servlet优化)

一、优化Servlet类 思路说明: 对于刚接触Servlet来说,在我们在处理,jsp+servlet增删改查时,需要建立多个Servlet来处理,不同功能中的请求。 其实,我们只需要一个Servlet就可以处理多个请求,这只需要我们在jsp页面向servlet发送请求时候,并传递一个参数,这个参数值是用来标记此请求,进入BeanServlet类我们只需要对这个参数值进行判断,然后创建对应的处理请求的方法即可! 具体实现 jsp页面 <%@ page language="java" conten

. 5406

Python+Tableau 全流程数据分析实战:从数据清洗到商业洞察可视化

本文通过Python+Tableau完整演示电商销售数据分析流程。首先使用Python进行数据清洗(缺失值处理、异常值过滤等)和探索性分析(商品类别、时间趋势等),然后导入Tableau创建交互式可视化仪表盘。分析发现电子产品销售额最高但利润率低,美妆类利润率最优,东部地区销售表现最好。最终提出优化供应链、加强美妆推广等商业建议,展示了Python数据处理与Tableau可视化的高效配合。所有代码可直接运行,适合数据分析初学者和从业者实战参考。

weixin_44520581的博客 337

JAVA通用BaseServlet的产生和代码实现

BaseServlet的作用:   我们先写一个工具类:BaseServlet。   我们知道,写一个项目可能会出现N多个Servlet,而且一般一个Servlet只有一个方法(doGet或doPost),如果项目大一些,那么Servlet的数量就会很惊人。为了避免Servlet的“膨胀”,我们写一个BaseServlet。它的作用是让一个Servlet可以处理多种不同的请求。不同的请求调用S...

weixin_33700350的博客 296

C#上位机性能优化全攻略:彻底解决界面卡顿+多线程死锁+PLC数据延迟,产线实测稳定运行2年

一开始我们用的是网上找的零散优化代码,根本满足不了要求,后来花了2个月的时间,把之前27条产线的代码整理、重构、优化,做了一套这套方案上线后,连续稳定运行2年零3个月:界面响应时间稳定在50ms以内,多线程死锁率持续为0,PLC数据延迟稳定在150ms以内,系统可用率≥99.99%,帮客户一年省下了超过480万的停线损失、罚款损失和人工成本,客户第二年就把剩下的22条产线也全部交给我们做了,还介绍了3家同行。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 293

基于BERTopic模型的英文20新闻数据集主题聚类及可视化

BERTopic是基于深度学习的一种主题建模方法。BERT是一种用于NLP的预训练策略,它成功地利用了句子的深层语义信息。

Cachel Wood的博客 1460

java 反射getmethod_java 反射 getMethod传httpServletRequest报错

这个报错只有IDEA会有问题,在eclipse并不会出现这个问题。有哪位前辈可以帮我指点迷津吗?public class ServletDemo02 extends HttpServlet {private static final long serialVersionUID = 1L;public void doPost(HttpServletRequest request, HttpServl...

weixin_28694169的博客 558

内存越界一定会导致程序崩溃吗?详解内存越界

本文详细解释了内存越界不一定导致内存越界的问题,全面介绍了C++内存越界的相关内容。

dvlinker的技术专栏 2万+

工作中使用到的单词(软件开发)_第三版

====

sun0322 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Spring MVC中的DispatcherServlet的使用

Servlet 自定义的`Servlet`继承`HttpServlet`(Java服务端组件,接收HTTP请求,调用业务逻辑,完成HTTP响应) Servlet生命周期(容器管理) 1.实例化-构造器 默认第一访问,可配置程序启动就初始化 2.初始化-init() 3.运行-service()根据HTTP请求方法分发到一下方法中:...

可小辉的博客 2626

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

简单代码实现springMVC中DispatcherServlet基本功能

1.servlet简介 ​ servlet是一种运行在web服务器环境中的java程序,常见的使用形式是定义一个java类,继承HttpServlet类,重写HttpServlet的init()和doGet/doPost方法,之后在web.xml定义这个类的servlet响应路径,将该java类编译后的class文件放入tomcat服务器的/webapps/ROOT/WEB-INF/classes文件夹下,将web.xml文件放入/webapps/ROOT/WEB-INF文件夹下,启动tomcat,访问映

baidu_38304104的博客 655

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

dispatcherservlet详解

3.1、DispatcherServlet作用 DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。 具体请参考第二章的图2-1。   DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下: 1、文件上

4万+

Spring MVC 学习(3)DispatcherServlet原理(源码)、表单标签(CRUD)、数据转换、mvc:annotation-driven

1. 前端控制器DispatcherServlet 架构 doDispatch()执行过程 过程: (1) 所有的请求过来,DispatcherServlet收到请求, (2) 调用doDispatch()方法进行处理 getHandler():根据当前请求地址找到能处理这个请求的目标处理器类(处理器) 根据当前请求在HandlerMapping中找到这个请求的映射信息,获取到目标处理器类 getHandlerAdapter():根据当前处理器类获取到能执行这个处理器方法的适配器(AnnotationM

m0_38140207的博客 650

【JavaWeb】-- Servlet优化(dispatcherServlet)

在servlet中使用反射技术,规定operate的值和方法名一致,那么接收到operate的值是什么就表明我们需要调用对应的方法相应,如果找不到对应方法则抛出异常,但是还是存在一定问题:每个servlet都存在类似的反射方法。将一系列的请求都对应一个servlet,通过一个operate的值来决定调用servlet中的哪个方法,使用switch,但是随着项目的业务规模扩大,会有很多servlet,这样就会充斥着大量的switch,效率低下。先拿到所有的方法,再遍历找到和operate相同的方法。...

个人博客 737

【JavaWeb】简单实现DispatcherServlet

【JavaWeb】简单实现DispatcherServlet

Javaer000的博客 504

仿springmvc流程自写DispatcherServlet

以框架的运行模式,自我模拟

qq_51621767的博客 264

springMVC源码-DispatcherServlet源码

DispatcherServlet介绍 DispatcherServlet 就是一个servlet 类,无非就是包装起来根据url能够映射找到我们的springMVC中定义的请求方法。 DispatcherServlet 的继承关系 DispatcherServlet 继承 FrameworkServlet 继承 HttpServlet 面向对象基本思想:重写、先走父类,再走子类 所以:先看HttpServlet类再找到我们最后的子类 DispatcherServlet 源码流程分析 框架流程 Sprin

weixin_44044929的博客 782

DispatcherServlet 中央调度器的由来,手写简单的DispatcherServlet

Servlet 版本一: 在不使用 DispatcherServlet 之前我们通常在 web.xml 文件中注册 Servlet 接口实现类来完成对客户请求的处理,且每一个请求对应一个 Servlet接口实现类 <servlet> <servlet-name>Demo01Servlet</servlet-name> <servlet-class>com.Servlet.www.Demo01Servlet</servlet-clas

qq_48010634的博客 1118

DispatcherServlet最全详解

【代码】DispatcherServlet最全详解。

小豪的博客 1867

SpringMVC核心分发器DispatcherServlet分析[附带源码分析]

目录 前言 DispatcherServlet初始化过程 DispatcherServlet处理请求过程 总结 参考资料 前言 SpringMVC是目前主流的Web MVC框架之一。 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html 本文将...

weixin_33730836的博客 318

使用反射手写自己的DispatchServlet

在此诞生一个属于自己的DispatchServletSpring MVC 的核心DispatchServlet 本文章只是让我们能够更详细的了解DispatchServlet的大致流程 Spring MVC 的核心DispatchServlet 大致做了哪些事情: 拦截请求 解析url 根据解析后的url去执行具体方法 返回数据,进行页面跳转 知道了大致流程,使用反射来实现一下这个过程, 项目目录: DispatchServlet 类 package cn.servlet; impo

qq_44621891的博客 390
上一篇: 【JavaWeb】16-Filter过滤器
下一篇: 【JavaWeb】18-listerner监听器
JeffHan^_^
博客等级 码龄7年 1万+粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值