[ Team LiB ] |
![]() ![]() |
Recipe 6.2 Using an External Configuration to Include a Resource in a ServletProblemYou want to use an external configuration file (such as web.xml) to configure the resource that is included in a servlet. SolutionUse init parameters with the including servlet to allow the external configuration of the include mechanism, then include the resource with the javax.servlet.RequestDispatcher.include(request,response) method. DiscussionYou may want to periodically change the resource that a servlet includes, without changing and recompiling the servlet code. You can make these changes by altering the servlet's init parameters in web.xml. Using this strategy, either the included resource's file location itself or the method of retrieving the resource (such as from a database) can change. You can ensure that the servlet imports the correct resource by altering the content of the param-value element. Example 6-3 shows a servlet that is configured to include a file named privacy.jspf. This represents a standard privacy statement for the web application. Example 6-3. Specifying an included resource by using the servlet's init-param element<servlet> <servlet-name>PrivacyServlet</servlet-name> <servlet-class>com.jspservletcookbook.IncludeServlet</servlet-class> <init-param> <param-name>included-resource</param-name> <param-value>privacy.jspf</param-value> <init-param> </servlet> Example 6-4 shows the doGet( ) method of the PrivacyServlet. This method gets the value of the included-resource init parameter (privacy.jspf), then includes the JSP segment. Example 6-4. Including a resource specified by an init parameterpublic void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
java.io.IOException {
response.setContentType("text/html");
java.io.PrintWriter out = response.getWriter( );
out.println("<html>");
out.println("<head>");
out.println("<title>Include Servlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Welcome To Our Universe</h1>");
out.println("Imagine the rest of the page here.<br><br>");
//Include the privacy information based on an init-param value
String includeRes = (String) getInitParameter(
"included-resource");
//get a RequestDispatcher object based on the init-param value
RequestDispatcher dispatcher = request.
getRequestDispatcher(includeRes);
dispatcher.include(request, response);
out.println("</body>");
out.println("</html>");
}
Example 6-4 gets a RequestDispatcher representing the configured init-param value with this code: //the includeRes variable holds the init-param value "privacy.jspf" RequestDispatcher dispatcher = request.getRequestDispatcher(includeRes); Then the dispatcher.include(request,response) method is replaced by the output of the privacy.jspf file. Example 6-5 shows the JSP segment that the PrivacyServlet includes. The JSP's content has some HTML tags that fit into the HTML represented by the including page. Example 6-5. A JSP segment included in a servlet with a RequestDispatcher<%@page errorPage="/error.jsp"%> <p><strong>Parker River Net Solutions Privacy Policy</strong></p> <p>Any personal information you provide to us regarding Web- or software-development services or shareware software, such as your name, address, telephone number, and e-mail address, will not be released, sold, or rented to any entities or individuals outside of Parker River Net Solutions.</p>
All the included JSP does is specify an error page composed of some formatting-related HTML tags and text. Figure 6-2 shows the browser page for the PrivacyServlet. Figure 6-2. A web page with an included JSP segment![]()
See AlsoRecipe 6.3 on including resources that have nested includes; Recipe 6.4-Recipe 6.8 on including resources in JSPs; Chapter SRV.14.2.5 of the Servlet Recipe 2.4 specification; Chapter JSP.1.10.3 of the JSP 2.0 specification on including files in JSPs. ![]() |
[ Team LiB ] |
![]() ![]() |