Tomcat5.5的基本配置详细说明(五)

本文深入探讨了在Web应用中为Servlet和JSP页面分配初始化参数的方法和区别,包括如何通过XML配置文件实现参数传递,并介绍了如何在JSP页面中访问这些参数。同时,文章还详细解释了不同技术之间的关键差异,如URL模式和注册名的使用,以确保客户端能够正确访问并利用初始化参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例如,程序清单5-7给出一个名为InitServlet的简单servlet,它使用init方法设置firstName和emailAddress字段。程序清单5-8给出分配名称InitTest给servlet的web.xml文件。

程序清单5-7 InitServlet.java

package moreservlets;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

 

public class InitServlet extends HttpServlet {

private String firstName, emailAddress;

public void init() {

ServletConfig config = getServletConfig();

firstName = config.getInitParameter("firstName");

emailAddress = config.getInitParameter("emailAddress");

}

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

String uri = request.getRequestURI();

out.println(ServletUtilities.headWithTitle("Init Servlet") +

"<BODY BGCOLOR=\"#FDF5E6\">\n" +

"<H2>Init Parameters:</H2>\n" +

"<UL>\n" +

"<LI>First name: " + firstName + "\n" +

"<LI>Email address: " + emailAddress + "\n" +

"</UL>\n" +

"</BODY></HTML>");

}

}

程序清单5-8 web.xml(说明初始化参数的摘录)

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app

PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<!-- ... -->

<servlet>

<servlet-name>InitTest</servlet-name>

<servlet-class>moreservlets.InitServlet</servlet-class>

<init-param>

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

<param-value>Larry</param-value>

</init-param>

<init-param>

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

<param-value>Ellison@Microsoft.com</param-value>

</init-param>

</servlet>

<!-- ... -->

</web-app>

5.2 分配JSP初始化参数
给JSP页面提供初始化参数在三个方面不同于给servlet提供初始化参数。

1)使用jsp-file而不是servlet-class。因此,WEB-INF/web.xml文件的servlet元素如下所示:

<servlet>

<servlet-name>PageName</servlet-name>

<jsp-file>/RealPage.jsp</jsp-file>

<init-param>

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

<param-value>...</param-value>

</init-param>

...

</servlet>

2) 几乎总是分配一个明确的URL模式。对servlet,一般相应地使用以http://host/webAppPrefix/servlet/ 开始的缺省URL。只需记住,使用注册名而不是原名称即可。这对于JSP

页面在技术上也是合法的。例如,在上面给出的例子中,可用URL http://host/webAppPrefix/servlet/PageName 访问RealPage.jsp的对初始化参数具有访问权的版本。但在用于

JSP页面时,许多用户似乎不喜欢应用常规的servlet的URL。此外,如果 JSP页面位于服务器为其提供了目录清单的目录中(如,一个既没有index.html也没有index.jsp文件的目

录),则用户可能会连接到此 JSP页面,单击它,从而意外地激活未初始化的页面。因此,好的办法是使用url-pattern(5.3节)将JSP页面的原URL与注册的 servlet名相关联。

这样,客户机可使用JSP页面的普通名称,但仍然激活定制的版本。例如,给定来自项目1的servlet定义,可使用下面的 servlet-mapping定义:

<servlet-mapping>

<servlet-name>PageName</servlet-name>

<url-pattern>/RealPage.jsp</url-pattern>

</servlet-mapping>

3)JSP页使用jspInit而不是init。自动从JSP页面建立的servlet或许已经使用了inti方法。因此,使用JSP声明提供一个init方法是不合法的,必须制定jspInit方法。

为了说明初始化JSP页面的过程,程序清单5-9给出了一个名为InitPage.jsp的JSP页面,它包含一个jspInit方法且放置于 deployDemo Web应用层次结构的顶层。一般,

http://host/deployDemo/InitPage.jsp 形式的URL将激活此页面的不具有初始化参数访问权的版本,从而将对firstName和emailAddress变量显示null。但是, web.xml文件(程

序清单5-10)分配了一个注册名,然后将该注册名与URL模式/InitPage.jsp相关联。

程序清单5-9 InitPage.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD><TITLE>JSP Init Test</TITLE></HEAD>

<BODY BGCOLOR="#FDF5E6">

<H2>Init Parameters:</H2>

<UL>

<LI>First name: <%= firstName %>

<LI>Email address: <%= emailAddress %>

</UL>

</BODY></HTML>


<%!

private String firstName, emailAddress;

public void jspInit() {

ServletConfig config = getServletConfig();

firstName = config.getInitParameter("firstName");

emailAddress = config.getInitParameter("emailAddress");

}

%>

程序清单5-10 web.xml(说明JSP页面的init参数的摘录)

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app

PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

 

<web-app>

<!-- ... -->

<servlet>

<servlet-name>InitPage</servlet-name>

<jsp-file>/InitPage.jsp</jsp-file>

<init-param>

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

<param-value>Bill</param-value>

</init-param>

<init-param>

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

<param-value>gates@oracle.com</param-value>

</init-param>

</servlet>

<!-- ... -->

<servlet-mapping>

<servlet-name> InitPage</servlet-name>

<url-pattern>/InitPage.jsp</url-pattern>

</servlet-mapping>

<!-- ... -->

</web-app>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值