分配servlet初始化参数

分配servlet初始化参数

可以通过init-param元素(包含param-name和param-value这两个子元素)来为servlet提供初始化参数。例如,在下面的示例中,如果通过http://host/webAppPrefix/showinitValue形式的URL来访问InitServlet,它将从其init方法调用getServletConfig().getInitParameter("firstName")来得到"Larray";调用getServletConfig().getInitParameter("emailAddress")来得到"ellison@microsoft.com"。

 

  1. <servlet>     
  2. <servlet-name>InitTest</servlet-name> 
  3. <servlet-class>coreservlets.InitServlet</servlet-class> 
  4. <init-param> 
  5. <param-name>firstName</param-name> 
  6. <param-value>Larry</param-value> 
  7. </init-param> 
  8. <init-param> 
  9. <param-name>emailAddress</param-name> 
  10. <param-value>ellison@microsoft.com</param-value> 
  11. </init-param> 
  12. </servlet> 
  13. <servlet-mapping> 
  14. <servlet-name>InitTest</servlet-name> 
  15. <url-pattern>/showInitValues</url-pattern> 
  16. </servlet-mapping>    

在处理初始化参数时,重点关注以下内容。

返回值getInitParameter的返回值总是一个String值。所以对于整数类型的参数,可以使用Integer.parseInt来获得一个int值。

返回空值如果传给getInitParameter方法的参数在servlet的init-param声明中没有出现,函数将返回null值。因为除了Java开发人员,没有人可以修改web.xml,所以应该养成习惯总是在代码中检查null值。

在JSP中初始化JSP页面使用jspInit而不是init方法。JSP页面还要用jsp-file元素来代替servlet-class,正如2.4节描述的一样。JSP页面的初始化将在下一节讨论。

默认URL初始化参数仅用于使用与其名称相关联的自定义URL路径访问时。所以在这个例子中,firstName和emailAddress初始化参数在仅用于http://host/webAppPrefix/showInitValues这个URL进行访问时。但在使用http://host/webAppPrefix/servlet/coreservlets.InitServlet访问时无效。

核心警告:servlet中的初始化参数在使用其默认URL访问时无效。

比如,清单2.8显示了一个简单的servlet,即InitServlet,它使用init方法来设置firstName和emailAddress。清单2.9显示了web.xml文件的部分内容,其中演示了为servlet配置/showInitValuesURL。图2.12和图2.13显示了分别使用自定义URL(正确的)和默认URL(错误的)两种方式来访问servlet的结果。

记住哪个URL可以访问哪个不能访问实在太难。在实际的Web应用中,通常会禁用servlet默认访问路径,因而每个servlet只有一个URL。只有快测试时才会保留servlet特有的默认请求路径。

清单2.8 InitServlet.java

 

  1. package     coreservlets; 
  2. import java.io.*; 
  3. import     javax.servlet.*; 
  4. import     javax.servlet.http.*; 
  5. /**     Simple servlet used to illustrate servlet  
  6. *     initialization parameters.  
  7. */
  8. public class     InitServlet extends HttpServlet { 
  9. private String firstName = "First     name is missing.";     
  10. private String emailAddress     = "Email address is missing"; 
  11. public void     init() { 
  12. ServletConfig     config = getServletConfig(); 
  13. if     (config.getInitParameter("firstName")     != null) {     
  14. firstName     = config.getInitParameter("firstName");     
  15. if     (config.getInitParameter("emailAddress")     != null) {     
  16. emailAddress     = config.getInitParameter("emailAddress");     
  17. public void     doGet(HttpServletRequest request, 
  18. HttpServletResponse     response) 
  19. throws ServletException,     IOException { 
  20. response.setContentType("text/html"); 
  21. PrintWriter     out = response.getWriter(); 
  22. String uri =     request.getRequestURI(); 
  23. out.println("<!DOCTYPE     HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + 
  24. "Transitional//EN\">" + "\n" + 
  25. "<HTML>\n" + "<HEAD><TITLE>" + 
  26. "Init     Servlet" + "</TITLE></HEAD>\n" + 
  27. "<BODY     BGCOLOR=\"#FDF5E6\">\n" +     
  28. "<H2>Init     Parameters:</H2>\n" + 
  29. "<UL>\n" + 
  30. "<LI>First     name: " + firstName + "\n" +     
  31. "<LI>Email     address: " + emailAddress + "\n" +     
  32. "</UL>\n" + 
  33. "</BODY></HTML>"); 
  34. }

清单2.9 web.xml (节选,说明初始化参数)

 

  1. <?xml version="1.0" encoding="ISO-8859-1"?> 
  2. <web-app     xmlns="http://java.sun.com/xml/ns/j2ee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation= 
  5. "http://java.sun.com/xml/ns/j2ee  
  6. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"  
  7. version="2.4"> 
  8. <servlet> 
  9. <servlet-name>InitTest</servlet-name> 
  10. <servlet-class>coreservlets.InitServlet</servlet-class> 
  11. <init-param> 
  12. <param-name>firstName</param-name> 
  13. <param-value>Larry</param-value> 
  14. </init-param> 
  15. <init-param> 
  16. <param-name>emailAddress</param-name> 
  17. <param-value>ellison@microsoft.com</param-value> 
  18. </init-param> 
  19. </servlet> 
  20. <servlet-mapping> 
  21. <servlet-name>InitTest</servlet-name> 
  22. <url-pattern>/showInitValues</url-pattern> 
  23. </servlet-mapping> 
  24. <!-- ...     --> 
  25. </web-app>    

 

源文档 <http://book.51cto.com/art/200912/170859.htm>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值