Java简单web项目之错误总结
在学习Java web的时候,犯下很多错误,现在把错误总结起来,方便以后使用。
首先,Java web 的信息传递大致步骤是:
客户端(JSP)>>Servlet>>JDBC>>数据库>>JDBC>>Servlet>>客户端(JSP)
其次,JDBC连接数据库的大致步骤是:
- 把驱动包添加到项目中
- 加载驱动
- 获取数据库连接
- 写sql语句
- 执行sql
- 获取返回值
- 关闭流
错误一、驱动包版本跟Java版本不对应;
解决方法:引用对应版本的驱动(一般驱动可以引用同版本或者更老版本,避免使用过高版本的驱动)
错误二、数据库连接不上;
可能出现问题的地方:
1、 驱动未加载。因为加载驱动需要获取驱动的对应包类的路径,如果路径写错,那就会加载驱动失败,自然连接不上数据库。
2、 获取数据库连接失败;
获取数据库连接是通过DriverManager类的getConnection方法,该方法需要三个参数;
第一个参数 数据库的连接地址;格式为 [JDBC:数据库://IP 地址:端口号/数据库名字]
注意:IP地址是数据的IP地址,如果本地的就是:localhost或者127.0.0.1 ;
端口号是数据的端口号,SQLserver的默认是1433,MySql的是3306,
Oracle的是0521;
数据库名字是本项目的数据来源是哪个数据库就的名称,比如我要查user表,而user表在text数据库中,那就写text;
Connection con=DriverManager.getConnection(url, username, password);
当数据库连接不上是,上面的con变量是为null值,如果调用con里的方法就会报一个空指针的异常。
3、 每次连接数据库获取数据之后忘记关闭连接;
解决方法:建议封装一个JDBC的工具类
特别注意,close连接之前一定要判断连接是否存在,存在才关闭,不然也会报空指针异常。
错误三、在浏览器输入Servlet类的路径显示找不到路径;
可能出现问题的地方:
一、 连接没写对,严重区分大小写;
二、没有配置XML文件:在XML中的web-qpp中添加下列内容
Servlet中的servlet-name定义servlet名字(随便定义都行);
Servlet中的servlet-class中写servlet类的路径
Servlet-mapping中的 servlet-name定义servlet名字,跟Servlet中的servlet-name的名字对应,
Servlet-mapping中的url-pattern中定义连接路径,如果定义了/servlet/WebServlet,那么在浏览器里输入项目名/servlet/WebServlet可直接连接到对应的servler类。
特别注意:js的ajax提交破坏Servlet的重定向和转发;
因为JavaScript相对HTML是一个独立的,所以在servlet中重定向和转发时,servlet只会把重定向或者转发之后的页面返回给ajax,不会直接改变原页面。
例如:我在一个页面定义一个按钮,然后按钮的点击方法里面使用ajax
然后我在servlet中写重定向到另一个页面,另一个页面的内容是显示“这是异常页面”
然后结果如下:
点击之后如下: