1. 添加数据
在jsp页面中添加数据,和在serv中添加数据相似。获得页面中提交的数据以后,把数据保存到数据库表中,JSP的代码如下:
add.jsp
String path=request.getContextPath();
String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
My JSP 'add.jsp' starting page请输入部门信息:
部门号:
部门名:
部门人数:
地址:
PreparedStatement ps= null;try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("创建数据库驱动成功!");
conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/bank","root","1234");
System.out.println("数据库连接成功!");
String sql= "insert into dept(id,d_name,address,empnumber) values(?,?,?,?)";
ps=conn.prepareStatement(sql);
String id= request.getParameter("id");
String d_name= request.getParameter("d_name");
String address= request.getParameter("address");int empnumber = Integer.parseInt(request.getParameter("empnumber"));
ps.setString(1,id);
ps.setString(2,d_name);
ps.setString(3,address);
ps.setInt(4,empnumber);int result =ps.executeUpdate();if(result == 1)
out.print("插入数据成功!");elseout.print("插入数据失败,请重新插入!");
}catch(Exception e){
out.println("无法连接数据库,请检查数据库连接是否正确!");
}%>
2. 显示全部数据
在页面中显示全部数据,也就是要把数据库中的全部数据查询出来,要实现这个功能,需要用到实体类,即数据库和实体对象的映射类。实体类代码如下:
DeptVo.java
packagecom.cn.vo;public classDeptVo {privateString id;privateString address;private intempnumber;privateString d_name;private intd_id;publicString getId() {returnid;
}public voidsetId(String id) {this.id =id;
}publicString getAddress() {returnaddress;
}public voidsetAddress(String address) {this.address =address;
}public intgetEmpnumber() {returnempnumber;
}public void setEmpnumber(intempnumber) {this.empnumber =empnumber;
}publicString getD_name() {returnd_name;
}public voidsetD_name(String dName) {
d_name=dName;
}public intgetD_id() {returnd_id;
}public void setD_id(intdId) {
d_id=dId;
}
}
编写好实体类型后,就可以在页面中调用该类,在JSP页面中编写JDBC,连接数据库和查询数据,再用JSTL标签库中的c标签遍历输出数据,使用EL表达式取值。JSP中的代码如下:
showAll.jsp
String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
My JSP 'showAll.jsp' starting pagelist = new ArrayList();try{
Class.forName("com.mysql.jdbc.Driver");
Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/bank","root","1234");
Statement stmt=con.createStatement();
ResultSet rs= stmt.executeQuery("SELECT * FROM dept");while(rs.next()){
DeptVo deptVo= newDeptVo();
deptVo.setId(rs.getString("id"));
deptVo.setAddress(rs.getString("address"));
deptVo.setD_id(rs.getInt("d_id"));
deptVo.setD_name(rs.getString("d_name"));
deptVo.setEmpnumber(rs.getInt("empnumber"));
list.add(deptVo);
}
request.setAttribute("list",list); //把list集合放入request对象中
}catch(Exception e){
e.printStackTrace();
}%>
部门编号 | 部门地址 | 部门人数 | 部门名称 | 部门id |
${list.id } | ${list.address } | ${list.empnumber } | ${list.d_name } | ${list.d_id } |
3. 显示单条数据信息
显示单条信息就是根据数据的唯一标示符来查询出单条数据的详细信息。在dept表中,主键d_id的值是自动增长的,不会有重复,可以根据d_id查询出单条数据信息。首先要在页面中输入要查询的d_id值,然后根据d_id来查询数据的详细信息。输入查询条件的JSP文件代码如下:
item.jsp
String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
My JSP 'item.jsp' starting page请输入部门id:
显示在同一页面中的ShowById.jsp文件的代码如下:
String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
My JSP 'ShowById.jsp' starting pageint d_id = Integer.parseInt(request.getParameter("d_id"));
Connection con= null;
PreparedStatement pstmt= null;
ResultSet rs= null;try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("创建驱动成功!");
con= DriverManager.getConnection("jdbc:mysql://localhost:3306/bank","root","1234");
System.out.println("数据库连接成功!");
String sql= "select * from dept where d_id =?";
pstmt=con.prepareStatement(sql);
pstmt.setInt(1,d_id);
rs=pstmt.executeQuery();while(rs.next()){
DeptVo deptVo= newDeptVo();
deptVo.setId(rs.getString("id"));
deptVo.setAddress(rs.getString("address"));
deptVo.setD_id(rs.getInt("d_id"));
deptVo.setD_name(rs.getString("d_name"));
deptVo.setEmpnumber(rs.getInt("empnumber"));
request.setAttribute("deptVo",deptVo);
System.out.println(deptVo.getD_id());
}
}catch(Exception e){
e.printStackTrace();
}%>
d_id值为的数据详细信息
部门编号 | 部门地址 | 部门人数 | 部门名称 | 部门id |
${deptVo.id } | ${deptVo.address } | ${deptVo.empnumber } | ${deptVo.d_name } | ${deptVo.d_id } |
4. 修改数据
修改数据的时候,要把修改的数据信息显示到页面中,然后在页面中根据实际情况来修改数据,修改数据成功后,数据库会保存修改后的数据。
先编写输入修改数据条件的页面,代码如下:
updateItem.jsp
String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
My JSP 'updateItem.jsp' starting page请输入部门id:
上述代码中,form表单的action值是queryToUpdate.jsp,当提交查询时,会打开queryToUpdate.jsp页面,在queryToUpdate.jsp页面中查询出的d_id指向的数据信息,并显示到页面中。queryToUpdate.jsp页面代码如下:
String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
My JSP 'queryToUpdate.jsp' starting pagerequest.setCharacterEncoding("gb2312");
Connection con= null;
PreparedStatement ps= null;
ResultSet rs= null;try{int d_id = Integer.parseInt(request.getParameter("d_id"));
Class.forName("com.mysql.jdbc.Driver");
System.out.println("创建驱动成功!");
con= DriverManager.getConnection("jdbc:mysql://localhost:3306/bank","root","1234");
System.out.println("数据库连接成功!");
String sql= "select * from dept where d_id=?";
ps=con.prepareStatement(sql);
ps.setInt(1,d_id);
rs=ps.executeQuery();while(rs.next()){
DeptVo deptVo= newDeptVo();
deptVo.setAddress(rs.getString("address"));
deptVo.setD_id(rs.getInt("d_id"));
deptVo.setD_name(rs.getString("d_name"));
deptVo.setEmpnumber(rs.getInt("empnumber"));
deptVo.setId(rs.getString("id"));
request.setAttribute("deptVo",deptVo);
System.out.println(deptVo.getD_id());
}
}catch(Exception e){
e.printStackTrace();
}%>
请输入部门信息:
部门号:
部门名:
部门人数:
地址:
部门id:
页面效果如下所示:
在上面的页面中提交修改后,会打开form表单action指定的update.jsp页面,在该页面中处理数据修改,并包含了输入修改条件的页面。update.jsp代码如下:
String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
My JSP 'update.jsp' starting pagerequest.setCharacterEncoding("gb2312");
Connection con= null;
PreparedStatement ps= null;
String id= request.getParameter("id");
String address= request.getParameter("address");int empnumber = Integer.parseInt(request.getParameter("empnumber"));
String d_name= request.getParameter("d_name");int d_id = Integer.parseInt(request.getParameter("d_id"));try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("数据库驱动创建成功!");
con= DriverManager.getConnection("jdbc:mysql://localhost:3306/bank","root","1234");
System.out.println("数据库连接成功!");
String sql= "update dept set id=?,address=?,empnumber=?,d_name=?,d_id=? where d_id=?";
ps=con.prepareStatement(sql);
ps.setString(1,id);
ps.setString(2,address);
ps.setInt(3,empnumber);
ps.setString(4,d_name);
ps.setInt(5,d_id);
ps.setInt(6,d_id);
ps.executeUpdate();
out.println("
修改成功!
");}catch(Exception e){
e.printStackTrace();
}%>
程序运行后界面如下: