老师说:con值为空,让我再思考一下。但是,我就是坚持我的观点 本帖最后由 bonlog 于 2013-01-29 22:56:06 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 con的值在构造函数中但是我想你,你调用doPost的时候会自动帮你调用构造方法,那时候调用的是哪个构造方法呢?AddMessageServlet这个方法里面你添加一个输出方法System.out.println("运行了该方法");然后运行一下,如果打印出了这个语句,那么就是你对的。 首先教你一个方法,在构造函数打个断点,请求时看是否进入断点,就可以断定con变量是否初始化了。你可以试一试将con变量的初始化放在init方法中。建议lz进一步理解servlet的生命周期。在Servlet接口中定义了5个方法,其中3个方法代表了Servlet的生命周期:1、init方法:负责初始化Servlet对象。2、service方法:负责响应客户的请求。3、destroy方法:当Servlet对象退出生命周期时,负责释放占用的资源。 谢谢了。只有一个构造方法,你为什么不能自动调用啊。谢谢了。我在doGet中加了一句if(con==null){System.out.println("null");}结果其值为空 很感谢你的指点:1.是不是在servlet中,不使用构造函数来初始化呢?正确的方法是在init中呢?谢谢了2.service我一次未使用过?3.在本例中,应该如何修改 httpServlet继承了GenericServlet类,此类有两个init方法,一个带参数ServletConfig,一个不带参数的。你可以覆盖掉父类的无参init方法,把构造函数的内容放到init方法中。 明显没给 con 赋值,空指针异常。 容器在创建servlet时,肯定是会调用构造函数的con为空,还是应该看下构造函数里获取连接的代码 你只定义了private Connection con;没赋值怎么用。掉一下basedao。 什么是basedao?在哪里啊? servlet生命周期开始的第一步肯定是先构造然后才init, 如果你构造函数里con确实被正确初始化了的话那service方法里肯定是可以用的,因为servlet的实例在容器里只有一个。init会紧随构造方法之后被调用,你好好看看控制台输出,你的con被正确初始化了吗。你同样原理在构造方法里new一个Object或者一个实体类简单的赋个值,肯定在service方法里可以用。绝对是你初始化connection的时候有问题。 楼主,servlet 是单实例的,也就是说,所有的对同一个 servlet 的访问,服务端只会产生一个 servlet 对象,这样,每个 servlet 类最多只会调用一次构造方法,如果你在构造器里创建connection,则这个servlet 都会共享这个connection。而在WEB环境下,是多线程运行的,这样你的一个连接被多个线程共享。如果你在某个地方关闭连接,则其它的线程都不可以使用连接了。 构造函数最后一个catch外加上一个 this.con=con; 在使用con的方法最上面 new一下这个类运行构造方法 构造方法不会自动运行 系统只会检测有没有构成方法 没有就默认创建一个无参的 有的话就不创建了 你想运行构造方法 还是要new这个类 在doget方法里加上 new AddMessageServlet ();//调用构造方法 一个ext的grid分页栏显示不出来 第一个EJB 异常Need to specify class name in environment。。。 Jsp中的Application使用 ★★这个问题还没有解决,明天怎么上班?! 有谁能说说使用displaytag的要点呀? javaBean继承问题 关于在linux下配置数据库连接池的问题!!!! 急!servlet的问题? 思路 使用JRun4如何部署Servlet程序? servlet连接数据库 一个jquery的问题
但是我想你,你调用doPost的时候会自动帮你调用构造方法,那时候调用的是哪个构造方法呢?
AddMessageServlet
这个方法里面你添加一个输出方法
System.out.println("运行了该方法");
然后运行一下,如果打印出了这个语句,那么就是你对的。
你可以试一试将con变量的初始化放在init方法中。
建议lz进一步理解servlet的生命周期。
在Servlet接口中定义了5个方法,
其中3个方法代表了Servlet的生命周期:
1、init方法:负责初始化Servlet对象。
2、service方法:负责响应客户的请求。
3、destroy方法:当Servlet对象退出生命周期时,负责释放占用的资源。
只有一个构造方法,你为什么不能自动调用啊。谢谢了。
我在doGet中加了一句
if(con==null){System.out.println("null");}
结果其值为空
1.是不是在servlet中,不使用构造函数来初始化呢?正确的方法是在init中呢?谢谢了
2.service我一次未使用过?
3.在本例中,应该如何修改
你可以覆盖掉父类的无参init方法,把构造函数的内容放到init方法中。
con为空,还是应该看下构造函数里获取连接的代码
没赋值怎么用。
掉一下basedao。
什么是basedao?在哪里啊?
在使用con的方法最上面 new一下这个类运行构造方法