1. JDBC常见异常
1.1 SQLException
java.sql.SQLException是处理JDBC时常见的exception对象,用来表示JDBC操作过程中发生的具体错误 。
一般的SQLException都是因为操作数据库时出错,比如Sql语句写错,或者数据库中的表或数据出错 。
常见异常:
1)登录被拒绝
可能原因:程序里取键值对信息时的大小写和属性文件中不匹配
2)列名无效
可能原因:查找的表和查找的列不匹配
3)无效字符
可能原因:sql语句语法有错,比如语句结尾时不能有分号
4)无法转换为内部表示
可能原因:结果集取数据时注意数据类型
5)表或者视图不存在
可能原因:检查SQL中的表名是否正确
6)不能将空值插入
可能原因:检查执行insert操作时,是否表有Not Null约束,而没有给出数据
7)缺少表达式
可能原因:检查sql语句的语法
8)SQL命令未正确结束
可能原因:检查sql语句的语法
9)无效数值
可能原因: 企图将字符串类型的值填入数字型而造成,检查sql语句
1.2 ClassNotFoundException
可能原因:
1)db.properties文件路径不正确
2)驱动类名写错
3)没有导入驱动jar包
1.3 网络错误
可能原因:
1)保证服务启动:报错可能是监听异常(listener refused the connection…)
2)url写错:报错时会有延迟
2. Servlet常见异常
容器如何找到service方法
2.1 404错误
404数字是什么?
它是服务器执行完客户端的请求以后,返回给客户端的一个执行结果的状态编码。
产生的原因:Web服务器(容器)根据请求地址找不到对应资源。
Eg:
1)服务器没有启动成功
2)地址错误(拼写不正确,字母大小写错误)
3)web.xml文件中的两个< servlet-name >不一致
4)工程没有部署成功
5)Web应用程序部署结构没有遵守Servlet规范
6)超链接中的href属性值有误
7)表单中的action属性值有误
404错误的解决方法
1)重启服务器
2)按照http://ip:port/appName/ url-pattern
规则检查请求地址,区分大小写
3)检查 web.xml文件中的< servlet >和< servlet-mapping >节点中的两个< servlet-name >是否一致
4)只有部署以后的工程才能访问
5)检查工程结构是否符合规范
6)检查超链接指定资源格式
7)检查表单中action数据提交路径
2.2 405错误
产生的原因:Web服务器(容器)找不到service()方法处理请求。
Eg:
1)service方法名称写错
2)service方法参数与标准不一致
3)service方法异常,返回值类型与标准不一致
405错误的解决方法
1)检查service( )是否存在
2)检查service( )的签名(方法名,参数,返回值,异常类型是否与覆盖的父类中的方法一致)
3)使用@Override注解帮进行语法校验
2.3 500错误
产生的原因:程序在运行过程出错(源代码错误)
Eg:
1)Servlet类没有继承HttpServlet或实现Servlet接口
2)web.xml文件中的< servlet-class >写错
3)service方法中的代码运行时抛出异常
500错误的解决方法
1)检查 servlet-class 中的包名、类名是否正确
2)检查Servlet类是否继承HttpServlet或实现Servlet
3)检查Servlet的service方法中的代码是否运行出错
3. JSP开发常见问题
3.1 异常处理
1)编程式的异常处理
使用转发跳转到指定页面进行提示说明
try{
//... ...
}catch(Exception e){
request.getRequestDispatcher(url).forward(request,response);
2)容器中的声明式处理
step1:将异常抛给容器,但底层的错误提示不要返回给用户
注意:异常只允许抛service指定的异常,不能超出指定范围
使用如下写法:
throw new ServletException(e);
step2:在web.xml文件中配置错误处理页面节点
<!--配置错误处理页面-->
<error-page>
<exception-type>
java.servlet.ServletException
</exception-type>
<location>/error.jsp</location>
</error-page>
3.2 路径问题
1)路径使用
链接地址
<a href= "url" ></a>
表单提交
<form action = "url" >
重定向
response.sendRedirect(url)
转发
request.getRequestDispatcher(url)
2)相对路径
从当前文件出发到达目标文件所经过的路径叫做相对路径
书写格式不以“ / ”开头
退至上一级目录以“ . . / ”开头
3)绝对路径
以 ” / ” 开头的路径都是绝对路径,不以当前文件的位置作为起- 始,而是以一个固定位置作为起始到达目标文件所经过的路径
这个固定的位置可能是应用名,也可能是应用名之后
4)路径的处理技巧
在使用绝对路径时:
链接地址、表单提交、重定向是从应用名开始写
转发 是从应用名之后开始写
获得应用的实际部署名称可使用如下方法:
String request.getContextPath();