Java httpservletrequest getCookies()或getHeader()

Java httpservletrequest getCookies()或getHeader(),java,servlets,Java,Servlets,我想接受来自客户机的数据。 每种方法的优缺点是什么 HttpServletRequest request = retriveRequest(); Cookie [] cookies = request.getCookies(); for (Cookie cookie : cookies) { if ("my-cookie-name".equals(cookie.getName())) { String value = cookie.getValue();

我想接受来自客户机的数据。 每种方法的优缺点是什么

HttpServletRequest request = retriveRequest();
Cookie [] cookies = request.getCookies();
for (Cookie cookie : cookies) {
     if ("my-cookie-name".equals(cookie.getName())) {
          String value = cookie.getValue();
         //do something with the cookie's value.
     }
}

当我读到

Cookie作为HTTP头在请求(客户端->服务器)和响应(服务器->客户端)中传递

,使您无需解析Cookie头字符串,也无需从中创建java对象。否则,您必须执行以下操作:

String rawCookie = request.getHeader("Cookie");
String[] rawCookieParams = rawCookie.split(";");
for(String rawCookieNameAndValue :rawCookieParams)
{
  String[] rawCookieNameAndValuePair = rawCookieNameAndValue.split("=");
}
// so on and so forth. 

如果未设置cookie,request.getCookies()可能会返回null,因此请确保在“for”循环之前检查“cookies”数组是否为null。是否有任何理由不考虑请求参数?我同意您的意见,谢谢。这个案子怎么样?如果我只想传递数据呢。我要么通过cookie传递它,要么通过header传递它,这无关紧要。例如String str=request.getHeader(“我的参数”);我不需要解析这个字符串,因为它将是我需要的值。还有一件事,cookies对于存储来自站点的数据并在一段时间后发送这些数据非常有用。如果我在没有cookie的情况下与服务器进行交换,我应该在哪里存储诸如“locale param”、“首选主题”之类的内容?locale应该转到Accept Language字段,例如en/ja等。。。对于自定义头,您也可以定义自己的自定义头。如何创建
HttpServletRequest
request
对象?@Kavipriya request只是HttpServletRequest的一个变量名。都一样
String rawCookie = request.getHeader("Cookie");
String[] rawCookieParams = rawCookie.split(";");
for(String rawCookieNameAndValue :rawCookieParams)
{
  String[] rawCookieNameAndValuePair = rawCookieNameAndValue.split("=");
}
// so on and so forth.