`
lusxw
  • 浏览: 6724 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

config对象的一个例子出错

阅读更多

   在《JSP应用开发详解》中,讲解config对象时给出了一个计数器的例子,在实现的过程中希望计数器从1000开始计数。书中给出的代码是这样的:

xml 代码
  1. <%@ page contentType="text/html; charset=GBK" %>  
  2. <html>  
  3.   <head>  
  4.     <title>  
  5.       config   
  6.     </title>  
  7.   </head>  
  8.   <body bgcolor="#ffffff">  
  9.     <h1>  
  10.       Test config   
  11.     </h1>  
  12.     <%   
  13.     int org=0;   
  14.     int count=0;   
  15.     try{   
  16.       org=Integer.parseInt(config.getInitParameter("counter"));   
  17.     }catch(Exception e)   
  18.     {   
  19.       out.println("org:"+e);   
  20.     }   
  21.    try{     
  22.     count=Integer.parseInt((application.getAttribute("config_counter").toString()));   
  23.    }   
  24.     catch(Exception e)   
  25.     {   
  26.       out.println("count:"+e);   
  27.     }   
  28.          
  29.       if(count<org)   
  30.       {   
  31.         count=org;   
  32.       }   
  33.       out.println("此页面已经访问了"+count+"次");   
  34.       count++;   
  35.       application.setAttribute("config_counter",new Integer(count));   
  36.        
  37.       
  38.     %>  
  39.   </body>  
  40. </html>  

运行的结果倒也正常,没有抛出任何异常。不过我在敲这个例子的时候偷了点懒,写成了这个样子:

xml 代码

  1. <%@ page contentType="text/html; charset=GBK" errorPage=""%>  
  2. <html>  
  3.   <head>  
  4.     <title>  
  5.       config   
  6.     </title>  
  7.   </head>  
  8.   <body bgcolor="#ffffff">  
  9.     <h1>  
  10.       Test config   
  11.     </h1>  
  12.     <%   
  13.     int org=0;   
  14.     int count=0;   
  15.     try{   
  16.       org=Integer.parseInt(config.getInitParameter("counter"));   
  17.       count=Integer.parseInt((application.getAttribute("config_counter").toString()));   
  18.       if(count<org)   
  19.       {   
  20.         count=org;   
  21.       }   
  22.       out.println("此页面已经访问了"+count+"次");   
  23.       count++;   
  24.       application.setAttribute("config_counter",new Integer(count));   
  25.     }catch(Exception e)   
  26.     {   
  27.       out.println("org:"+e);   
  28.     }   
  29.     %>  
  30.   </body>  
  31. </html>  

把异常处理放在一起了 ,结果程序运行起来就出错了,报的异常是:org:java.lang.NullPointerException 。

不明白的就是这两种写法为什么不一样呢?如果第一次通过application.getAttribute()读取变量会出错的话,为什么第一种写法就没有打印出任何异常呢?请教了,谢谢。

分享到:
评论

相关推荐

    Flex+java+mysql通信例子

    6. **客户端调用**:在Flex代码中,创建一个Service对象,指向配置好的AMF通道,并绑定到之前在Java中定义的方法。通过Service对象调用Java方法,实现数据的获取或更新。 7. **数据绑定**:将从Java服务获取的数据...

    mybatis基本配置及例子.zip_mybatis_mybatis sql server_mybatis 实例_mybati

    MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs...

    Struts Struts1例子Struts注意事项

    接下来,我们通过一个简单的例子来了解Struts1的应用。假设我们要创建一个用户登录的功能。首先,创建一个名为LoginForm的ActionForm类,包含用户名和密码字段,用于接收和验证用户输入。然后,编写一个LoginAction...

    spring+hibernate+struts登陆例子

    标题 "spring+hibernate+struts登陆例子" 涉及的是一个经典的Java Web开发框架集成示例,其中Spring负责依赖注入和控制层,Hibernate处理数据持久化,而Struts则作为MVC架构中的视图和控制器部分。这个例子可能是...

    Java Config-开源

    在这个例子中,`@Configuration`注解标记了DatabaseConfig类是一个配置源,`@Bean`注解的方法`dataSource()`将创建一个DataSource实例。`@Value`注解用于从外部属性文件中注入值,使得配置更具灵活性和可扩展性。 ...

    一份关于windows不错的资料(附:xp出错提示).doc

    这些例子中一个是SCSI驱动,用于SCSI硬盘或控制器,另一个也是SCSI驱动。 4. **应用程序**:如CALC.EXE是计算器,它是一个内置的实用程序,用于执行基本和复杂的数学计算。CDPLAYER.EXE是CD播放器应用程序,可以...

    Struts+Spring+Hibernate(SSH)例子

    这个文件名可能指的是一个特定的SSH集成示例或版本,可能是2011年发布的一个教学资料或者项目模板。在实际开发中,SSH的集成和使用会随着版本的更新而有所变化,例如Struts2替代了最初的Struts1,Spring和Hibernate...

    C#调用WCFService示例

    在上述代码中,`GetData`是服务接口中的一个方法,接受一个整型参数并返回一个字符串。`client.Close()`确保了服务客户端的资源被正确释放。 在实际开发中,还需要考虑错误处理、安全性、事务支持、性能优化等因素...

    结构体指针

    例如,我们可能会定义一个包含波特率、数据位、停止位和校验位的串口配置结构体: ```c typedef struct { int baud_rate; // 波特率 int data_bits; // 数据位 int stop_bits; // 停止位 int parity; // 校验位...

    MyBatis框架.pdf

    以一个简单的例子来说明,如果我们要通过JDBC查询数据库表tb_user的所有记录并封装到List中,我们需要编写大量的样板代码,包括注册驱动、获取连接、创建PreparedStatement、执行SQL、遍历结果集并构造User对象。...

    Hibernate 简单入门讲解一(简单的数据插入讲解)

    Hibernate 是Java开发中的一个持久化框架,它通过提供对象-关系映射工具,消除了Java应用程序与关系数据库之间的直接耦合。它将Java类与数据库表对应,将Java对象与SQL语句对应,使得开发人员可以专注于业务逻辑,而...

    Go-利用来自环境变量的数据填充一个结构体

    本文将深入探讨如何利用环境变量来填充一个结构体,这在处理配置信息或跨平台项目时非常有用。我们将讨论相关的Go语言特性,以及如何通过`os`和`envstruct`库来实现这一目标。 首先,让我们了解环境变量。环境变量...

    Dto转实体类 AutoMapper

    AutoMapper是一个强大的.NET库,它简化了对象到对象之间的映射过程。在没有AutoMapper的情况下,开发者需要手动编写大量的复制粘贴代码来完成这种映射,这不仅效率低下,还容易出错。AutoMapper通过配置映射规则,...

    SqlHelper源码及使用实例

    2. **ExecuteReader()**:执行查询语句并返回一个DataReader对象,可以用来遍历查询结果。 3. **ExecuteScalar()**:用于执行返回单个值的SQL语句,例如COUNT(*)或SELECT TOP 1。 4. **ExecuteDataset()**:执行...

    VB读取数据文件示例

    然后,我们定义了一个`StreamReader`对象,通过`Using`语句确保文件读取完成后会被正确关闭,避免资源泄露。`StreamReader.ReadLine()`方法用于逐行读取文件内容,直到文件末尾。 对于非文本的二进制文件,如资源...

    三层B/S数据库访问层两个通用类文件ClassBase+SqlHelper

    `ClassBase`类可能有一个静态方法或属性,用于从应用程序配置文件(如`app.config`或`web.config`)中读取并返回这些信息。这样做可以使得数据库配置信息易于管理和更新,而不需修改代码本身。开发者只需在配置文件...

    java辅助开发的两个封装类共6页.pdf.zip

    Apache Commons Lang库就是一个很好的例子,提供了大量实用的工具方法。 5. **异常处理封装**:将可能抛出的异常进行封装,提供统一的错误处理,简化调用者的代码。 在辅助开发过程中,封装类的使用可以大大提高...

    ShuntPHP库用于通过SSH在多个远程机器上执行命令

    在这个例子中,我们创建了一个`Configuration`对象,配置了服务器列表、用户名和私钥路径,然后通过`Runner`实例来执行命令。运行结果会以数组形式返回,键是服务器名,值是命令的执行结果。 Shunt还支持更复杂的...

    hibernate_注解

    在上面的例子中,`@Entity` 注解表明 `Teacher` 类是一个实体,它将映射到数据库中的一个表。`@Id` 注解标记的 `id` 字段是主键,表明它是表中的唯一标识符。 为了配置 Hibernate 使用注解,我们需要创建一个 `...

    Hibernate自动生成表demo

    在Java开发中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式处理数据库操作。在本教程中,我们将探讨如何利用Hibernate的注解功能,通过实体类自动生成数据库中的表。这极大...

Global site tag (gtag.js) - Google Analytics