1.一个项目如果想实现增删改查这四个基本操作,src下面必然有这么几个包
2.以下面的数据表为例
一. 实现增加功能
在数据库连接成功前提下,先在dao层接口中定义一个方法
public boolean add(User u);
随后在实现层中完成相应的代码:
package com.user.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.db.DBCon;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;
import com.user.entity.User;
public class UserDaoImp implements UserDao {
//1个连接类对象
DBCon db=new DBCon(); //自定义的连接类 获取连接(先实例化db对象,后面代码中用到)
//4个数据库连接对象Connection con=null; //连接对象
Statement stmt=null; //执行对象
PreparedStatement pstmt=null; //预编译执行对象
ResultSet rs=null;
public boolean add(User u){
System.out.println("在dao层执行add方法");
boolean flag=false;
try {
con=db.getCon();
if(con==null){
System.out.println("dao中数据库连接不成功");
return flag;
}
//选pstmt stmt
String sql="insert into tb_users(username,password,sex,age,telphone,address,myright) values(?,?,?,?,?,?,?)";
pstmt=(PreparedStatement) con.prepareStatement(sql);
pstmt.setString(1, u.getUsername());
pstmt.setString(2,u.getPassword());
pstmt.setString(3,u.getSex());
pstmt.setInt(4,u.getAge());
pstmt.setString(5,u.getTelphone());
pstmt.setString(6,u.getAddress());
pstmt.setInt(7,u.getMyright());
int state=pstmt.executeUpdate();
if(state>0){
System.out.println("dao中添加成功");
flag=true;
}
pstmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
完成jsp页面(显示所有)
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="com.user.entity.User"%>
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<div align="center">
<font color="#800080" size="6"><strong> 所有用户信息</strong>
</font>
<br>
</div>
<div align="right"><a href="/demo0313/user/register.jsp">添加新用户</a>
</div><div align="center"><form action="/demo0313/UserServelt">
按照:<input type="text" name="namecondition">
<input type="hidden" name="action" value="mohu">
<input type="submit" value="查询">
</form></div>
<table width="1206" border="1" height="131">
<tbody><table width="698" border="1" height="52" align="center">
<tbody>
<tr>
<td align="center">
<strong> 序号</strong>
</td>
<td align="center">
<strong> 姓名</strong>
</td>
<td align="center">
<strong> 性别</strong>
</td>
<td align="center">
<strong> 年龄</strong>
</td>
<td align="center">
<strong> 联系电话</strong>
</td>
<td align="center">
<strong> 地址</strong>
</td>
<td align="center">
<strong> 权限</strong>
</td>
<td align="center">
<strong> 操作</strong>
</td>
</tr>
<%
//1、2、3省略
//4 创建数据访问层,并调用CRUD方法
List<User> userlist=(List<User>)session.getAttribute("userlist");
//对userlist进行遍历
Iterator<User> it=userlist.iterator();
int index=1;
while(it.hasNext()){
User uu=it.next();
%>
<tr>
<td>
<%=index++%>
</td>
<td>
<%=uu.getUsername() %>
</td>
<td>
<%=uu.getSex() %>
</td>
<td>
<%=uu.getAge() %>
</td>
<td>
<%=uu.getTelphone() %>
</td>
<td>
<%=uu.getAddress() %>
</td>
<td>
<%
if (uu.getMyright() == 0) {
out.println("管理员");
}
if (uu.getMyright() == 1) {
out.println("一般用户");
}
if (uu.getMyright() == 2) {
out.println("钻石用户");
}
%>
</td>
<td>
<a href="/demo0313/UserServelt?action=delete&uid=<%=uu.getUid()%>">删除</a>
<a href="/demo0313/UserServelt?action=preupdate&uid=<%=uu.getUid()%>">修改</a>
</td>
</tr>
<%
}
//推入到table
%>
</tbody>
</table>
</body>
</html>
运行结果页面如下:
register.jsp 页面如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
<title>My JSP 'test.jsp' starting page</title>
</head>
<body>
<form action="/demo0313/UserServelt?action=add" method="post">
用户名:
<input type="text" name="username" >
<br>
<br>
密 码:
<input type="password" name="password">
<br>
<br>
性 别:
<input type="radio" name="sex" value="男">
男
<input type="radio" name="sex" value="女">
女
<br>
<br>
年 龄:
<input type="text" name="age">
<br>
<br>
电 话:
<input type="text" name="telphone">
<br>
<br>
地 址:
<input type="text" id="address" name="address">
<br>
<br>
角色:
<input type="radio" name="myright" value="0">
管理员
<input type="radio" name="myright" value="1">
一般用户
<input type="radio" name="myright" value="2">
钻石用户
<br>
<br>
<input type="submit" name="sub" value="确定">
<input type="reset" value="重置">
</form>
<br>
</body>
</html>
运行结果如下:
这是开始写control层
// 2.添加一个用户
if (action.trim().equals("add")) {
System.out.println("控制端在执行添加功能");
// 1.获取表单元素 <br>
String username=request.getParameter("username");
String password=request.getParameter("password");
String sex=request.getParameter("sex");
String agestr=request.getParameter("age"); /////age是int类型的
String telphone=request.getParameter("telphone");
String address=request.getParameter("address");
String myrightstr=request.getParameter("myright");
// 2.乱码,空,数值的处理
username = EncodingChange.toString(username);
sex = EncodingChange.toString(sex);
telphone = EncodingChange.toString(telphone);
address = EncodingChange.toString(address);
int age = 0;
if (agestr == null) {
age = 0;
} else {
age = Integer.parseInt(agestr);
}
int myright = -1;
if (myrightstr == null) {
myright = -1;
} else {
myright = Integer.parseInt(myrightstr);
}
System.out.println("页面传过来的数据是" + username + "\t" + myright);
// 3.封装对象并设置属性
User user = new User();
user.setAddress(address);
user.setAge(age);
user.setMyright(myright);
user.setPassword(password);
user.setSex(sex);
user.setTelphone(telphone);
user.setUsername(username);
// 4.创建数据访问层和业务层,调用CRUD方法或业务方法
udi = new UserDaoImp();
boolean result = udi.add(user);
if (result) {
System.out.println("添加成功");
// 5.保存数据
session.setAttribute("adduser", user);
// 6.页面专向
path = "/demo0313/UserServelt?action=showall";
} else {
System.out.println("控制端无法执行添加功能");
path = "/demo0313/denglu/login.jsp";
}
}