[英]How to get param value from java servlet
我正在尝试将参数值传递给Java Servlet,但返回的字符串不正确。 我将值存储在Map中,并检查键是否存在。
Map params;
params = request.getParameterMap();
String id = params.get("id").toString();
String data = params.get("data").toString();
System.out.println("streaming" + data + " with id of " + id);
但是,如果我通过http://localhost:8080/Serv/stream/data?data=hereisdata&id=you
调用此servlet, http://localhost:8080/Serv/stream/data?data=hereisdata&id=you
输出将如下所示:
streaming[Ljava.lang.String;@5e2091d3 with id of [Ljava.lang.String;@36314ab8
我想念什么?
编辑:由于建议的答案不起作用,我包括整个班级,因为我很可能在班级内弄乱了一些东西:
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import Engine.Streamer;
public class AnalyzerController {
private Map params;
private String pathInfo;
private HttpServletRequest request;
public AnalyzerController(HttpServletRequest request)
{
this.params = request.getParameterMap();
this.pathInfo = request.getPathInfo();
}
public void processRequest()
{
System.out.println("procing with " + pathInfo);
switch(pathInfo){
case "/stream/data":
if(params.containsKey("id") && params.containsKey("data")) processStream();
break;
}
}
private void processStream()
{
System.out.println("we are told to stream");
String data = request.getParameter("data");
String id = request.getParameter("id");
Streamer stream = new Streamer();
stream.streamInput(data, "Analyzer", id);
}
}
该行专门抛出NPE: String data = request.getParameter("data");
如果你看的文档Request#getParameterMap()
它返回一个Map
类型的Map<String, String[]>
因此,您需要从映射返回的值String[]
数组中取出第一个元素。
String id = params.get("id")[0];
当然,您可以避免所有这些情况,并使用Request#getParameter()
方法直接从请求对象中获取参数。
String id = request.getParameter("id");
编辑:查看您的类代码,似乎实例变量request
未初始化。 像这样在构造函数中初始化它:
public AnalyzerController(HttpServletRequest request)
{
this.request = request; // Initialize your instance variable request which is used in the other methods.
this.params = request.getParameterMap();
this.pathInfo = request.getPathInfo();
}
您可以获取所需的参数而不是整个地图
String id = request.getParameter("id");
String data = request.getParameter("data");
尝试这样的事情。
String data = ((String)params.get("data"));
或直接从请求。
String data = request.getParameter("data");
您可以使用请求对象及其方法通过getParameter()
获取数据,如果有多个数据来自页面,则可以使用getParameterValues()
。
String id = request.getParameter("id")
String data = request.getParameter("data")
为什么要使用Map
? 是否有特殊需要或任何原因?
或者你可以这样使用:
String id = params.get("id")[0];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.