1

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

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

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

此链接生成一个对 URL 的 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究竟是什么意思?

  • Principal user : 阅读javadoc 我可以读到这个对象: *这个接口代表了一个principal的抽象概念,它可以用来代表任何实体,例如个人、公司和登录ID。*

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

有人可以帮助我吗?

谢谢

安德烈亚

4

2 回答 2

2

HttpServletRequest:由 Container 填充的对象。该对象由 servlet 容器填充,即您的服务器可能是 tomcat、weblogic。该对象包含请求参数信息、会话信息。您对此对象几乎没有控制权。

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

Locale locale:访问您的 Web 应用程序的用户的语言环境。

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

于 2012-12-15T09:56:12.400 回答
1

这个对象相关的缓冲区内容是:request = org.apache.catalina.connector.RequestFacade@62c77dc3 究竟是什么意思?

请求容器的对象实现,在本例中为 tomcat。HttpServletRequest 对象包含大量数据(关于 http 请求),如参数/header/method/url 等。您需要阅读 java servlet 规范。http://download.oracle.com/otndocs/jcp/servlet-2.4- fr-spec-oth-JSpec/

Tomcat 是这个规范的一个实现。

您是否也将 Principal 和 Locale 设为 null ?根据http://static.springsource.org/spring/docs/3.0.x/reference/mvc.html 它们是有效的控制器方法参数。

于 2012-12-15T09:55:18.937 回答