servlets之如何获取请求头、远程地址和其他 HttpServletRequest 特定信息

mfryf 阅读:103 2025-05-04 20:05:19 评论:0

我有一个 JSF 2.0 网络项目,我的网络有一个表单,它必须执行以下操作:

  1. 获取表单的参数并将其保存在 Bean 中(完成)

  2. 从 servlet 获取此信息:

    • 远程地址:
    • 远程主机:
    • 地区:
    • 内容类型:
    • 边界:
    • 内容长度:
    • 字符编码:

  3. 将Bean数据和Servlet数据插入到数据库表中(等待第2步)

我对 JSF 中的 Servlet 了解不多,我不需要是否必须制作一个。我只有那个代码但是在 JSP 中:

    String informe=""; 
    Enumeration a = request.getHeaderNames(); 
    while(a.hasMoreElements() ){ 
        String h = a.nextElement().toString(); 
        informe += h+": "+request.getHeader(h)+"\n"; 
    } 
    a = request.getAttributeNames(); 
    while(a.hasMoreElements() ){ 
        String h = a.nextElement().toString(); 
        informe += h+": "+request.getHeader(h)+"\n"; 
    } 
    informe += "Remote Address: "+request.getRemoteAddr()+"\n"; 
    informe += "Remote Host: "+request.getRemoteHost()+"\n"; 
    informe += "Locale: "+request.getLocale()+"\n"; 
    informe += "Content Type: "+request.getContentType()+"\n"; 
    informe += "Content Length: "+request.getContentLength()+"\n"; 
            ..... 
            .. 

我不知道如何在 JSF 中获取请求信息以及我必须执行哪些步骤。我读了很多页,但我认为我不需要他们做的所有事情。

请您参考如下方法:

HttpServletRequest 对象在 JSF 中可用 ExternalContext#getRequest() .

ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); 
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest(); 
// ... 

ExternalContext顺便还提供了一些直接的方法来获取所需的信息。查看javadoc中以getRequestXxx()开头的方法,如getRequestHeaderMap()getRequestContentType()等.

为此您不需要另一个 servlet。 JSF 已经将 FacesServlet 作为唯一的请求/响应 Controller 。


标签:Servlet
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号