在web阶段中,我们不在是完全的java代码,而是结合jsp网页,实现了一些简单的具体的网站的功能.代码量也随之增高.有了jsp的加入,控制台报的错误又更加丰富了.感觉web阶段的错误.并不是简单的debug能够解决的.有时更觉得想要debug却无从下手.而且因为配置文件等问题.即使是复制昨天的代码也会因为各种小问题.而现实不出效果.在这里我就分享一些我在web阶段所遇到的控制台报错和可能产生的原因. 首先,页面出现404相信大家都遇到过.错误信息404带表的就是找不到页面.一般这种信息出现的时候当排除你是浏览器的地址路径名写错后.可以看下是表单提交的路径写错了 file:///C:\Users\sjw\AppData\Local\Temp\ksohtml\wpsDB91.tmp.jpg 图片1...
在form表单中提交的地址前面加上了/,这样就造成访问的路径是tomcat根目录找myweb1路径,但实际上servlet的网址是tomcat地址加上项目的root名称和myweb1 问题解决方发,去掉form表单中action属性的中的/解决。 页面报错误代码500,这也是个经常出现的错误. file:///C:\Users\sjw\AppData\Local\Temp\ksohtml\wpsDB92.tmp.jpg 图片2
这类错误往往是复制servlet之后servlet的配置文件没写或者写错了,检查web.xml的该servlet的配置即可. 有一种情况就是写代码逻辑都没错,在web层debug也能得到相应的数据,但是页面的数据就是显示不出来.者中情况就要检查在jsp中接收的参数是否是正确的.一般早web层接收jsp中的参数都不会写错.但经常会在jsp中调用往往就会写错.尤其是在双重foreach 循环遍历时的el表达时 <c:forEach var="order" items="${ pageBean.list }"> 总金额:${ order.total } <c:forEach var="orderItem" items="${ order.orderItems }"> <td width="20%"> ¥${ orderItem.product.shop_price } </td> <td width="10%"> ${ orderItem.count } </td> </c:forEach> </c:forEach> 虽然内层的orderItems是外层的list中的属性但既然外层的var中写的是order内层就应写如上的order.order.Items而不是pageBean.list.orderItems.还有一种查询不到商品信息的情况,在servlet里面有集合List<Product>,打印一下集合,结果是null。说明没查询到商品信息集合,那就是service层或者dao层写错了。
发现dao层的代码,query方法查询后,没有对result重新复制,导致return返回的结果为null。 可以发现我所举的这几种错误,都是因为少写或者写错而导致.但就是这种问题最让头疼.发现问题原因是因为少写返回值,错也一些东西时也是最为无奈的.所以大家在平时写的时候尽量细心.减少这种问题的出现.
|