【Servlet】Javaweb中获取任意个参数

总有这样的情况,传递到后台处理方法的参数数目不知道。

比如某个前台以前要传递给getAllParameter这个Servlet的参数位置。而又要再Servlet对不定长的参数进行一一分解,这该怎么办呢?

下面做一个简单的Javaweb工程来说明这个问题,整个Javaweb工程就getAllParameter.java这个Servlet

如下图所示,无论传递给getAllParameter这个Servlet多少个参数,

getAllParameter这个Servlet都一一能够将其输出。

这时候关键是用到request对象的getParameterMap()方法。

如果是Struts2则是ActionContext.getContext().getParameters()。Struts2中ActionContext.getContext()就是等于Servlet中的HttpServletRequest request。

代码如下:

package getAllParameterTest;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
@WebServlet(name="getAllParameter",urlPatterns={"/getAllParameter"})
public class getAllParameter extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		//这两行是为了这个Servlet能够正常打印数据的,与获取变长参数无关
		PrintStream out = new PrintStream(response.getOutputStream());
		response.setContentType("text/html;charSet=utf-8");
		//先用getParameterMap()把变长参数在一个Map的Java集合中存起来
		Map<String, String[]> parameterMap=request.getParameterMap();
		String parameterStr="传递过来的参数为:";
		//之后,所有变长参数都在这个名为parameterMap的Map里面了。
		//只需要遍历一下这个Map就可以了。
		for(String key : parameterMap.keySet()){
			parameterStr+=key+"="+parameterMap.get(key)[0]+",";
		}
		out.print(parameterStr);
	}

}

其中遍历Java中的Map在《【Java】用JDK1.5之后的新型数组遍历方法遍历HashMap、HashMap不应该存储多元组》(点击打开链接)已经叙述过了。这里不再赘述。

时间: 2024-12-29 09:22:48

【Servlet】Javaweb中获取任意个参数的相关文章

【php】php中获取任意个参数

本文与<[Servlet]Javaweb中获取任意个参数>(点击打开链接)为姊妹篇, 如果你有时候需要通过get方法在php页面之间传递不定个参数,该怎么实现呢? 比如如下的效果,无论通过get方法,给numUndefindParameter.php这个页面传递任意个参数,它都能正常获取. 当然,一般不推荐这样做,建议还是用<[php]基本语法与页面之间数值传递>(点击打开链接)早已说过的,非常著名的$_REQUEST["某某某参数"];的做法. 本方法,主要是

Servlet之doPost获取表单参数

/** * 获取表单参数 */ private void readForm() { // TODO Auto-generated method stub Enumeration e = request.getParameterNames(); while (e.hasMoreElements()) { String parameterName = (String) e.nextElement(); String parameterValue= request.getParameter(param

web过滤器中获取请求的参数(content-type:multipart/form-data)

1.前言: 1.1 在使用springMVC中,需要在过滤器中获取请求中的参数token,根据token判断请求是否合法: 1.2 通过requst.getParameter(key)方法获得参数值; 这种方法有缺陷:它只能获取  POST 提交方式中的Content-Type: application/x-www-form-urlencoded; HttpServletRequest request= (HttpServletRequest) req; String param = reque

自动化接口测试平台:从excel读取数据,传递到request请求中获取不到参数问题

遇到一个问题,将入参的必填参数按照dict格式填入excel表格中,从excel读取数据传递到request请求一直获取不到参数 解决: 1.注意从excel中读取的数据格式为str,传递到request请求的参数格式要求为dict 2.需要将数据反序列化,有以下两种方法: request.post对于参数传入的格式有特殊要求:post请求是我们常说的提交表单,表单的数据内容就是post请求的参数,request实现post请求需设置请求参数data,数据格式 可以为字典.元组.列表和json格

拦截器中获取restful风格参数

controller层: @GetMapping(value = "/api/users/{device}") public ResultDO get(@PathVariable("device") String device){ *** } 拦截器中: public class ParameterInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpSe

ASP.NET MVC中获取URL地址参数的两种写法

一.url地址传参的第一种写法 1.通过mvc中默认的url地址书写格式:控制器/方法名/参数 2.实例:http://localhost:39270/RequestDemo/Index/88,默认参数名为id所以名称为id. 如果使用其他名称,后台是无法读取的会报错 二.url地址传参的第二种写法 1.使用?加参数名=参数值的写法,如果有多个参数使用&来连接 http://localhost:39270/RequestDemo/Index?id=88&name=%E5%BC%A0%E4%

ETL中获取公共时间参数变量释义

原文地址:https://www.cnblogs.com/yongestcat/p/11427684.html

传值:web.xml传递参数 即在Servlet中获取web.xml里的值

1 传值:web.xml传递参数 2 3 在web.xml中的Servlet里配置多个init-param 4 <servlet> 5 ... 6 <init-param> 7 <param-name>name</param-name> 8 <param-value>关羽</param-value> 9 </init-param> 10 <init-param> 11 <param-name>age

4、处理方法中获取请求参数、请求头、Cookie及原生的servlet API等

1.请求参数和请求头 使用@RequestParam绑定请求参数,在处理方法的入参处使用该注解可以把请求参数传递给请求方法 —— value :参数名 —— required : 是否必须,默认为true,表示请求参数中必须包含对应的参数,如果不存在,则抛出异常     例如: @RequestMapping(value="/param") public String testParam(@RequestParam(value="name", required=tr