有关Java HttpServletRequest和Principal对象的一些信息

时间:2012-12-15 09:30:48

标签: java spring spring-mvc

在此期间我正在研究可从STS仪表板下载的Spring MVC展示示例

在我的home.jsp视图中,我有以下链接:

<a id="request" class="textLink" href="<c:url value="/data/standard/request" />">Request arguments</a>

此链接会向网址生成HTTP请求:“/ data / standard / request”

这是我的控制器类处理此HTTP请求的方法:

@RequestMapping(value="/data/standard/request", method=RequestMethod.GET)
public @ResponseBody String standardRequestArgs(HttpServletRequest request, Principal user, Locale locale) {
    StringBuilder buffer = new StringBuilder();     // Rappresenta un buffer (sequenza mutabile di caratteri) API compatibile con StreamBuffer
    buffer.append("request = ").append(request).append(", ");
    buffer.append("userPrincipal = ").append(user).append(", ");
    buffer.append("requestLocale = ").append(locale);
    return buffer.toString();
}

这个方法有3个参数,我还没有清楚其中的一些:

  • HttpServletRequest请求:读取javadoc我可以读到这个对象:扩展ServletRequest接口以提供HTTP servlet的请求信息但是:什么样的信息?

与此对象相关的缓冲区内容为: request = org.apache.catalina.connector.RequestFacade@62c77dc3 究竟意味着什么?

  • 主要用户:读取javadoc我可以读到这个对象:* 此接口表示委托人的抽象概念,可用于表示任何实体,例如个人,公司和登录ID。 *

我还不清楚我究竟可以放入这个对象以及为什么缓冲区中的相关内容为空

有人可以帮助我吗?

感谢

安德烈

2 个答案:

答案 0 :(得分:2)

HttpServletRequest :由Container填充的对象。该对象由servlet容器填充,即您的服务器可能是tomcat,weblogic。该对象包含请求参数,会话信息的信息。你无法控制这个对象。

主要用户:已登录您的容器以访问该应用程序的用户。如果您在容器中添加了安全性,那么该对象将为您提供登录用户的详细信息:用户名,角色(实际信息)。

区域设置区域设置:访问Web应用程序的用户的区域设置。

就StringBuffer的响应而言,将打印对HttpServletRequest对象的引用。该对象由servlet容器填充。

答案 1 :(得分:1)

  

与此对象相关的缓冲区内容为:request = org.apache.catalina.connector.RequestFacade@62c77dc3究竟意味着什么?

请求对象实现您的容器,在本例中为tomcat。 HttpServletRequest对象有很多数据(关于http请求)封装在其中,如参数/ header / method / url等。您需要阅读java servlet specification.http://download.oracle.com/otndocs/jcp/servlet-2.4- FR-SPEC-OTH-JSpec /

Tomcat是此规范的实现。

您是否也将Principal和Locale视为null?根据{{​​3}} 它们是有效的控制器方法参数。