学习Servlet

笔记:

1.创建自己的Servlet文件时,在tomcat下的Webapps里创建自己的文件夹,文件夹里要创建WEB-INF,而配置文件web.xml和classes都要放在WEB-INF文件夹下


否则网页在打开localhostt本地文件的时候会报404错误!


接着就写servlet程序过程中,遇到的一些问题,记录一下,权当给自己留点经验吧。


2.关于Unable to compile class for JSP的解决方法

我在百度问题的时候,看到不少都是报的这种错误,有的是使用中英文符号出错啦,有的是使用javaee版本不一样jar包冲突啦之类的。但是同学们!!(敲黑板) 不光要看问题啊!还要看看下面问题说了啥啊!下面指出,Only a type can be imported.而且问题很明显出现在JSP页面上,错误意思为:无法编译JSP。那我们就要从JSP里找问题。我在百度的时候,偶然看到一个帖子说是不小心引入了一个什么包的,原贴在哪儿我现在也给忘了,不过就是突然灵光一闪,回去JSP页面顶部去查看我是不是引入了什么包。结果发现:


有没有!!和问题显示的一毛一样啊!!果然就是因为我不知道什么时候误操作引入了这么一个东西,结果JSP页面就无法编译。删掉以后,果然就能顺利运行。


3.首先抛出问题:关于 getWriter() has already been called for this response 的错误解决办法

报错如下:


翻译:getWriter()已经被访问这个响应 

我记得我是在做下载操作的时候遇到的这个错误,从服务器以输出流的形式下载文件

之前使用了PrintWriter out = response.getWriter();

在下载的时候,又使用了ServletOutputStream out = response.getOutputStream();

所以产生冲突。问题本质是 getWriter()和getOutputStream()不能同时使用。

解决方法 :可以在前面写 response.reset() 就好了

原贴参考:http://blog.sina.com.cn/s/blog_4f92b1870100w2fg.html


4.遇到的数据库连接方面的问题(关于数据库连接,回头我在博客上会分享几篇写关于JDBC连接的底层代码的实例 很实用)

照惯例,先上问题:Can not issue data manipulation statements with executeQuery()的错误解决办法

这个问题简单说 原因是我在statement的executeQuery()函数中放入了插入语句insert,才报以上的错

结论:statement的executeQuery(sql)函数的意思是执行查询,所以函数里只能放入select 语句,放入增删改语句就会报错。

要执行增删改语句,要使用 statement的execute(sql) 函数。


5.数据库语句问题(在这里摔了好几个跟头 特地写出来提醒自己)

问题:关于Column count doesn't match value count at row 1的解决方法


这个问题说起来其实很简单。其实就是SQL插入语句中,如果给出的要插入的值不完整,则应指定表中的对应的列。

问题描述:在这里我设定 id 自增长,所以在写插入语句的时候,只给出 username 和 password 两个值,因为没给指定列,所以找不到 values 赋值给谁。

解决方法:


补充:

写插入语句时,如果不在语句中指明表中的列,直接使用insert into 表名 value(”值”,”值”)时,则应把表中所有的列的值都写上,就算是为null也要写上。如果值不给完全的话,则应指定表中的列名再给与对应的值。否则程序既不会报错,也不会插入相应记录。


6.关于java.lang.IllegalStateException的解决方法

问题解释:java.lang.IllegalStateException异常,该异常表示,当前对客户端的响应已经结束,不能在响应已经结束(或说消亡)后再向客户端(实际上是缓冲区)输出任何内容。
我自己的代码里出问题的地方在这里:


如上图,我  break 忘记写上,导致在执行转向的时候,同时程序继续向下执行了 case ”Return“ 的转向,具体是个什么过程我也不知道。。
可以参考参考这个帖子:http://my.oschina.net/guhai2004/blog/187041
里面讲得挺详细的。

7.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值