- 浏览: 6351721 次
- 性别:
- 来自: 一片神奇的土地
文章分类
- 全部博客 (745)
- JQuery (25)
- JS (33)
- 数据库 (59)
- Java基础 (56)
- JSON (8)
- XML (8)
- ireport (7)
- 设计模式 (10)
- 心情 (14)
- freemarker (1)
- 问题 (15)
- powerdesigner (2)
- CSS (15)
- DWR (4)
- tomcat (16)
- Hibernate (12)
- Oracle (7)
- Struts (7)
- Spring (34)
- JSP (23)
- 需学习 (64)
- 工具类库 (63)
- Maven (14)
- 笔试题 (34)
- 源码学习 (31)
- 多线程 (39)
- Android (32)
- 缓存 (20)
- SpringMVC (14)
- jQueryEasyUi (12)
- webservice-RPC (13)
- ant (1)
- ASP.NET (10)
- 正则表达式 (3)
- Linux (15)
- JBoss (1)
- EJB (3)
- UML (2)
- JMS (3)
- Flex (8)
- JSTL (2)
- 批处理 (5)
- JVM (16)
- 【工具】 (16)
- 数据结构 (29)
- HTTP/TCP/Socket (18)
- 微信 (1)
- tomcat源码学习 (15)
- Python (30)
- 主机 (2)
- 设计与架构 (19)
- thrift-RPC (2)
- nginx (6)
- 微信小程序 (0)
- 分布式+集群 (12)
- IO (1)
- 消息队列 (4)
- 存储过程 (8)
- redis (9)
- zookeeper (5)
- 海量数据 (5)
最新评论
-
360pluse:
技术更新,战术升级!Python爬虫案例实战从零开始一站通网盘 ...
Python爬虫实战:Scrapy豆瓣电影爬取 -
18335864773:
推荐用 pageoffice 组件生成 word 文件。
JAVA生成WORD工具类 -
jjhe369:
LISTD_ONE 写道起始地址为163.135.0.1 结束 ...
IP地址与CIDR -
baojunhu99:
private final int POOL_SIZE = 5 ...
使用CompletionService获取多线程返回值 -
LovingBaby:
胡说,javascript 运行时是单线程的,event lo ...
Ajax请求是否可以实现同步
1.总结:
1、注意页面的name为emails.host,这样才可把 group和相应属性分开
2、作为Value的Map需转化为JSON类型数据后再插入数据库
3、把从数据库中读出的数据先转换为JSON类型,再由JSON类型转换为Map类型,最后放入作为Map的Setting中
2、作为Value的Map需转化为JSON类型数据后再插入数据库
3、把从数据库中读出的数据先转换为JSON类型,再由JSON类型转换为Map类型,最后放入作为Map的Setting中
三个模块共用一个确定按钮!
页面如下:
<table class="form-table"> <tr> <td class="label"> 主机: </td> <td> <input type="text" name="emails.host" value="${emails.host}"/> </td> </tr> <tr> <td class="label"> 发信邮箱 </td> <td> <input type="text" name="emails.username" value="${emails.username}"/> </td> </tr> <tr> <td class="label"> 密码: </td> <td> <input type="password" name="emails.password" value="${emails.password}"/> </td> </tr> </table>
public String save(){ HttpServletRequest request = ServletActionContext.getRequest(); Enumeration<String> names = request.getParameterNames(); //request.getParameterNames()所返回的枚举Enumeration类 Map<String,Map<String,String>> settings = new HashMap<String, Map<String,String>>(); while(names.hasMoreElements()){ String name= names.nextElement(); String[]name_ar = name.split("\\."); //name.split(regex) 如果有特殊符号,里面的string是正则表达式,需转义 //此处name为comments.pageSize,故以.分割,需转义 //分割后的name_ar为:[comments, pageSize] if(name_ar.length!=2) continue; String groupName = name_ar[0]; String paramName = name_ar[1]; String paramValue = request.getParameter(name); Map<String,String> params = settings.get(groupName); if(params==null){ params = new HashMap<String, String>(); settings.put(groupName, params); } params.put(paramName, paramValue); } settingService.save( settings ); this.msgs.add("配置修改成功"); this.urls.put("系统设置", "setting!edit_input.do"); return this.MESSAGE; }
数据库中数据如图:
Map<String,Map<String,String>> settings = new HashMap<String, Map<String,String>>(); Map<String,String> params = new HashMap<String, String>(); setting(Map类型): {photo={}, comments={pageSize=5}} {emails={password=123456}, photo={watermark=off, marksize=12, detail_pic_width=350}, comments={pageSize=5, directShow=0}} 保存Setting到数据库:(作为Value的Map需转化为JSON类型数据后再插入数据库) public void save( Map<String,Map<String,String>> settings ) throws SettingRuntimeException { Iterator<String> settingkeyItor = settings.keySet().iterator(); while ( settingkeyItor.hasNext() ) { String settingKey = settingkeyItor.next(); JSONObject jsonObject = JSONObject.fromObject( settings ); this.daoSupport.execute("update settings set cfgvalue=? where cfg_group=?",jsonObject.toString(),settingKey); } }
从数据库中读出数据并输出为Map类型:
String sql = "select * from settings";
List<Map<String, String>> list = this.baseDaoSupport.queryForList(sql);
list:
[{id=1, code=null, cfgvalue={"detail_pic_height":"470","watermark":"off","thumbnail_pic_height":"245","markcolor":"#000000","thumbnail_pic_width":"185","album_pic_height":"2030","markpos":"1","album_pic_width":"1500","marksize":"12","detail_pic_width":"350"}, cfg_group=photo},
{id=2, code=null, cfgvalue={"anonymous":"0","validcode":"1","pageSize":"5","directShow":"0"}, cfg_group=comments},
{id=3, code=NULL, cfgvalue={"title":"在线客服","qqlist":"52560956:技术支持,25106942:市场营销","state":"1","worktime":"9:00至18:00","qq":"1"}, cfg_group=im},
{id=4, code=null, cfgvalue={"username":"EmailTest@126.com","host":"smtp.126.com","password":"123456"}, cfg_group=emails}]
setting_value:
{"detail_pic_height":"470","watermark":"off","thumbnail_pic_height":"245","markcolor":"#000000","thumbnail_pic_width":"185","album_pic_height":"2030","markpos":"1","album_pic_width":"1500","marksize":"12","detail_pic_width":"350"}
itemMap:
{detail_pic_height=470, watermark=off, thumbnail_pic_height=245, album_pic_height=2030, thumbnail_pic_width=185, markcolor=#000000, markpos=1, marksize=12, album_pic_width=1500, detail_pic_width=350}
List<Map<String, String>> list = this.baseDaoSupport.queryForList(sql);
list:
[{id=1, code=null, cfgvalue={"detail_pic_height":"470","watermark":"off","thumbnail_pic_height":"245","markcolor":"#000000","thumbnail_pic_width":"185","album_pic_height":"2030","markpos":"1","album_pic_width":"1500","marksize":"12","detail_pic_width":"350"}, cfg_group=photo},
{id=2, code=null, cfgvalue={"anonymous":"0","validcode":"1","pageSize":"5","directShow":"0"}, cfg_group=comments},
{id=3, code=NULL, cfgvalue={"title":"在线客服","qqlist":"52560956:技术支持,25106942:市场营销","state":"1","worktime":"9:00至18:00","qq":"1"}, cfg_group=im},
{id=4, code=null, cfgvalue={"username":"EmailTest@126.com","host":"smtp.126.com","password":"123456"}, cfg_group=emails}]
setting_value:
{"detail_pic_height":"470","watermark":"off","thumbnail_pic_height":"245","markcolor":"#000000","thumbnail_pic_width":"185","album_pic_height":"2030","markpos":"1","album_pic_width":"1500","marksize":"12","detail_pic_width":"350"}
itemMap:
{detail_pic_height=470, watermark=off, thumbnail_pic_height=245, album_pic_height=2030, thumbnail_pic_width=185, markcolor=#000000, markpos=1, marksize=12, album_pic_width=1500, detail_pic_width=350}
public Map<String,Map<String ,String>> getSetting() { String sql = "select * from settings"; List<Map<String, String>> list = this.baseDaoSupport.queryForList(sql); Map<String,Map<String,String>> cfg = new HashMap(); for (Map<String,String> map : list) { String setting_value = map.get("cfg_value"); if(StringUtil.isEmpty(setting_value)){ cfg.put( map.get("cfg_group"), new HashMap<String, String>()); }else{ JSONObject jsonObject = JSONObject.fromObject( setting_value ); Map itemMap = (Map)jsonObject.toBean(jsonObject, Map.class); cfg.put( map.get("cfg_group"), itemMap); } } return cfg; }
JSONObject.toBean(jsonObject,class):
发表评论
-
Form的onsubmit
2015-02-05 11:06 47751. <form class="for ... -
使文本框不可编辑[不太常用的方法]
2012-09-10 11:17 2422为了使本框不可编辑,我们可以使用下面几种方法 解决思路: 文本 ... -
C 标签使用
2012-07-26 12:16 2933<title>虚拟机管控</title&g ... -
显示结果排序
2012-05-04 14:15 1293<td width="9%" s ... -
select级联操作的简便方法
2012-04-18 15:07 7791<script type=&quo ... -
GuestName处理方法
2012-01-31 10:39 2164主要考虑如何设计,如何实现,如何思考! 效果: ... -
[基础]Map在JSP中的两种显示方式
2011-10-27 09:36 139111、 Java: for(EglSpecialRequ ... -
JSP自定义标签
2011-09-01 12:07 1720实际使用: <td style="text- ... -
[转]如何用div+css布局页面
2011-08-01 17:58 2294如今web2.0炒的很厉害, ... -
iframe总结 + window.open
2011-06-20 11:47 15974从frame中跳出并转向: parent.window. ... -
window.showModalDialog()
2011-06-01 15:23 3597window.open() 打开一个普通窗口 win ... -
一个星期中某一天存在即显示的思路
2011-05-31 17:48 11521、 days: 1,2,3,4,5,6,0 // ... -
某一模块动态+、—效果的实现
2011-04-21 11:08 1371代码(去掉部分css细节,只关注主要功能): < ... -
批量更新时判断哪个需要更新
2011-04-06 16:03 1880<input type="checkbox ... -
JSP中循环二维数组 + 循环Map
2011-04-01 16:46 7263代码如下: <C:forEach items=&q ... -
使用Table的insertRow实现某一模块的复制
2011-03-21 14:16 3334实现的效果:点击+号添加一组 JSP页面: < ... -
[基础]由复选框实现的批量删除
2011-03-21 11:31 2999批量删除: 选中多个复选框: 每一条记录: ... -
table总结insertRow、deleteRow
2011-03-16 16:13 20505表格有几行: var trCnt = table.rows.l ... -
struts中用到的复选框和查询技巧
2011-03-09 11:06 123实现效果:1、选中复选框时,其后文本框显示,没选中时,隐藏 ... -
js实现的复选框选中时的批量操作
2011-03-04 14:22 57311. var checkedList = []; // sa ...
相关推荐
- 创建一个JSP页面,其中包含一个文本框和一个按钮。 - 用户输入数字后点击按钮,JSP页面通过`<jsp:useBean>`标签调用JavaBean中的方法进行判断。 - JavaBean中定义一个名为`isPrime(int number)`的方法,用于...
在`generateObject`方法中,通过`request.getParameterNames()`获取所有请求参数的名称,然后对于每一个参数,通过`request.getParameter(key)`获取其值。接下来的关键步骤是根据参数名找到对应的setter方法并调用...
此方法返回一个`java.util.Map`对象,其中键是参数名,对应的值是一个字符串数组,表示该参数的所有值。这提供了一种直接访问所有表单参数及其对应值的方法。与`getParameterValues()`类似,它适用于处理具有相同...
在Web应用开发中,特别是使用Java Servlet和JSP技术栈时,通常会遇到一个常见需求:收集用户在表单中输入的多行数据。这在实际场景中非常实用,比如用户需要填写多条商品信息或记录多项任务详情等。在传统的静态HTML...
4. **Enumeration接口**:`getParameterNames()`返回一个`Enumeration`对象,该对象包含了请求参数的所有名称。`Enumeration`是Java中用于遍历集合的一种接口,它没有提供随机访问的能力,只能按照元素被添加的顺序...
BeanForm通常指的是一个Java Bean对象,它是Java中的一个简单的POJO(Plain Old Java Object),用于封装业务数据。 首先,让我们详细了解一下自定义的`MyArrayList`集合。在Java中,`ArrayList`是`List`接口的一个...
关键在于`req.getParameterNames()`方法,它返回一个`Enumeration`对象,包含了所有表单参数的名称。通过遍历这个`Enumeration`,我们可以获取每一个参数名,并利用`req.getParameterValues(strParam)`方法获取与该...
Java反射是Java编程语言中的一个强大工具,它允许程序在运行时检查并操作类、接口、字段和方法的信息。在“java反射-在form提交的一些应用”这个主题中,我们将探讨如何利用反射机制来处理HTML表单提交的数据,以及...
3. JSP的重置按钮可以清空表单数据,但需要正确编写JavaScript或jQuery代码来实现。 4. 解决JSP页面刷新时表单重复提交的问题,可以通过Session或Token机制来防止。 5. 在非表单请求中设置action的多种方式,扩展了...
2. `getParameterValues(String name)`:当表单字段有多个同名且用户可以多选时(如复选框或单选按钮),此方法返回一个字符串数组,包含所有选中的值。例如,`request.getParameterValues("hobby")`会返回用户选择...
如果表单的action属性指向了一个Servlet,那么这个请求就会被Servlet接收。 3. 初始化Servlet Servlet容器(如Tomcat)接收到请求后,检查是否有Servlet实例已经存在。如果没有,它会创建一个新的Servlet实例,并...
- `request.getParameterNames()`:列出所有提交的参数名,可用于遍历所有表单数据。 - `session`和`application`对象:可用于存储会话或全局级别的数据,比如用户登录信息。 - JSP脚本元素:`<%= %>`用于输出...
1. **创建敏感字符列表**:首先,需要定义一个包含所有敏感字符的集合,这可以是一个文本文件,存储敏感字符或短语。 2. **读取字符列表**:在程序运行时,读取这个文件,将敏感字符加载到内存中的数据结构,如...
本篇将详细介绍如何使用Java遍历`HttpServletRequest`对象来获取所有表单数据,并提供一个具体的实例代码。 首先,我们需要了解`HttpServletRequest`接口中的`getParameterNames()`方法。这个方法返回一个`...
`getParameterNames()`是`HttpServletRequest`接口中的一个方法,它的功能是返回一个包含所有请求参数名的`Enumeration`(枚举)对象。这个枚举对象包含了请求URL、查询字符串或表单提交的所有参数的名称。例如,...
每次客户端向Web服务器发起请求时,服务器都会为每个请求创建一个HttpServletRequest对象和一个HttpServletResponse对象,以便开发者能够通过这些对象获取请求信息并构造响应。 ### 一、实现类与实例化 ...
- `getParameterNames()`:返回一个枚举(`Enumeration`),包含了请求中所有参数的名称。 - `getParameterMap()`:返回一个`Map`,键是参数名,值是对应的参数值列表(如果参数有多个值,列表长度可能超过1)。 ...
在Servlet中,通常会重写`doPost`方法来处理POST请求,这是HTML表单提交数据时常用的方法。案例中的`doPost`方法在接收到请求后进行响应处理。 3. **设置响应内容类型**: `res.setContentType("text/html")`用于...
上述Java代码中,`SQLFilter`类实现了`Filter`接口,并在其`doFilter`方法中获取了所有请求参数,拼接成一个字符串`sql`。然后,通过`sqlValidate`方法进行检查,如果检查出存在潜在的SQL注入字符串,则拦截请求并...