Servlets HttpServletRequest的工作原理

Servlets HttpServletRequest的工作原理,servlets,Servlets,我试图了解HttpServletRequest是如何工作的: 在演示应用程序中,我在.class文件中有以下代码: HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); String parameter = req.getHeader("PARAMETER"); 这是JSF实现吗?它是否正确地从会话读取参

我试图了解HttpServletRequest是如何工作的:

在演示应用程序中,我在.class文件中有以下代码:

HttpServletRequest req = (HttpServletRequest)
FacesContext.getCurrentInstance().getExternalContext().getRequest();
        String parameter = req.getHeader("PARAMETER");
这是JSF实现吗?它是否正确地从会话读取参数


如何在不使用JSF的情况下检索相同的参数

是的,此代码段是JSF应用程序的一部分

不,它不从会话中读取参数,因为它在HttpServletRequest对象上调用getHeader()。因此它读取一个请求头(如图所示)

要在一个简单的基于servlet的应用程序中检索相同的头,可以使用传递给每个servlet方法的
HttpServletRequest
参数:

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) {
    String header = request.getHeader("PARAMETER");
    ...
}

看起来您对servlet一点也不熟悉。在深入编写代码之前,请阅读一篇入门教程,掌握基本知识。

ok您的答案在Java Servlet中是有效的,但是如果我在Java bean类中呢?我没有那个请求和响应对象,对吗?真的非常感谢你,然后把它作为论据传下去。也可以将其保存在ThreadLocal变量中,但我不会这样做。但最好的做法是设计应用程序,使其仅由servlet处理请求:它根据请求包含的内容构建常规的、类型安全的Java对象,并将这些对象传递给应用程序的其他层。现代MVC框架为您做到了这一点,因此您甚至不必在任何地方处理请求。