2. 使用初始化参数配置应用程序

1. 使用应用上下文初始化参数

在编写web应用的时候,有时候需要在web应用中加入一些配置,比如下面配置一些应用加载的配置文件:

<!-- Context Configuration locations for Spring XML files -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext*.xml</param-value>
    </context-param>

可以在web.xml文件中使用<context-param>标签配置响应的参数。
下面举一个简单的例子,在web.xml中配置应用应用上下文参数

<context-param>
        <param-name>context_param1</param-name>
        <param-value>1</param-value>
    </context-param>
    <context-param>
        <param-name>context_param2</param-name>
        <param-value>2</param-value>
    </context-param>

编写servlet类,获取这写参数并返回到前端线上。

@WebServlet(name = "contextParameterServlet", urlPatterns = "/contextParameter")
public class ContextParameterServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         //使用getInitParameter获取配置的初始化参数
        String param1 =req.getServletContext().getInitParameter("context_param1");
        String param2 =req.getServletContext().getInitParameter("context_param2");

        PrintWriter printWriter = resp.getWriter();
        printWriter.println("param1 "+param1);
        printWriter.println("param2 "+param2);
        printWriter.flush();
    }
}

上面的代码先获取servletContext,再通过getInitParameter的方式获取相应的参数。
在浏览器中访问 http://localhost:8080/contextParameter 会看到如下的结果:

2. 使用Servlet初始化参数

上面是使用servletContext获取初始化参数,这个参数是整个上线文共享的,如果只想在单个servlet中配置一些参数,可以使用在web.xml文件中的<servlet>标签内配置<init-param>标签,下面举个例子。

@WebServlet(
        name = "servletParameterServlet",
        urlPatterns = {"/servletParameter"},
        initParams = {@WebInitParam(name = "server", value = "mysql")
                , @WebInitParam(name = "database", value = "user")}
)
public class ServletParameterServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //使用servletConfig类进行获取
        ServletConfig sc = this.getServletConfig();
        String server = sc.getInitParameter("server");
        String database = sc.getInitParameter("database");
        resp.getWriter().println("server : [" + server + "] database : [" + database + "]");
    }
}

在获取servlet的配置参数时,使用ServletConfig类进行获取。
上面的代码使用了注解的方式进行配置,配置的初始化参数使用initParams,也可以在配置文件中配置如下:

 <servlet>
        <servlet-name>servletParameterServlet</servlet-name>
        <servlet-class>com.fishfree.javaweb.servlet.ContextParameterServlet</servlet-class>
        <init-param>
            <param-name>server</param-name>
            <param-value>mysql</param-value>
        </init-param>
        <init-param>
            <param-name>database</param-name>
            <param-value>user</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>servletParameterServlet</servlet-name>
        <url-pattern>/servletParameter</url-pattern>
    </servlet-mapping>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容