基于J2EE的管理信息系统之简单jsp实现增删改查(一)

来源:互联网 发布:js返回顶部 编辑:程序博客网 时间:2024/06/05 11:14

最近在做一个车辆管理信息系统,打算写一个系列把做这个管理信息系统的过程都整理出来,也算是一个知识的整理吧!


管理信息系统,最基本的就是对一个项(模块)进行增加,删除,修改,查询,再深一层次就是查看,导出,打印,统计 
我们先在最简单的页面上实现对一个模块的增删改查,即暂时不要求页面,实现功能即可。


IDE环境:因为一开始还没有做到具体的项目,就一直用sublime写的代码 
数据库:Mysql 5.6 
Mysql图形化管理软件:Navicat 
服务器:Tomcat 7.0 
传输数据的方式:json+JDBC 
先确定tomcat和mysql能够正常运行 所有jsp页面是统一放在一个device文件夹之后,文件夹放在tomcat 7.0\webapps\ROOT 
嗯 方便起见,是放在root下的(实际上如果是一个真正的项目,应该放在webapps下面,然后去server.xml去设置虚拟路径,这里我们就简单起见了) 
device文件夹 
Mysql数据表video_file设计一览 
表中数据 
关于数据库的设置,在新建数据库的时候,数据库属性一定要设置好编码,一定要和你的数据表文件的编码统一,我这里是都设置成了UTF-8编码方式(数据表文件即.sql文件改UTF-8编码可以通过记事本另存为来修改) 
另外需要将json.jar和mysql-connector-java-5.0.4-bin.jar(JDBC)放入tomcat7.0/lib或者放入root/WEB-INF/lib 
因为我们用到了json传数据和jdbc连接数据库,所以我们需要将相应的包放入lib文件夹下


添加功能 
添加功能简单的来说就是往数据库里添加一个记录 
根据数据库的设计,添加一个记得,你首先得得到这个记录必需的几个值,比如这个数据表必须需要的就是设备ID和设备名,所以我们得通过输入框获得得再传进数据库 
register.jsp

<%@ page contentType="text/html; charset=UTF-8"      import="java.sql.*,java.io.*"%><html>      <head>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    </head>    <body>        <form name="registerForm" action="register_ok.jsp">            设备ID            <input type="text" name="device_id" value="">            <br>            设备名称            <input type="text" name="device_name" value="">            <input type="submit" name="subbtn" value="提交">        </form>    </body></html>  

启动tomcat,然后在浏览器中输入http://localhost:8080/device/register.jsp 
界面如图 
代码很简单,就是点击提交之后,跳转到registerok.jsp 
点击之后的页面,效果如图 register
ok.jsp

<%@page contentType="text/html; charset=UTF-8"      import="java.sql.*,java.io.*"%><html>      <head>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    </head>    <body>        <%            String id = request.getParameter("id");            String deviceId = request.getParameter("device_id");            String deviceName = request.getParameter("device_name");            request.setCharacterEncoding("UTF-8");            try {                Class.forName("com.mysql.jdbc.Driver");            } catch (ClassNotFoundException classnotfoundexception) {                classnotfoundexception.printStackTrace();            }            try {                Connection conn = DriverManager                        .getConnection("jdbc:mysql://localhost:3306/test?user=ylx&password=ylx&useUnicode=true&characterEncoding=UTF-8");                Statement statement = conn.createStatement();                out.println("Connect Database Ok!!!<br>");                String sql = "insert into video_file(device_id,device_name) values('"                        + deviceId + "','" + deviceName + "')";                statement.executeUpdate(sql);                out.println(sql);                statement.close();                conn.close();                out.println("Database Closed!!!<br>");        %>添加成功!请返回。<input type="button" name="listBtn" value="返回列表" onclick="window.location='query_list.jsp'">          <%            } catch (SQLException sqlexception) {                sqlexception.printStackTrace();        %>添加失败!!!请返回。<input type="button" name="listBtn" value="返回列表" onclick="window.location='query_list.jsp'">          <%            }        %>    </body></html>

这是一个在项目里很不提倡的混杂java和html的不规范jsp页面,不过我们这里为了方便起见,就暂时这样做了~


我们来慢慢分析一下这段代码:

<%@page contentType="text/html; charset=UTF-8"      import="java.sql.*,java.io.*"%>

带<%>的都是jsp的执行代码,<%@page>是jsp页面的全局属性,contentType="text/html ;表示这个jsp页面解释成html charset=UTF-8"表示页面编码方式为UTF-8(但是jsp的编码方式乱码不是单单只设置这个就能解决的) 
import="java.sql.* ,java.io.*" 是引进java的包 
这开头完了之后,就是一个大的标签包含的代码


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
meta是html的元标签,其中包含了对应html的相关信息,客户端浏览器或服务端程序都会根据这些信息进行处理. 
http类型:这个网页是表现内容用的 
content(内容类型):这个网页的格式是文本的 
charset(编码):这个网页的编码是UTF-8,需要注意的是这个是网页内容的编码,而不是文件本身的. 
编码不用说,content常见的还有xml等类型.meta,网页html语言里head区重要标签之一. http-equiv类似于http的头部协议,他回应浏览器一些有用的信息,以帮助正确和精确地显示网页内容.常用的http-equiv类型有: 
Content-Type和Content-Lanauage(显示字符集的设定) 
说明:设定页面使用的字符集,用以说明主页制作所使用的语言和文字,浏览器会根据此来调用相应的字符集显示网页内容.


接下来是body部分 主要部分是:

        <%            String id = request.getParameter("id");            String deviceId = request.getParameter("device_id");            String deviceName = request.getParameter("device_name");            request.setCharacterEncoding("UTF-8");            try {                Class.forName("com.mysql.jdbc.Driver");            } catch (ClassNotFoundException classnotfoundexception) {                classnotfoundexception.printStackTrace();            }            try {                Connection conn = DriverManager                        .getConnection("jdbc:mysql://localhost:3306/test?user=ylx&password=ylx&useUnicode=true&characterEncoding=UTF-8");                Statement statement = conn.createStatement();                out.println("Connect Database Ok!!!<br>");                String sql = "insert into video_file(device_id,device_name) values('"                        + deviceId + "','" + deviceName + "')";                statement.executeUpdate(sql);                out.println(sql);                statement.close();                conn.close();                out.println("Database Closed!!!<br>");        %>

这一部分就是具体的和数据库相关的代码 
所有的java代码都是放在<% %>里面的,这个需要注意 
String deviceId = request.getParameter("device_id"); 
String deviceName =request.getParameter("device_name"); 
这两句是定义两个字符串变量,然后去接收用request.getParameter方法获得的上一个页面传过来的值 
deviceid和devicename就是上一个页面传数据时定义的变量,根据这个就可以找到传过来的数据 
我们刚才传数据是用的get方式,页面跳转过来之后,数据都在浏览器上方的地址栏有 http://localhost:8080/device/register_ok.jsp?device_id=GPS0006&device_name=SASA&subbtn=%E6%8F%90%E4%BA%A4 
比如说我这里的就是这样…… 
继续... 
request.setCharacterEncoding("UTF-8"); 
这是在设置编码……防止乱码 
try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException classnotfoundexception) { classnotfoundexception.printStackTrace(); } 
就是一个简单try-catch结构: 
Class.forName("com.mysql.jdbc.Driver"); 
就是动态的加载mysql驱动 
classnotfoundexception.printStackTrace(); 
如果找不到这个类就会出现异常,这个函数就是处理这个异常避免报错 
然后又是一个大的个try-catch结构 
Connection conn = DriverManager .getConnection("jdbc:mysql://localhost:3306/test?user=ylx&password=ylx&useUnicode=true&characterEncoding=UTF-8"); 
这是用驱动去连接数据库的语句,变量名conn随意取,然后getConnection括号里面的参数: 
jdbc:mysql:用jdbc连接mysql数据库 
localhost:3306:连接本地的3306端口(3306是mysql的默认端口) 
test是你mysql里面那个建立的那个数据库的名字 
user=ylx&password=ylx:用户名是ylx,密码是ylx 
用户你要在mysql中新增,可以进入navicat中新增用户 
一定要把权限给够,不然会出现不能访问数据库的问题(当然权限引起的安全问题什么的就先暂时不用考虑了) 
useUnicode=true&characterEncoding=UTF-8 
指定字符编码和解码方式都为UTF-8(还是在避免出现乱码问题)

Statement statement = conn.createStatement(); 
就是用conn连接创建一个statement对象,这个对象用executeUpdate方法执行传入的sql语句

out.println("Connect Database Ok!!!<br>"); 
尽量在代码中多写这种语句,用来确定代码执行到哪一步了,方便调试 
out是jsp的内置对象,out.println能够直接在jsp页面中显示内容,甚至能够在语句中使用html标签生成网页,但是在实际的工程不推荐用这个语句(实际做工程的时候用IDE就用System.out.println就能在控制台看到相关信息)

String sql = "insert into video_file(device_id,device_name) values('"+ deviceId + "','" + deviceName + "')";  

这个语句是用来对数据库进行操作的 
定义一个字符串变量,用来存储sql语句 sql=" "; 
video_file是你数据库里的表的名字 
(device _id,device _name)这两项是数据表里的那个是这个……与url里面那个没有关系……只是为了方便,变量名都取的差不多 
然后是values()的参数,如果直接是常量的话,那应该是这样:values("0006"+"sasa") 
但是我们传入语句的是变量,所以就变成了这样: 
values('"+ deviceId + "','" + deviceName + "') 
这里deviceId,deviceName都是上面定义的java变量 
statement.executeUpdate(sql); 
执行sql语句 
out.println(sql); 
很重要的一句,将你构造好的sql语句打印出来,如果操作执行没有成功,可以将打印出来的这句放到mysql数据库中去查询试试看,如果能够成功,就说明构造的语句是没有错误的,是其他方面出了问题,如果不能成功,那就是构造语句出了问题,就去前面检查构造语句那里出了什么问题 比如刚才打印出来的构造好的语句是: 
insert into video_file(device_id,device_name) values('GPS0006','SASA') 
如果操作没有执行成功,那就将这句话放到navicat中查询试试看如图所示

statement.close(); conn.close(); 
关闭和数据库的连接 
新增加的一项记录,达到了点击按钮,就能把输入框里的数据给存储到数据库中的效果

阅读全文
1 0
原创粉丝点击