web.xml中在Servlet中获取context-param和init-param内的参数

web.xml里面可以定义两种参数:
1.application范围内的参数,存放在servletcontext中,在web.xml中配置如下:

[html] view plain copy print ?
  1. <context-param>
  2. <param-name>context/param</param-name>
  3. <param-value>avalible during application</param-value>
  4. </context-param>
<context-param>
           <param-name>context/param</param-name>
           <param-value>avalible during application</param-value>
  </context-param>
2.servlet范围内的参数,只能在servlet的init()方法中取得,在web.xml中配置如下:
[html] view plain copy print ?
  1. <servlet>
  2. <servlet-name>MainServlet</servlet-name>
  3. <servlet-class>com.wes.controller.MainServlet</servlet-class>
  4. <init-param>
  5. <param-name>param1</param-name>
  6. <param-value>avalible in servlet init()</param-value>
  7. </init-param>
  8. <load-on-startup>0</load-on-startup>
  9. </servlet>
<servlet>
    <servlet-name>MainServlet</servlet-name>
    <servlet-class>com.wes.controller.MainServlet</servlet-class>
    <init-param>
       <param-name>param1</param-name>
       <param-value>avalible in servlet init()</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
</servlet>

在servlet中可以通过代码分别取用:

[java] view plain copy print ?
  1. package com.qisentech.controller;
  2. import javax.servlet.ServletException;
  3. import javax.servlet.http.HttpServlet;
  4. public class MainServlet extends HttpServlet {
  5. public MainServlet() {
  6. super();
  7. }
  8. public void init() throws ServletException {
  9. System.out.println(this.getInitParameter("param1"));
  10. System.out.println(getServletContext().getInitParameter("context/param"));
  11. }
  12. }
package com.qisentech.controller;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class MainServlet extends HttpServlet {
    public MainServlet() {
        super();
      }
    public void init() throws ServletException {
          System.out.println(this.getInitParameter("param1"));
          System.out.println(getServletContext().getInitParameter("context/param"));
       }
}

第一种参数在servlet里面可以通过getServletContext().getInitParameter("context/param")得到
第二种参数只能在servlet的init()方法中通过this.getInitParameter("param1")取

 

一、.获取Tomcat的Context的初始化参数。

1.获取Tomcat的server.xml中设置Context的初始化参数。

例如:

[html] view plain copy print ?
  1. <Context path="/testcontext" docBase="/context"
  2. privileged="true" antiResourceLocking="false" antiJARLocking="false"
  3. debug="0" reloadable="true">
  4. <Parameter name="name" value="yangqisheng" />
  5. </Context>
<Context path="/testcontext" docBase="/context"
         privileged="true" antiResourceLocking="false" antiJARLocking="false"
         debug="0" reloadable="true">
    <Parameter name="name" value="yangqisheng" />
</Context>

方式:getServletContext().getInitParameter(String name)

2.获取在项目下的web.xml中设置Context的初始化参数。

例如:

[html] view plain copy print ?
  1. <context-param>
  2. <param-name>age</param-name>
  3. <param-value>24</param-value>
  4. </context-param>
<context-param>
    <param-name>age</param-name>
    <param-value>24</param-value>
</context-param>

方式:getServletContext().getInitParameter(String name)

二、记录Tomcat日志

1.设置日志文件

在server.xml文件中,使用logger元素来设置日志文件。

[html] view plain copy print ?
  1. <Logger className="org.apache.catalina.logger.FileLogger"
  2. prefix="localhost_log." suffix=".txt" timestamp="true"/>
<Logger className="org.apache.catalina.logger.FileLogger" 
        prefix="localhost_log." suffix=".txt" timestamp="true"/>

写日志:this.getServletContext().log("测试")

三、访问资源文件

3.1 getResource(String parh)方法:其中path必须是/开头,代表当前web应用程序的根目录。返回返回的一个代表某个资源的URL对象。

3.2 getResoutceAsStream(String parh),返回文件流。这个好处是可以使用相对于根目录的路径访问到web目录下的所有文件,而不必知道绝对路径。

例如在WEB-INF下新建文件me.properties,内容为:

name=yangqisheng

age=25

[java] view plain copy print ?
  1. this.getServletContext().getResourceAsStream("/WEB-INF/me.properties");
  2. Properties me = new Properties();
  3. me.load(is);
  4. out.write(me.getProperty("name"));
  5. out.write(me.getProperty("age"));
this.getServletContext().getResourceAsStream("/WEB-INF/me.properties");
       Properties me = new Properties();
       me.load(is);
       out.write(me.getProperty("name"));
       out.write(me.getProperty("age"));

然后在Servlet中执行:

将会打印出 yangqisheng25


本文地址:http://blog.csdn.net/yakson/article/details/9203267

转载请保留出处~!

 

1. ServletConfig接口用于描述Servlet本身的相关配置信息。ServletContext接口用于描述应用程序(server.xml中的一个Context配置,即一个虚拟目录)的相关信息。

2. Servlet配置初始化参数,例如:

[html] view plain copy print ?
  1. <servlet>
  2. <servlet-name>XXX</servlet-name>
  3. <servlet-class>Xxx</servlet-class>
  4. <init-param>
  5. <param-name>yyy</param-name>
  6. <param-value>xxx</param-value>
  7. </init-param>
  8. </servlet>
<servlet>
	<servlet-name>XXX</servlet-name>
	<servlet-class>Xxx</servlet-class>
	<init-param>
		<param-name>yyy</param-name>
		<param-value>xxx</param-value>
	</init-param>
</servlet>

这些初始化参数,可以通过this.getServletConfig.getInitParameter()获取。

3. javax.servlet.Servlet接口是Servlet的基本接口,所有定义的Servlet都要实现这个接口。Javax.servlet.GenericServlet是实现了这个借口的基础类。HttpServlet就是继承与GenericServlet类。GenericServlet实现了ServletConfig接口,所以在HttpServlet中可以直接调用ServletConfig中的方法,例如HttpServlet.getInitParameter(),HttpServlet.getServletName();HttpServlet.getServletContext()方法等,而不必使用this.getServletConfig.getInitParameter()等方式获取。

4. Servlet的init方法:

javax.servlet.Servlet接口的init方法是带有参数的,原方法是:init(ServletConfig config)方法。GeneralServlet类实现了Servlet接口后,在init(ServletConfig config)方法中实现了基本的功能后,有调用了无参数的init()方法用于扩展。所以在我们继承HttpServlet方法中,一般重写的都是无参的init方法。

5. Servlet的service方法:

这个方法是Servlet的主要方法。所有请求都将交给这个方法来执行。在HttpServlet中,service方法的作用是根据请求的类型,分别将请求交给doPost,doGet等方法去处理。所以在HttpServlet中,只需要重写doPost,doGet等方法,如果重写了doService方法,doPost,doGet方法将不起作用。

你可能感兴趣的:(web.xml中在Servlet中获取context-param和init-param内的参数)