利用ajax获取网页表单数据,并存储到数据库之一(使用JDBC)
所谓JDBC就是利用java与数据库相连接的技术,从数据库获取既有的信息或者把网页上的信息存储到数据库。
这里简单的介绍公司的一个小项目中的一部分,由于代码较多,所以用图片形式进行展示。源码请查看源码库,稍后上传。


图1-信息图 图2-用户图
如上图所示的两个模块,对应着数据库当中的两张表。第一张表用来显示部分岗位的信息,第二张表示用户信息表,我们用来显示用户部分信息。
本次所使用的数据库为ORACLE,所以必须首先在数据库当中建表。

图3-建表
在oracle中建立两张表,对应如上所示的两个图。第一张表java02_xp_table1是用户信息表,当填入信息并点击submit按钮时,所填入的信息将保存在数据库当中,在PLSQL当中立即可以查询到。而第二张表java02_xp_table2是信息表,数据库中对于此表已经有了数据,只需通过查询吧数据库当中的信息显示在页面上。如图1所示已经显示了信息。

图4-项目结构图
如上图4所示为该web项目的结构图,在eclipse下,我们首先建立两个实体类也即两个javaBean,对应两张表的信息。其中一个用户信息
public class User {
private String xp_id;
private String xp_name;
private String xp_email;
private String xp_subject;
private String xp_message;
//用eclipse自动生成get,set方法。这里不再累述。
}
同样的,对于第二张表也要生成get,set方法
public class Information {
private String table_id;
private String table_name;
private String table_price;
private String table_info1;
private String table_info2;
private String table_info3;
private String table_info4;
private String table_info5;
//用eclipse自动生成get,set方法。这里不再累述
}
在javaBean建立成功的基础上我们建立三个dao类。
1.BaseDao---不可更改,封装数据库的基础操作,是其他Dao类的父类,
2.UserDao---继承BaseDao,提供从对数据库中的用户表的操作接口,由UserDaoImpl实现,UserDaoImpl---实现UseroDao接口。大体就是这样的结构.
3. InformationDao跟UserDao实现一样的功能。其他Dao类也从BaseDao继承。实现对不同表的操作。

图5-BaseDao
如图5所示,建立了一个基础dao类,后面的两个dao都是继承与这个基本的dao。注意上图的driver_oracle,使用oracle进行驱动必须要加入相应的jar包,本次所使用的问哦ojdbc6.jar。通过build path添加到工程文件中去。url_oracle是数据库的连接字符串,通过localhost我们知道连接的数据库为本地的数据库,1521为oracle数据库的监听端口,mysql一般为3306,再后面的ORACLE 为我数据库的名字。class.forName()方法进行数据库的驱动进行加载DriverManager.getConnection(url_oracle,"user2","12345")是对数据库进行连接,user2为当前数据库的用户名,12345为密码。
这就是使用JDBC连接数据库。

图6-UserDao
上图6为UserDao类。该类继承BaseDao类,主要是定义了一个addUser()方法,其目的在于通过点击submit来实现对java02_xp_table1表进行数据的添加操作。这里采用预编译的方法对数据库进行操作,有不懂的请参考:http://blog.csdn.net/c1481118216/article/details/52838673。
方法executeUpdate,用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL,DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。 INSERT、UPDATE 或DELETE 语句的效果是修改表中零行或多行中的一列或多列。 executeUpdate的返回值是一个整数,只是返回受影响的行数(即更新计数)。 对于 CREATE TABLE 或 DROP TABLE等不操作行的语句,executeUpdate 的返回值总为零。

图7-InformationDao
InformationDao继承于BaseDao,主要是对Information这张表进行数据操作,实现了对数据库JAVA02_XP_TABLE2表的内容查询的功能。执行了查询以后将数据进行封装,封装到一个list当中,通过get,set方法实现数据的转换。


图8-InformationService 图9-UserService
上图为两个service,这两个service主要是为了实现两个方法。InformationService是为了得到更新的数量,而UserService是为了实现addUser()方法。
最主要的就是两个servlet,这两个servlet都有相同的一些方法,但是在doPost()方法中所实现的功能不一样。

图10-UserServlet
在UserServlet中,通过request.getParameter()方法从页面上获取相应的数据。数据的格式使用JSON,使用JSON得添加相应的jar包。得到页面上相应的数据以后,再通过set方法传递到user中实现addUser()方法。row的值是为了确认传递数据的数量,通过这个值来确认是否传递成功是一个小的亮点。

图10-InformationServlet
该IformationServlet主要实现的功能是对数据的查询,查询已经存在于数据库当中的信息。


图11-jquery 图12-ajax
这两种方法都是Html中用到的技术。这也是模板的固定形式。用于页面数据的传递。
本项目的结构大概如此,千万别忘了在web.xml中进行相应的配置。
利用ajax获取网页表单数据,并存储到数据库之一(使用JDBC)的更多相关文章
- 利用ajax获取网页表单数据,并存储到数据库之二(使用SSH)
上篇介绍了如何使用JDBC链接ORACLE数据库实现对数据库的增删改查,本例是使用框架SSH来对数据库的数据进行操作. 首先说框架,现在流行的框架很多,如Struts.Hibernate.Spring ...
- 3..jquery的ajax获取form表单数据
jq是对dom进行的再次封装.是一个js库,极大简化了js使用 jquery库在js文件中,包含了所有jquery函数,引用:<script src="jquery-1.11.1.mi ...
- html基础:jquery的ajax获取form表单数据
jq是对dom进行的再次封装.是一个js库,极大简化了js使用 jquery库在js文件中,包含了所有jquery函数,引用:<script src="jquery-1.11.1.mi ...
- 用Tchromium替代webbrowser提交网页表单有关问题
用Tchromium替代webbrowser提交网页表单有关问题 提交表单时,使用js脚本,然后用 chrm.browser.Frame['ff'].ExecuteJavaScript 提交就可以 ...
- 使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析
使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析 因为我在前台使用了jquery的text()方法,而不是html ...
- VC提交网页表单(一共八篇)
VC提交网页表单-自动评论留言(1)http://blog.csdn.net/wangningyu/article/details/4526357VC提交网页表单-自动评论留言(2)http://bl ...
- Ajax获取 Json文件提取数据
摘自 Ajax获取 Json文件提取数据 1. json文件内容(item.json) [ { "name":"张国立", "sex":&q ...
- C#利用WMI获取 远程计算机硬盘数据
一.利用WMI获取 远程计算机硬盘数据,先引入"System.Management.dll"文件. /// <summary> /// 获取存储服务器硬盘 ...
- JS获取form表单数据
以下代码可放在一个js文件中,以便通用: //获取指定表单中指定标签对象 function getElements(formId, label) { var form = document.getEl ...
随机推荐
- 【开发技术】Eclipse设置软tab(用4个空格字符代替)及默认utf-8文件编码(unix)
Eclipse设置软tab(用4个空格字符代替)及默认utf-8文件编码(unix) 本文摘要: 1.如何配置Eclipse中编辑器支持softtab(用数个空格字符代替默认的tab缩进): 2.如何 ...
- Android调试错误-No resource identifier found for attribute 'showAsAction'
转载自:http://www.bubuko.com/infodetail-498830.html 1.问题描述: 24\YoumiAndroidSdk\demo\offers\res\menu\mai ...
- Nodejs+Grunt配置SASS项目自动编译
Nodejs+Grunt配置SASS项目自动编译 早前听说Nodejs和Grunt很强大,特别是用来构建自动化的前端开发,更是强大无比.但一直碍于自己掌握的技术有限,不敢深入,也未曾深入下去.最近在开 ...
- Linux网络设备驱动架构
Linux网络设备驱动程序体系结构分为四层:网络协议接口层.网络设备接口层.提供实际功能的设备驱动层以及网络设备与媒介层. (1)网络协议接口层向网络层协议提供统一的数据包收发接口,不论上层协议是AR ...
- Django 发送邮件
问题: 对于一些错误信息或用户注册账号的时候,需要给用户发送邮件进行验证. 以用户注册发邮件为例子,用户向后端提起注册,后端收到用户邮箱,对邮箱格式进行验证,然后发送邮件,邮件内容中包括邮件标题.邮件 ...
- Log4j源码解析--Layout类解析
本文转载上善若水的博客,原文出处:http://www.blogjava.net/DLevin/archive/2012/07/04/382131.html.感谢作者的分享. Layout负责将Log ...
- js执行函数报错Cannot set property 'value' of null怎么解决?
js执行函数报错Cannot set property 'value' of null 的解决方案: 原因:dom还没有完全加载 第一步:所以js建议放在body下面执行, 第二步:window.on ...
- Android 使用android-support-multidex解决Dex超出方法数的限制问题
随着应用不断迭代,业务线的扩展,应用越来越大(比如集成了各种第三方sdk或者公共支持的jar包,项目耦合性高,重复作用的类越来越多),相信很多人都遇到过如下的错误: UNEXPECTED TOP-LE ...
- awk ‘! a[$0]++’ 去重
awk '! a[$0]++' 怎么理解? 这是一个非常经典的去重复项的awk语句,虽然短小,不过涉及到了不少知识点,下面一一解读: <1> :"!" 即非. < ...
- 浅谈python中的闭包函数
闭包函数初探 通常我们定义函数都是这样定义的 def foo(): pass 其实在函数式编程中,函数里面还可以嵌套函数,如下面这样 def foo(): print("hello worl ...