Java 如何从servlet init方法获取请求参数

Java 如何从servlet init方法获取请求参数,java,servlets,Java,Servlets,我正在编写一个Servlet来检索请求参数,但需要在init方法中使用它们。由于init方法将在doGet方法之前调用,并且init方法没有HttpServletRequest对象作为参数,因此我不知道如何获取请求参数 public class OpenIdServlet extends HttpServlet { ... ... private OpenIdManager manager; @Override public void init() t

我正在编写一个Servlet来检索请求参数,但需要在
init
方法中使用它们。由于
init
方法将在
doGet
方法之前调用,并且
init
方法没有
HttpServletRequest
对象作为参数,因此我不知道如何获取请求参数

public class OpenIdServlet extends HttpServlet 
{
    ...
    ...
    private OpenIdManager manager;

    @Override
    public void init() throws ServletException 
    {
        super.init();
        manager = new OpenIdManager();
        manager.setRealm("http://localhost:8080/OpenIDSample"); 
        manager.setReturnTo("http://localhost:8080/OpenIDSample/openid"); //I need to append the value of a request parameter here...
    }
    ...
    ...
}

所以问题是:有没有办法在servlet的
init()
方法中获取
HttpServletRequest
参数?如果没有,还有什么更好的方法可以用来解决这个问题?谢谢。

启动时会调用
init
。因此,您必须接受部分
返回到
,并在请求处理(doGet/doPost)时使用请求参数完成它

public class OpenIdServlet extends HttpServlet 
{
    ...
    ...
    private OpenIdManager manager;

    @Override
    public void init() throws ServletException 
    {
        super.init();
        manager = new OpenIdManager();
        manager.setRealm("http://localhost:8080/OpenIDSample"); 
        manager.setReturnTo("http://localhost:8080/OpenIDSample/openid"); //I need to append the value of a request parameter here...
    }
    ...
    ...
}

事实上,管理器似乎是依赖于请求的,因此应该在request-never-as字段中创建。因为可能会有几个请求。可能作为会话属性持久化。

启动时调用
init
。因此,您必须接受部分
返回到
,并在请求处理(doGet/doPost)时使用请求参数完成它

public class OpenIdServlet extends HttpServlet 
{
    ...
    ...
    private OpenIdManager manager;

    @Override
    public void init() throws ServletException 
    {
        super.init();
        manager = new OpenIdManager();
        manager.setRealm("http://localhost:8080/OpenIDSample"); 
        manager.setReturnTo("http://localhost:8080/OpenIDSample/openid"); //I need to append the value of a request parameter here...
    }
    ...
    ...
}

事实上,管理器似乎是依赖于请求的,因此应该在request-never-as字段中创建。因为可能会有几个请求。可能作为会话属性持续存在。

您的问题没有意义。调用init()方法时没有请求。它在容器初始化期间被调用


你是指初始参数吗?它们可以通过作为init()参数提供的ServletContext获得。

您的问题没有意义。调用init()方法时没有请求。它在容器初始化期间被调用


你是指初始参数吗?它们可以通过作为init()参数提供的ServletContext访问。

添加了一条注释,上面写着同样的内容,+1;)@Joop Eggen:但是当我用doGet()方法声明它时,经理拒绝工作。您熟悉这个OpenID技术吗?已知的技术,但没有使用jOpenId库。如果init中需要,您可以给出一个固定的URL,并且在doGet/doPost中调用getAuthentication时调用setUserPrincipal或设置一些会话属性。然后returnTo将重定向。有一些查询字符串必须附加到URL,它们只能来自请求参数。似乎没有办法得到它们,但我正在研究另一种方法。我添加了一条评论,说同样的,+1;)@Joop Eggen:但是当我用doGet()方法声明它时,经理拒绝工作。您熟悉这个OpenID技术吗?已知的技术,但没有使用jOpenId库。如果init中需要,您可以给出一个固定的URL,并且在doGet/doPost中调用getAuthentication时调用setUserPrincipal或设置一些会话属性。然后returnTo将重定向。有一些查询字符串必须附加到URL,它们只能来自请求参数。似乎没有办法得到它们,但我正在研究另一种方法。解释库
OpenIdManager
来自何处。@McDowell它来自JOpenID-1.08解释库
OpenIdManager
来自何处。@McDowell它来自JOpenID-1.08