4.5.4 Web应用程序之间的访问

优质
小牛编辑
128浏览
2023-12-01

当前的Web应用程序不仅可以通过ServletContext对象访问自己的资源,而且还可以访问其他Web应用程序中的资源。假设在server.xml中配置了如下两个Web应用程序:

<!--  本例所在的应用程序  -->

<Context docBase="demo" path="/demo" reloadable="true"

    crossContext="true" source="org.eclipse.jst.jee.server:demo">

    <Parameter name="myParam" override="false" value="newValue" />

    <Parameter name="myParam1" override="true" value="newValue1" />

</Context>

<!--  要访问的Web应用程序  -->

<Context docBase="mydemo" path="/mydemo" reloadable="true"

    source="org.eclipse.jst.jee.server:mydemo">

    <Parameter name="mydemo.param" value="mydemo.value"

        override="false" />

</Context>

上面的代码使用了两个<Context>元素分别配置了两个Web应用程序,而且在demo应用程序中的<Context>元素中使用了crossContext属性,如果该属性为true,则在当前Web应用程序中可以访问其他的Web应用程序,否则,将无法访问其他的Web应用程序,也就是无法获得其他Web应用程序的ServletContext对象。

在mydemo工程中配置了一个mydemo.param参数,同时在mydemo应用程序中的web.xml中也配置了一个初始化参数,代码如下:

<context-param>

    <param-name>name</param-name>

    <param-value>超人</param-value>

</context-param>

在demo应用程序中建立一个Servlet,并且在该Servlet中获得mydemo应用程序的ServletContext对象,并输出上述的两个初始化参数。该Servlet的代码如下:

public class OtherContextServlet extends HttpServlet

{

    protected void service(HttpServletRequest request,

            HttpServletResponse response) throws ServletException, IOException

    {

        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();

        //  获得mydemo应用程序的ServletContext对象

        ServletContext context = this.getServletContext().getContext("/mydemo");

        if(context != null)

        {

            //  输出mydemo应用程序中两个初始化参数值

            out.println("mydemo.param=" + context.getInitParameter("mydemo.param") + "<br/>");

            out.println("name=" + context.getInitParameter("name"));

        }

    }

}

OtherContextServlet的配置代码如下:

<servlet>

  <servlet-name>OtherContextServlet</servlet-name>

  <servlet-class>chapter4.OtherContextServlet</servlet-class>

</servlet>

<servlet-mapping>

  <servlet-name>OtherContextServlet</servlet-name>

  <url-pattern>/OtherContextServlet</url-pattern>

</servlet-mapping>

在浏览器地址栏中输入如下的URL:

http://localhost:8080/demo/OtherContextServlet

浏览器显示的信息如图4.9所示。

09

图4.9 显示其他Web应用程序的初始化参数