web.xmlからサーブレットの初期化パラメータを読み込む
<servlet> <servlet-name>param-servlet</servlet-name> <servlet-class>chapter19.ParamServlet</servlet-class> <!-- 初期化パラメータ --> <init-param> <param-name>message</param-name> <param-value>servlet-init-param</param-value> </init-param> </servlet> <!-- 初期化パラメータを読み込む場合、URLマッピングも記述する必要あり --> <servlet-mapping> <servlet-name>param-servlet</servlet-name> <url-pattern>/chapter19/param-servlet</url-pattern> </servlet-mapping>
public class ParamServlet extends HttpServlet { private String message; @Override public void init() throws ServletException { // ServletConfigオブジェクトの取得 ServletConfig config = getServletConfig(); // 初期化パラメータ取得 message = config.getInitParameter("message"); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter pw = resp.getWriter(); pw.println(message); } }
web.xmlからフィルタの初期化パラメータを読み込む
<filter> <filter-name>param-filter</filter-name> <filter-class>chapter19.ParamFilter</filter-class> <init-param> <param-name>message</param-name> <param-value>filter-init-param</param-value> </init-param> </filter> <filter-mapping> <filter-name>param-filter</filter-name> <url-pattern>/chapter19/param-servlet</url-pattern> </filter-mapping>
public class ParamFilter implements Filter { private String message; @Override public void destroy() { } @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { PrintWriter pw = arg1.getWriter(); pw.println(message); arg2.doFilter(arg0, arg1); } @Override public void init(FilterConfig arg0) throws ServletException { // 初期化パラメータの取得 message = arg0.getInitParameter("message"); } }
web.xmlからコンテキストの初期化パラメータを読み込む
<context-param> <param-name>message</param-name> <param-value>context-param</param-value> </context-param>
@WebServlet(urlPatterns={"/chapter19/param-context"}) public class ParamContext extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter pw = resp.getWriter(); // 初期化パラメータの取得 ServletContext context = getServletContext(); pw.println(context.getInitParameter("message")); } }
プロパティファイルの読み込み
プロパティファイル・・・キー=値の形式になっている行で構成されているテキストファイル。
debug = yes memory = 1048576 network = 12.34.56.78
上記プロパティファイルは、WEB-INF/setting.txtに配置。
@WebServlet(urlPatterns={"/chapter19/file"}) public class File extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter pw = resp.getWriter(); Page.header(pw); // ServletContextオブジェクトの取得 ServletContext context = getServletContext(); // サーバー上のパスを取得 String path = context.getRealPath("/WEB-INF/setting.txt"); FileInputStream in = new FileInputStream(path); Properties p = new Properties(); p.load(in); in.close(); for (String key : p.stringPropertyNames()) { pw.println("<p>" + key + ":" + p.getProperty(key) + "</p>"); } Page.footer(pw); } }
アプリケーション属性の設定
@WebServlet(urlPatterns={"/chapter19/attribute"}) public class Attribute extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter pw = resp.getWriter(); Page.header(pw); // ServletContextオブジェクトの取得 ServletContext context = getServletContext(); // サーバー上のパスを取得 String path = context.getRealPath("WEB-INF/setting.txt"); FileInputStream in = new FileInputStream(path); Properties p = new Properties(); p.load(in); in.close(); for (String name : p.stringPropertyNames()) { // アプリケーション属性に設定 context.setAttribute(name, p.getProperty(name)); } Page.footer(pw); } }
@WebServlet(urlPatterns={"/chapter19/attribute4"}) public class Attribute4 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter pw = resp.getWriter(); Page.header(pw); // ServletContextオブジェクトの取得 ServletContext context = getServletContext(); // アプリケーション属性名の一覧を取得 List<String> list = Collections.list(context.getAttributeNames()); for(String name : list) { pw.println("<p>" + name + ":"); // アプリケーション属性名に対応する値を取得 pw.println(context.getAttribute(name)); pw.println("</p>"); } Page.footer(pw); } }