web基础之自动处理表单填装javabean

2023-10-26

 http://hi.baidu.com/smilelive/blog/item/e31b8f50ea1ef212367abe77.html

 

 

web开发中,肯定会设计到表单的提交,而表单一般都设计到一个表,表又对应一个javabea。一般我们都在重复大量的request.getParameter();和x.setXX();这种操作。那么有没有什么办法可以简化上面的操作?

假定我们有个User类,属性name,sex,age;一个jsp或html页面,有一个表单表单属性name,sex,age和javabean对应。一个处理表单上传的servlet。

这里主要说这个Servlet的功能:

Enumeration en = request.getParameterNames();//获得所有请求的参数
User user = new User();
Field[] fs = user.getClass().getDeclaredFields();//获得user类的所有属性列表
while (en.hasMoreElements()) {//遍历请求参数
String param = en.nextElement().toString().trim();//获得属性名
for (int i = 0; i < fs.length; i++) {//遍历user类的属性列表
if (!fs[i].getName().equals(param)) {//如果属性名和请求参数名不等则继续,这里这样写了为了减少if else的嵌套;
continue;
}
fs[i].setAccessible(true);//设置属性为可改变,反射中private的属性是不能被访问的,设置Accessible为true则该属性可访问
Object value = null;
if (fs[i].getType().getName().equals("java.lang.String")) {//判断属性类型一般的javabean属性类型都要定义成为八大基本数据类型和八大基本类型的扩展数据类型,最多再加上Date和Time等常用数据类型。
value = request.getParameter(param).toString();
} else if (fs[i].getType().getName().equals("int")) {
value = Integer.parseInt(request.getParameter(param).trim());
}
try {
fs[i].set(user, value);//设置属性的值
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
break;
}
}

System.out.println(user.getName()+"\t"+user.getAge()+"\t"+user.getSex());

这样的一个Serlvet只能设置一个类的值,想设置多个类的值,可以在url后面加一个参数,比如xx.do?jb=com.up72.bean.User,Servlet对象的创建修改为

String className = request.getParameter("jb");

Object javabean = Class.forName(className).newInstance();

其他操作不变。

当然,更好的办法是写一个配置文件,通过读取配置文件来初始化bean,这个还前面的简单Servlet结合起来基本就可以完成简单的struts的核心控制器的功能了。不过还有文件上传的问题没有解决。

 

 

借助mootools 快速开发一个重用 ajax 提交方式
http://jhaij.iteye.com/blog/1136595
(这篇文章里演示了如何使用自动封装)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

web基础之自动处理表单填装javabean 的相关文章

  • 使用 hg 存储库作为网站

    这与我的安全问题有些相关here https stackoverflow com questions 2361626 security deny access to hg via mod rewrite 对实时网站使用 hg Mercuri
  • 在Struts1.3中如何处理多个FormBean属性到action

    我正在使用Struts1 3 我有Jsp页面 该页面显示该页面上的员工列表 为此 我所做的是 我在该操作中有一个操作 我正在调用一个返回列表的函数 并且我在会话中将这些列表设置为 session setAttribute Constant
  • 使用 Java EE 表单身份验证登录后访问用户详细信息

    我已经实现了一个 Java EE 安全领域 如果用户尝试访问受保护的资源 该安全领域会将用户重定向到 login jsp 假设用户想要访问受保护的网址 http mywebapp shopping cart映射到 ShoppingCartS
  • Foreach(spring) 在 JSP 中不起作用

    我尝试做一些简单的事情 但没有成功 我错过了一些明显的事情吗 我的jsp
  • 使用内容安全策略防止 Internet Explorer 11 上的内联 JavaScript

    是否可以使用 ASP NET WebForm 上的 CSP 来阻止 Internet Explorer 11 上的内联 JavaScript 我知道 IE 11 不支持内容安全策略级别 2 但它支持级别 1 0 我尝试了很多方法 但没有明确
  • 如何从JSP中获取java类的对象

    我有一个结果jsp页面 它打印java类的字符串变量 有人能给我任何想法吗 我使用简单的 httpServlet 作为操作类 Class A String name public void setName this name callMet
  • Jekyll 在子网站上生成静态网站?

    是否可以将 Jekyll 放在 GitHub 上托管的网站的单个部分上 即是否可以让 example github io 成为常规站点 而 example github io blog 由 Jekyll 静态生成 我相信可以通过创建另一个名
  • 在 servlet 中的 URL 中使用变量的最简单方法

    在 servlet 中的 URL 中使用变量的最简单方法是什么 Eg http somesite com MyServlet ID 这就是所谓的路径信息 您可以使用HttpServletRequest getPathInfo http ja
  • 如何在odoo中重写js函数

    我想加载 shop checkout url 函数是 odoo define change info order website sale change info order function require use strict oe w
  • 防止浏览器弹出警告窗口

    我正在尝试在新窗口中打开 jsp 页面 使用 JavaScriptwindow open产生浏览器警告 并且在某些情况下 firefox 将默认阻止弹出窗口 有没有办法解决这个问题 这不是恶意应用程序 它是内部用户工具 大多数浏览器不会阻止
  • 自动更改时 onChange 事件不起作用

    我在一个选择框 usageDisplays 上有一个 onChange 事件 它根据第一个选择框的选定值填充下一个选择框
  • System.Web.HttpException 无法加载类型“[命名空间].???”

    这开始于无法加载类型 全局 错误 在我尝试了一些方法后 没有找到删除 Global asax 文件的位置 现在错误是无法加载类型 namespace 在哪里 是我尝试加载的每个页面的类名 该网站 在 VS2008 本地开发计算机中执行时 工
  • 在 JSP/JSTL/EL 中访问集合的大小[重复]

    这个问题在这里已经有答案了 我有一个名为的列表变量services在我的 JSP 页面中 如果列表中的元素超过 1 个 我需要向页面添加一些标记 我想做的是
  • Java selenium - 如何在 TimeoutException 之后正确刷新网页?

    ChromeOptions options new ChromeOptions options addExtensions new File extension 6 2 5 0 crx ZenMate options addExtensio
  • Firebase Auth - 最近登录多长时间

    我有一个个人资料选项卡 用户可以在其中按编辑并编辑他们的个人资料 我只想在必要时才需要他们的密码 所以想知道用户登录的时间是多少毫秒 这使得它不是最近登录 其中firebase会抛出错误 auth requires recent login
  • Spring Boot 中的 JSTL 支持

    虽然我知道有JSP 支持中的一些限制 http docs spring io spring boot docs current reference html boot features developing web applications
  • 使用 php ping 网站

    我想创建一个 php 脚本 它将 ping 一个域并列出响应时间以及请求的总大小 这将用于监控网站网络 我尝试过curl 这是我到目前为止的代码 function curlTest2 url clearstatcache return if
  • MVC4更新部分视图

    我正在开发一个简单的 MVC 应用程序 我有主视图 部分视图和控制器 这是我的主要视图 model partitalViewTest Models Qset div class transbox style height 1 Html Pa
  • 迁移到 Jakarta EE:无法找到 URI 的 taglib [c]:[jakarta.tags.core] [重复]

    这个问题在这里已经有答案了 我尝试从 Spring 5 升级到 Spring 6 并收到以下错误 Unable to find taglib c for URI jakarta tags core 我的 pom 中有以下内容
  • IIS 8 HTTPS/需要 SSL 导致超时错误

    尝试通过 IIS 8 通过 SSL 发布网站 但出现超时错误 任何帮助表示赞赏 采取的步骤 已验证该网站可以通过 HTTP 访问 http xxx xxx xxx xxx有效 此时使用 IP 地址 如果重要的话 IIS gt 服务器证书 g

随机推荐

  • C# 获取本机连接的所有 串口设备名称 与 串口号

    代码 class Program static void Main string args GetComList private static void GetComList try using ManagementObjectSearch
  • vscode添加自定义的用户代码片段

    在vscode中添加代码片段 选择 新建全局代码片段文件 然后输入文件名 随便输入 然后会生成文件 安装文件中的Example就可以添加代码片段 里面各个字段的含义 Print to console 代码片段的名称 不同代码片段需要不同 在
  • 中断请求级

    返回 上一页 下一页 中断请求级 Windows NT为每个硬件中断和少数软件事件赋予了一个优先级 即中断请求级 interrupt request level IRQL IRQL为单CPU上的活动提供了同步方法 它基于下面规则 一旦某CP
  • PADS Logic BOM Output

    Dim fn As String Sub Main fn ActiveDocument If fn Then fn Untitled End If tempFile DefaultFilePath temp txt Open tempFil
  • markdown中图片靠左对齐或靠右对齐

    第一次在markdown中写博客 发现插入图片默认是居中显示的 一开始我是按下面这种方式插入图片的 当图片无法显示的时候 显示的文字 图片URL 然后图片默认居中显示 然后就一通百度 有的说可以这样写 div align left 这里写图
  • java unreachable code不可达代码

    例子 static int test int testval int target 1 if testval gt target System out println 1 return 1 下边是永远不会达到的代码 所以编译器提示错误 un
  • 【Docker】配置容器的hosts来实现域名指定服务

    需求 在使用docker chrome进行selenium自动化测试的时候 希望客户端能够通过某种形式 让我们的case跑到测试环境取 这时候有两个方式 1 给浏览器使用代理 这里不讲 前面有个文章已经说过了 2 修改执行的selenium
  • pyqt_点击button("添加")弹出新的页面

    目标 通过点击主窗口中的button弹出另一个窗口页面 首先需要注意的是 两个窗口不能是同一类型 否则会崩溃 并保存为名称不同的ui文件 并使用UIC工具转成 py文件 因此在目前文件夹中既有mainwindow又有dialog窗体形式的界
  • openstack-keystone入门

    作用 身份验证 令牌发放和校验 服务列表 用户权限定义 不适合新手看 想到哪儿写到哪儿 写一些关于自己在看书学习的过程中对一些知识的理解 Service决定每个Role能干什么事情 而每个User可以给他分配多个Role 进而具备了多服务的
  • 【yolo】yolo的txt标签转VOC格式的xml标签

    脚本介绍 1 可以为原图提供自动标注的功能 例如 需要标注10000 的数据 可以人工标注1000 然后训练yolo模型 再用detect py用模型对剩下来的原图进行推理 推理中保存txt格式的推理结果 然后可以采用本代码 对剩下来的原图
  • 【Linux】基本指令(三)

    目录 一 head指令 二 tail指令 三 date指令 3 1显示时间 3 2时间戳 四 cal指令 五 find指令 六 grep指令 七 zip unzip指令 一 head指令 head英文意思是头部 顾名思义 head就是显示文
  • 刷脸支付重磅来袭是业界的口碑代表

    近两年来 刷脸支付发展如火如荼 宁波 长沙等多个城市相继开展线下刷脸支付试点 建设银在其网点的ATM机推出刷脸取款 光大银也将人脸识别应用于账户登陆 转账 线上融资等场景 支付宝 财付通等第三方支付公司也争相推出刷脸支付设备 随着移动支付的
  • [Event] Linux con Japan 2015

    日本每年都举办一次LinuxCon 下面是今年的 Event 及对应的 ppt http events linuxfoundation jp events linuxcon japan 粗粗看了一下 竟然还有这么一个主题 How China
  • C程序设计的抽象思维-递归过程-砝码称重

    问题 在狄更斯时代 商人们用砝码和天平来称量商品的重量 假设你仅仅有几个砝码 就仅仅能精确地称出一定的重量 比如 假定仅仅有两个砝码 各自是1kg和3kg 仅仅用1kg的砝码能够称出1kg重量的商品 仅仅用3kg的砝码能够称出3kg重量的商
  • 关于typescript的数据类型的那一些事~

    以下介绍typeScript的几种数据类型 分别是Boolean number string array object any 1 ts中boolean的使用 var boolean Boolean boolean true console
  • 金蝶客户端显示服务器不是有效的,金蝶 服务器不是有效的 请重新设置

    金蝶 服务器不是有效的 请重新设置 内容精选 换一换 Web服务端证书用于客户端浏览器和Web服务器之间的通讯 实现数据信息在客户端和Web服务器之间的加密传输 可以防止数据信息的泄露 为提高安全性 建议替换成自己的证书 并及时更新证书 保
  • 利用Petalinux定制Linux系统(ZYNQ)

    目录 一 创建vivado硬件平台 二 创建Petalinux工程 三 配置Linux内核 四 设置根文件系统 五 配置设备树文件 六 编译petalinux工程 七 制作SD卡启动文件 八 开发板启动设置 九 打开串口上位机 进入 Lin
  • 分布式缓存Redis之Java客户端

    写在前面 本学习教程所有示例代码见GitHub https github com selfconzrr Redis Learning 目前Redis的Java客户端主要有两种 Jedis Redission 个人感觉Jedis用的广泛一些
  • 数据分析--Numpy--去重与重复

    1 unique函数 通过unique函数可以找出数组中的唯一值并返回已经排序的结果 arr np array 1 1 1 2 2 3 3 res np unique arr print res 1 2 3 2 tile函数 np tile
  • web基础之自动处理表单填装javabean

    http hi baidu com smilelive blog item e31b8f50ea1ef212367abe77 html web开发中 肯定会设计到表单的提交 而表单一般都设计到一个表 表又对应一个javabea 一般我们都在