getparametervalues用法(servlet 怎么一次连接接受多个相同参数名的数据)
本文目录
- servlet 怎么一次连接接受多个相同参数名的数据
- JSP getParameterValues 方法
- request.getparametervalues
- request get 方法
- getParameterValues
- 关于request.getParameterValues()
- 用JAVA接收下拉框里面的value
- 如何修改request的parameter的几种方式
- getParameter()和getParameterValue()有什么区别
servlet 怎么一次连接接受多个相同参数名的数据
你是想处理那种多选框类似的表单吗?像这样 你直接可以将它们的name设置相同,然后用post提交表单后,在servlet里面用getParameterValues(""); 获取到一个字符串数组里面就是你多选框提交的值
JSP getParameterValues 方法
checkbox 好像系统默认属性就是这样,你选了哪个,在提交的时候其value值才会被getParameterValues 接收到,那些没选的当然不会收到空和null等,但是若是text文本框,你若是把几个text起同样的名字,用getParameterValues 即使是空的 delSns.length也是你的文本框的个数。有时候用getParameterValues 接收参数的时候会遇到,只能得到第一个控件的值,那是因为用js代码控制submit()顺序有点问题。
request.getparametervalues
首先,方法名就写错了,不知道你程序里就这么写的还是提问的时候手敲出的错。正确的写法:request.getParameterValues("likes");其次:通过request.getParameterValues("likes");的值要进行类型的强制转换String)request.getParameterValues("likes");
request get 方法
1.getParameterNames 方法签名:public Enumeration getParameterNames(); ---返回所有参数名的String对象列表,如果没有输入参数,该方法返回一个空值。这个是返回枚举类型.2.getParameterValues 方法签名:public String getParameterValues(String name); (!!!带参数的方法哦)通过一个String对象的数组返回指定参数的值,如果这个参数不存在,该方法返回一个空值。
getParameterValues
request.getParameterValues(str)返回的是一个string数组,String s = request.getParameterValues(str)相当于:String strArray = request.getParameterValues(str);String s = strArray;
关于request.getParameterValues()
request.getParameterValues()只能获得你选中的option的值,例如select控件是多选类型的(加上multiple),你用ctrl键加上鼠标选中多个,就能获取你选中的多个值。直接是不能得到所有option的值的,否则JSP或Servlet里怎么判断用户输入的是什么呢?
用JAVA接收下拉框里面的value
把我会的方法写下来: 这种情况我一般是用js取出相应的值,然后组合下传到台;var arr = document.getElementsByName("prpLcomponentAuditStatus");//根据name取得js对象var result = "";for(i = 0; i 《 t.length; i++) { result = result + t.value + "*";//把结果组合成一个字符串,中间带有"*"号}然后把result传到后面进行处理就行了.这里只是提供一个取得同一name不同值的方法,看你的情况还要对每行有对应,这个你自己解决吧 ^_^
如何修改request的parameter的几种方式
request之所以不想让你修改parameter的值,就是因为这个东西一般不然改,有人问我为什么不让改,表面上说我只能说这属于篡改数据,因为这个使用户的请求数据,如果被篡改就相当于篡改消息,如果你一天给别人发消息发的是:你好,而对方收到的是:fuck you!,你会怎么想,呵呵!当然它主要是怕不安全把参数数据该乱了,因为程序员毕竟是自己写程序,尤其是在公共程序里面写,后台程序员发现自己的数据不对,也找不到原因;一般WEB应用会提供一个attribute来提供自己的参数设置,这样就OK了,但是有些人就是那么变态说为啥就不能改呢,面向对象不是相互的么,有get应该有set的呀,我只能说,面向对象来自于生活现实,生活现实中每天逛大街,街上有很多形形色色如花似玉的,但是又可能你只能看,不能摸,更不能XX,呵呵,否则一个异常就出来了:臭流氓!呵呵,不过就技术的角度来讲,能实现吗,当然可以,没有不可以实现的,源码之下,了无秘密,这是一个大牛说的,那么我们先来思考下有那些实现的方式:1、我自己new一个request,然后放到容器里头,放那呢?等会来说,先记录下。2、如果我能改掉request里面的值,那就好了呗,好的,先记录下,等会来想怎么改。先说第一种方式,我自己new一个,呵呵,怎么new,怎么让其他的程序知道。new的两种方式之一(开始思考的起源):先说new的方式,在不知道具体的容器怎么实现HttpSevletRequest的时候,很简单,我自己写个类,implements HttpServletRequest呵呵,这个貌似很简单,OK,继承下试一试:public class HttpServletRequestExtend implements HttpServletRequest { .......实现代码}此时提示需要有N多方法需要被实现,例如:getParameter、getAttribute、getAttributeNames、getCharacterEncoding、getContentLength、getContentType。。。。。。等等几十个方法,呵呵;当然,你可以再构造方法里面将实际的request对象传递进来,如果是相同的方法,就这个request来实现,如果需要自己处理的方法,就按照自己的方式来处理,这种包装貌似简单自己定义parameter,就用一个private Map《String , String》();就可以简单搞定,自己再搞个addParameter方法等等,就可以实现自己的功能。不过写起来挺费劲的,因为意味着你所有的方法都要去实现下,除非你其他的方法都不用,只用其中几个方法而已,这就体现出一些接口的不足了。但是这种方式是可行的,至少可以这样说,只是很费劲而已,因为感觉冗余很厉害,也体现出接口的不足,和抽象类的价值,我们想要的只是重载那些我们想要重载的,原有的还是按照它原有的处理思路,此时,有一个叫HttpServletRequestWrapper的出现了;new方式2:继承HttpServletRequestWrapper,其实就是上面那种方法多了一层继承,将你的重复工作交予了它,你也可以这样做,全名***隐藏网址***request做一次包装,OK;跟着进去发现它可以处理类似request一样的差不多的内容,在这个基础上做了一次包装,你可以认为他就是对你自己new的那个,多了一层简单扩展实现,而你再这个基础上,可以继续继承和重写。OK,此时你要重写如何重写呢,比如我们要重写一个getParameter方法和getParameterValues方法,其余的方法保持和原来一致,我们在子类中,自己定义一个Map用来放参数,结合request本身的参数,加上外部其他自定义的参数,做成一个新的参数表。如下所示:***隐藏网址******隐藏网址***import java.util.HashMap;import java.util.Map;public class ParameterRequestWrapper extends HttpServletRequestWrapper { private Map《String , String》();@SuppressWarnings("unchecked") public ParameterRequestWrapper(HttpServletRequest request) { // 将request交给父类,以便于调用对应方法的时候,将其输出,其实父亲类的实现方式和第一种new的方式类似 super(request); //将参数表,赋予给当前的Map以便于持有request中的参数 this.params.putAll(request.getParameterMap()); } //重载一个构造方法 public ParameterRequestWrapper(HttpServletRequest request , Map《String , Object》 extendParams) { this(request); addAllParameters(extendObject);//这里将扩展参数写入参数表 } @Override public String getParameter(String name) {//重写getParameter,代表参数从当前类中的map获取 Stringvalues = params.get(name); if(values == null || values.length == 0) { return null; } return values; } public String getParameterValues(String name) {//同上 return params.get(name); } public void addAllParameters(Map《String , Object》otherParams) {//增加多个参数 for(Map.Entry《String , Object》entry : otherParams.entrySet()) { addParameter(entry.getKey() , entry.getValue()); } }public void addParameter(String name , Object value) {//增加参数 if(value != null) { if(value instanceof String) { params.put(name , (String)value); }else if(value instanceof String) { params.put(name , new String {(String)value}); }else { params.put(name , new String {String.valueOf(value)}); } } }}
getParameter()和getParameterValue()有什么区别
request.getParameterValues(String name)是获得如checkbox类(名字相同,但值有多个)的数据。 接收数组变量,如checkobx类型 request.getParameter(String name)是获得相应名的数据,如果有重复的名,则返回第一个的值. 接收一般变量,如text类型例:1. 三个名字相同的text标签《input type="text" name="test" value="1" /》 《input type="text" name="test" value="2" /》 《input type="text" name="test" value="3" /》 request.getParameterValues("test") ----------------- request.getParameter("test") ------------------ 1
更多文章:
工人物语6下载(给个工人物语6中文硬盘版的下载地址,最好要游侠网的)
2023年5月2日 06:00
麻花影视团队是真的吗?哪些影视作品里出现过让人震撼或惊艳的老虎形象
2024年5月22日 15:34
变形缝建筑构造图集中A,B,C,D系列有什么区别?04cj01三本变形缝图集有何区别,是第三本最常用吗
2023年11月14日 18:40
免费收银系统单机版(做一个23米长×6米宽×二层=276平方米的超市监控及收银系统需多少钱)
2024年6月27日 08:33
嗨来电都有哪些好听的铃声?嗨来电铃声怎么设置 嗨来电铃声设置步骤
2024年7月19日 19:40
loveplus(loveplus(爱相随)的问题,急 急 急)
2024年5月8日 07:22