Jsp中getParameter、getParameterValues、getParameterNames和getParameterMap用法详解

article/2025/11/5 19:53:24

以下是一个简单的jsp注册页面,从前端提交的数据

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>注册页面</title></head><body><center><fieldset><legend>注册页面</legend><form name="frm" action="regAction01.jsp" method="post">            <input type="hidden" name="cardNo" value="12345"/><table><tr><td><label for="userName">请输入用户名:</label></td><td><input type="text" name="userName" id="userName" value="admin"></td></tr><tr><td><label for="pwd">请输入密码:</label></td><td><input type="password" name="pwd" id="pwd"></td></tr><tr><td><label for="gender">请选择你的性别:</label></td><td><!-- 对于单项按钮如果想实现多选一的效果,则控件的name属性值必须相同,表明是同一组。--><input type="radio" name="gender" id="male" value="男" checked="checked"><label for="male"></label><input type="radio" name="gender" id="female" value="女"><label for="female"></label></td></tr><tr><td><label for="hobby">请选择你的爱好:</label></td><td><!-- 对于复选按钮,要求处于同一组的所有复选按钮的name值相同,这样提供到后台的数据是以字符串数组的形式统一发送的,方便管理 --><input type="checkbox" name="hobby" id="hobby" value="爬山" >爬山<input type="checkbox" name="hobby" value="打游戏" checked="checked">打游戏<input type="checkbox" name="hobby"  value="打篮球" >打篮球<br/><input type="checkbox" name="hobby"  value="唱歌" checked="checked">唱歌<input type="checkbox" name="hobby"  value="跳舞" >跳舞<input type="checkbox" name="hobby"  value="敲代码" >敲代码</td></tr><tr><td>请选择你所处的省份:</td><td><select name="province"><option value="河北">河北</option><option value="河南">河南</option><option value="山东">山东</option><option value="山西" selected="selected">山西</option><option value="湖北">湖北</option><option value="湖南">湖南</option></select></td></tr><tr><td>请选择你喜欢的职业:</td><td><!-- multiple="multiple" :使当前选择框变成多项列表框,按住shift键可以选择连续的选项,按住ctrl键可以选择任意位置的选项size="5":指定默认情况下显示几项内容 --><select name="professor" multiple="multiple" size="5"><optgroup label="温柔型职业"><option value="程序员">程序员</option><option value="歌手">歌手</option><option value="医生" selected="selected">医生</option><option value="护士" selected="selected">护士</option><option value="教师">教师</option></optgroup><optgroup label="暴力型职业"><option value="警察" >警察</option><option value="城管" selected="selected">城管</option><option value="保镖" >保镖</option></optgroup></select></td></tr><tr><td><label for="introduct">个人简介:</label></td><td><textarea rows="5" cols="20" name="introduct" id="introduct">我是一个程序员,敲代码如同数人民币,感觉帅呆了!</textarea></td></tr><tr><td colspan="2" align="center"><input type="submit" value="注册"/><!-- 重置是将控件的值还原成默认value属性的值 --><input type="reset" value="重置"/></td></tr></table></form></fieldset></center></body>
</html>

注册界面运行效果图
这里写图片描述
1.利用getParameter和getParameterValues方式获取数据
为了方便理解,我们新建一个regAction01.jsp页面(regAction01.jsp页面名称对应reg01.jsp中的form表单的action值)从reg01.jsp中获取提交过来的数据

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>注册处理页面</title></head><body><%//解决post提交的中文乱码问题request.setCharacterEncoding("utf-8");//得到客户端提交过了的值使用JSP隐式对象中的request对象//注意:这里是getParameter的用法,直接使用Jsp内置的request隐式对象调用getParameter方法。//这里只讲解第一个String cardNo=request.getParameter("cardNo")其他同理。getParameter("cardNo")中的cardNo与reg01.jsp中name="xxxx"中的值对应,也就是通过cardNo得到reg01.jsp提交过来的与之对应的值,所以reuest.getParameter("cardNo")就等于(<input type="hidden" name="cardNo" value="12345"/>)12345String cardNo=request.getParameter("cardNo");String userName=request.getParameter("userName");String pwd=request.getParameter("pwd");String gender=request.getParameter("gender");//由于爱好可以是多个,但使用request.getParameter("hobby")方法只能获取一个值,如果想获取多个值咋办?这里就需要用到getParameterValues()//以下是getParameterValues()的用法,其他类似与多选框的情况同理String[] hobbies=request.getParameterValues("hobby");String hobby=Arrays.toString(hobbies);String province = request.getParameter("province");String[] professors=request.getParameterValues("professor");String professor=Arrays.toString(professors);String introduct=request.getParameter("introduct");%><center><table><tr><td>身份证号:</td><td><%=cardNo %></td><!-- <%=cardNo>等同于<% out.print(cardNo);%>--></tr><tr><td>用户名:</td><td><%=userName %></td></tr><tr><td>密码:</td><td><%=pwd %></td></tr><tr><td> 性别:</td><td><%=gender %></td></tr><tr><td>  爱好:</td><td> <%=hobby %></td></tr><tr><td>    省份:</td><td><%=province %></td></tr><tr><td> 职业:</td><td><%=professor %></td></tr><tr><td>  个人简介:</td><td><%=introduct %></td></tr></table></center></body>
</html>

演示结果regAction01.jsp
这里写图片描述
2.利用getParameterNames获取提交过来的数据
这次我们新建一个regAction02.jsp页面,注意与之对应我们只需修改reg01.jsp中的action,让action=”regAction02.jsp”

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>注册处理页面</title></head><body><%//解决post提交的中文乱码问题,这行代码必须写在request.getParameter(key)的方法前面,否则无效request.setCharacterEncoding("utf-8");//request.getParameterNames():返回客户端所有控件的name属性值组成的枚举器对象Enumeration<String> enu=request.getParameterNames(); //enu为自定义的枚举对象while(enu.hasMoreElements()){ //hasMoreElements():如果且仅当这个枚举对象包含至少一个元素返回true,否则返回falseString name=enu.nextElement();  //如果这个枚举对象至少有一个元素,那么返回这个枚举的下一个元素,否则抛出异常//out.println("name="+name);String value=null; //初始化自定义的valueif(name.endsWith("*")){ //endsWith():判断前端提交过来的name的值的最后一位是否有"*" ,根据这个特征判断用getparameterValues()还是getparameter()String[] values=request.getParameterValues(name);value=Arrays.toString(values);//这里把数组转换成字符串}else{value=request.getParameter(name);}out.println(name+"="+value+"<br/>");//统一打印输出}%></body>
</html>

演示结果regAction02
这里写图片描述
利用getParameterNames的优点在于,我们不需要关心前端提交的数据如何变幻,我们只需要这么一套处理代码即可应付大多数的情况。

3.getParameterMap方式
同样我们新建regAction03.jsp,同样修改reg02.jsp中的action(action=”r egAction03.jsp”)。

<%@ page language="java" import="java.util.*" import="java.util.Map.Entry" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>注册处理页面</title></head><body><%//解决post提交的中文乱码问题,这行代码必须写在request.getParameter(key)的方法前面,否则无效request.setCharacterEncoding("utf-8");Map<String, String[]> map=request.getParameterMap();//利用getParameterMap()方式获取数据Set<Entry<String, String[]>> sets=map.entrySet();//entryset:这个map中包含的映射的集合视图,这个知识点不会的请回去复习java知识for(Entry<String, String[]> entry:sets){String key= entry.getKey(); //获得键String[] values=entry.getValue(); //获得值out.print(key+"="+Arrays.toString(values)+"<br>");//打印输出结果集}%></body>
</html>

演示结果regAction03
这里写图片描述

具体区别也不是三言两语能讲的清楚明白的,请大家参考代码,结合自己所学的知识会有更好的理解,欢迎各位留言评论!!!


http://chatgpt.dhexx.cn/article/6AQeDKws.shtml

相关文章

req.getParameterValues 输出前端乱码

前端页面 <% page contentType"text/html;charsetUTF-8" language"java" %> <html> <head><title>登录</title> </head> <body> <% page pageEncoding"UTF-8" %> <div style"text-ali…

jsp内置对象request——getParameterValues的使用

文章目录 前言一、getParameterValues是什么二、使用步骤 1.通过表单传入2.使用数组存取读入表单结果总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、getParameterValues是什么 当控件中有多个选项时&#xff0c;要取到所有值可调用该方法&am…

initWithFormat 和stringWithFormat的区别

差别&#xff1a; 1、initWithFormat是实例办法 只能经由过程 NSString* str [[NSString alloc] initWithFormat:&#xff20;"&#xff05;&#xff20;"&#xff0c;&#xff20;"Hello World"] 调用&#xff0c;然则必须手动release来开释内存资料 2、…

C# string Format

使用C#格式化字符串 转载自博客园&#xff0c;原文连接&#xff1a;https://www.cnblogs.com/FlyingBread/archive/2007/01/18/620287.html&#xff0c;向原文作者献上敬意 1 前言 如果你熟悉Microsoft Foundation Classes&#xff08;MFC&#xff09;的CString&#xff0c;…

NSString函数stringWithFormat与stringWithString的比较

我们经常会初始化一些string使用NSString的stringWithString函数 但使用时发现了一个stringWithString的问题&#xff0c;如图 当参数是nil时&#xff0c;stringWithString会crash&#xff0c;所以使用时必须验证参数不是nil 相比较stringWithFormat就不会crash但返回的str也…

stringWithFormat:用法及注意事项

在ObjectiveC中NSString中有一个 stringWithFormat&#xff1a;方法 常见的输出方式&#xff1a; NSString *height; height [NSString stringWithFormat:"Your height is %d feet, %d inches.",5,11]; NSLog("%",height); 输出结果&#xff1a; 2013-04-…

虚拟机VirtualBox下载与安装、安装Ubuntu超详细图文步骤,对一些配置问题也有所写。

对于机器学习和深度学习来说&#xff0c;Linux系统是必不可少的。而我们在只是学习当中一般不会去重装一个Linux系统&#xff0c;而是去使用虚拟机来使用Linux系统。在VMware与VirtualBox这两款虚拟机的体验上&#xff0c;个人更偏向于后者&#xff0c;因为它所占内存更小&…

安装Windowsxp虚拟机

1.打开VMware&#xff0c;选择创建新的虚拟机&#xff0c;微软windows系统选择典型&#xff0c;而linux系统选择自定义&#xff1a; 2.选择稍后安装操作系统&#xff1a; 3.下一步选择相应合适的版本&#xff0c;选择存放位置&#xff1a; 4.选择合适大小的硬盘给虚拟机&…

在虚拟机VMware上安装XP系统

由于最近在学习uc/os-ii操作系统需要用到Borland C 3.1版本的软件&#xff0c;但是由于本人笔记本电脑的系统为Windows7 64位操作系统&#xff0c;与BC3.1不兼容&#xff0c;又不想直接换成XP系统&#xff0c;所以想在虚拟机VMware上安装XP&#xff0c;刚开始在网上搜了很多教程…

VirtualBox安装

1、VirtualBox安装 运行安装程序&#xff0c;一直下一步即可。如果不想安装到C盘&#xff0c;可以自己选盘符。 注意&#xff1a;软件开发安装所有程序时&#xff0c;不要安装到有中文或特殊符号的路径下。 2、安装操作系统 点击新建&#xff0c;弹出如下对话框 名称&…

VirtualBox虚拟机安装

一、宿主机(物理机)要求 宿主机建议内存大于4G&#xff0c;cpu至少4个 二、下载virtualBox https://www.virtualbox.org/wiki/Downloads 下载的安装包&#xff0c;默认安装即可(也可指定目录安装) 三、下载系统镜像 可以参考另外一篇各种ISO镜像 四、VirtualBox安装虚拟…

使用VirtualBox安装Ubuntu系统

一、下载VirtualBox软件安装包和Ubuntu系统镜像 1.1 下载VirtualBox安装包 点我进入VirtualBox官网下载安装包。 1.2 下载ubuntu20.04系统镜像 我使用的是国内清华大学的镜像&#xff0c;点我进行镜像选择和下载&#xff0c;这里我选择的是64位的系统镜像。 二、安装Vi…

如何在vmware workstation 上安装xp系统

准备&#xff1a;系统ISO镜像&#xff0c;可去MSDN下载。**Vmware workstation软件** 安装过程&#xff1a; 1&#xff0c;打开vmware软件&#xff0c;点击“创建新的虚拟机” 2&#xff0c;在窗口中选择典型&#xff0c;然后下一步。 3&#xff0c;选择“稍后安装操作系统”…

超级详细的 VirtualBox 虚拟机安装 及入门教程

一、前言 虚拟机&#xff08;Virtual Machine&#xff09;指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。 虚拟机是在一些开发测试工作中常常需要用到的功能&#xff0c;常见的虚拟机…

virtualbox安装详解

环境 系统&#xff1a;win7 内存&#xff1a;8GB 软件版本 VBox版本&#xff1a;安装的最新版本 [VirtualBox-5.2.12-122591-Win.exe] 运行VirtualBox的安装程序 执行步骤如下&#xff1a; 1、进入安装向导&#xff0c;点击”下一步“ 2、进入自定安装&#xff0c;软…

使用 virtualBox 安装 ubuntu

1.在官网上下载virtualBox windows用户点击如下图开始下载&#xff1a; 2.下载好VirtualBox-6.1.34a-150636-Win.exe文件后运行&#xff0c;一直点击下一步完成安装 3.在ubuntu镜像站下载Ubuntu&#xff0c;如下图&#xff1a; 4.打开VirtualBox&#xff0c;开始新建&#xf…

手把手教,使用Oracle VM VirtualBox虚拟机安装Windows XP系统,爷青回

文章目录 一、前言二、Oracle VM VirtualBox下载安装三、XP系统镜像下载四、创建XP虚拟机五、启动虚拟机&#xff0c;安装系统六、主机与虚拟机双向互传文件 一、前言 我写了一篇关于VMware虚拟机安装Windows XP系统的文章&#xff1a;https://linxinfa.blog.csdn.net/article…

在虚拟机中安装Windows XP

首先&#xff0c;下载镜像文件&#xff1a; 链接在这里&#xff1a;ed2k://|file|zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_x14-80404.iso|630239232|CD0900AFA058ACB6345761969CBCBFF4|/ 可以使用迅雷下载&#xff0c;没会员我感觉也挺快&#xff08;我没…

教程--用Oracle VM VirtualBox虚拟机安装winxp操作系统

zz http://www.dasairen.com/OracleVMVirtualBox/10181611099.html首先&#xff0c;安装Virtualbox&#xff0c;这一步骤一如你以往安装各种替他软件&#xff0c;此处就不再赘言。 打开安装好的Virtualbox&#xff0c;点击新建按钮&#xff0c;进入进入创建新建虚拟电脑的向导…

[XP虚拟机安装]VMware安装XP虚拟机

[XP虚拟机安装]VMware安装XP虚拟机 下载VMware下载XP Professional&#xff0c;我是在这个网站下的http://www.runker.net/windows-xp-sp3.html新建虚拟机&#xff0c;选择典型 选择刚刚下载的XP镜像文件&#xff08;这里用简易安装更方便&#xff0c;如果不用简易安装还需要进…