首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在servlet规范3.0下传递Servlet配置参数

在servlet规范3.0下传递Servlet配置参数
EN

Stack Overflow用户
提问于 2012-10-16 03:43:39
回答 2查看 2.7K关注 0票数 1

当使用注释而不是web.xml文件时,如何处理通常可以从ServletConfig对象读取的servlet /config参数?即

代码语言:javascript
代码运行次数:0
运行
复制
@WebFilter("/sample")
public class MyServlet {

    public void init() throws ServletException {
        String value = getServletConfig().getInitParameter("key");
        // or
        value = getServletContext().getInitParameter("key");
    }
}

或者在过滤器的情况下:

代码语言:javascript
代码运行次数:0
运行
复制
public class MyFilter implements Filter {

    public void init (FilterConfig filterConfig) throws ServletException {
        filterConfig.getInitParameter("key");
    }

}

更新:我知道您可以在注释中硬编码配置参数,但我不想将配置设置硬编码到代码中。例如,这个servlet不能在两个应用程序之间共享:

代码语言:javascript
代码运行次数:0
运行
复制
@WebFilter("/sample", initParams = {@InitParam(name = "database_host", value = "blah.com")})
public class MyServlet {

    public void init() throws ServletException {
        String value = getServletConfig().getInitParameter("database_host");
    }
}
EN

回答 2

Stack Overflow用户

发布于 2012-10-16 03:52:19

代码语言:javascript
代码运行次数:0
运行
复制
 @WebServlet(name = "TestServlet", urlPatterns = {"/test"},
 initParams = {@WebInitParam(name="key", value="value")})

 public class TestServlet extends HttpServlet {

   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        
      String key= getInitParameter("key");
   }
 }

编辑:

要回答您更新的问题,您有两个选项:

  1. 使用使用基于web.xml的init params的旧模式
  2. 只需在另一个项目中创建servlet的虚拟扩展(子类),并分配新的init参数即可。
票数 1
EN

Stack Overflow用户

发布于 2012-10-16 03:49:37

我想这就是你的意思

代码语言:javascript
代码运行次数:0
运行
复制
@Servlet(urlMappings={"/MyApp"}, initParams ={@InitParam(name="lang", value="english")})
public class MyServlet {

您可以参考这个Servlet3.0简介

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12907232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档