Java 在servlet规范3.0下传递servlet配置参数
当使用注释而不是web.xml文件时,如何处理通常可以从对象读取的servlet init/config参数?即Java 在servlet规范3.0下传递servlet配置参数,java,jakarta-ee,tomcat,servlet-filters,servlet-3.0,Java,Jakarta Ee,Tomcat,Servlet Filters,Servlet 3.0,当使用注释而不是web.xml文件时,如何处理通常可以从对象读取的servlet init/config参数?即 @WebFilter("/sample") public class MyServlet { public void init() throws ServletException { String value = getServletConfig().getInitParameter("key"); // or value =
@WebFilter("/sample")
public class MyServlet {
public void init() throws ServletException {
String value = getServletConfig().getInitParameter("key");
// or
value = getServletContext().getInitParameter("key");
}
}
或在过滤器的情况下:
public class MyFilter implements Filter {
public void init (FilterConfig filterConfig) throws ServletException {
filterConfig.getInitParameter("key");
}
}
更新:我知道您可以在注释中硬编码配置参数,但我不想在代码中硬编码配置设置。例如,此servlet无法在两个应用程序之间共享:
@WebFilter("/sample", initParams = {@InitParam(name = "database_host", value = "blah.com")})
public class MyServlet {
public void init() throws ServletException {
String value = getServletConfig().getInitParameter("database_host");
}
}
我想这就是你的意思
@Servlet(urlMappings={"/MyApp"}, initParams ={@InitParam(name="lang", value="english")})
public class MyServlet {
你可以参考这个我想这就是你的意思
@Servlet(urlMappings={"/MyApp"}, initParams ={@InitParam(name="lang", value="english")})
public class MyServlet {
你可以参考这个
编辑:
要回答更新的问题,您有两个选项:
web.xml
的init参数的旧模式web.xml
的init参数的旧模式硬编码服务器和/或依赖于应用程序的配置设置不是一种糟糕的做法吗?据我所知,注释正在取代先前通过
xml
文件完成的配置。彼此彼此。之前这是在web.xml
文件中进行的,现在它在servlet本身中维护。将注释视为配置。使用注释的好处在于“所有相关信息现在都保存在同一个文件中,而不是浏览多个文件”。如果您出于某种特定原因想使用旧模式,它仍然是好的和有效的。硬编码服务器和/或依赖于应用程序的配置设置不是坏做法吗?据我所知,注释正在替换先前通过xml
文件完成的配置。彼此彼此。之前这是在web.xml
文件中进行的,现在它在servlet本身中维护。将注释视为配置。使用注释的好处在于“所有相关信息现在都保存在同一个文件中,而不是浏览多个文件”。如果您出于某种特定的原因想使用旧模式,它仍然是好的和有效的。硬编码服务器和/或依赖于应用程序的配置设置不是坏做法吗?包括web.xml(至少在tomcat中)停止注释工作。@Jacob:您的web.xml上指定的servlet版本是什么?硬编码服务器和/或依赖于应用程序的配置设置不是不好的做法吗?包括web.xml(至少在tomcat中)停止注释工作。@Jacob:您的web.xml上指定的servlet版本是什么?我认为这里没有任何中间立场,无论是使用web.xml还是注释。我认为这里没有任何中间立场,无论是使用web.xml还是注释。