基于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
点击之后的页面,效果如图 registerok.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();
关闭和数据库的连接
新增加的一项记录,达到了点击按钮,就能把输入框里的数据给存储到数据库中的效果
- 基于J2EE的管理信息系统之简单jsp实现增删改查(一)
- 基于JSP的数据库增删改查实现
- Enity Framework入门之简单的增删改查(一)
- JS数组操作之增删改查的简单实现
- mongodb实现简单的增删改查
- Hibernate实现简单的增删改查
- mongodb实现简单的增删改查
- mongodb实现简单的增删改查
- Mybatis实现简单的增删改查
- jsp+servlet+jdbc增删改查功能实现(一)
- JavaScript/Jsp 实现对数据库的增删改查和简单的下载上传文件
- 最简单的jsp+servlet的增删改查代码
- java(jsp)简单实现数据库学生信息的增删改查案例
- 基于ajax的三层,实现数据库增删改查基础(一DAL)
- jsp+servlet+jdbc实现对数据库的增删改查
- jsp+servlet+jdbc实现对数据库的增删改查
- Struts2+JSP+JDBC实现学生信息的增删改查
- jsp+servlet+jdbc实现对数据库的增删改查
- python100例
- Python Enclosing作用域、闭包、装饰器
- java的环境搭配
- 作业6.21(4、5、6、7题)连在一起
- 新浪免费天气Api简单使用说明
- 基于J2EE的管理信息系统之简单jsp实现增删改查(一)
- jsp状态
- Ubuntu 16.04 compile JDK source code
- 【linux 常用命令】linux命令大全
- 第八课,线性表的链式存储结构
- [LeetCode 611] Valid Triangle Number
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.7输入输出流(4.7.1-4.7.3)
- 51 nod 1188 最大公约数之和 V2(狄利克雷卷积+线性筛法)
- java学习 jstl中if标签的使用