一.数据库
1.建库
CREATE DATABASE 库名
ON PRIMARY
(
NAME = '库名_data',
FILENAME = 'D:\DATA\库名_data.mdf',
SIZE = 5MB,
MAXSIZE = 10MB,
FILEGROWTH = 15%
)
LOG ON
(
NAME = '库名_log',
FILENAME = 'D:\DATA\库名_log.ldf',
SIZE = 5MB,
MAXSIZE = 10MB,
FILEGROWTH = 15%
)
2.建表,添加约束,插入数据,导出
这些根据所要创建的表自行添加
这个可以通过点点点的操作完成,也可以通过sql语句完成
二.创建项目
1.导jar包(三个)
2建包:
1.创建util包,写DBHelper
1.加载驱动程序
static{
Class.forName("?");
}
2.连接数据库
public static Connection getConn(){
Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;database=MyDB","sa","1");
return conn;
}
3.关闭资源
public static void close(Connection conn , PreparedStatement ps , ResultSet rs){
conn.close();
ps.close();
rs.close();
}
4.更新(增删改)操作
public static boolean update(String sql, Object [] objs){
// 连接数据库
Connection conn = getConn();
// 与数据库进行交互
PreparedStatement ps;
// 设置数据
for(int i = 0,i < objs.length , i++){
ps.setObjecct(i+1,objs[i]);
}
// 结果
int count = ps.execu;
// 判断返回
if(count > 0){
return true;
} else {
return false;
}
// 关闭资源
close(conn,ps,null);
}
2.创建model包,数据类
1.根据数据库的列名添加私有属性
eg: private Integer id;
2.生成公有方法(无参构造方法,含参构造方法,get和set方法)
可以通过Source下的
1.Generate Getters and Setters
2.Generate Constructor using Fields
3.Generate Constructors from Superclass
3.创建dao层,操作接口/实现类(impl)
== > 为了方便可以直接把操作方法写在dao层
及各个操作类的查询方法
1.用户登录查询方法
2.获取列表数据(所有数据)方法 --> 这个方法用在获取列表数据上
3.通过id获取数据(单行数据)方法 -->这个方法用在详情和修改上
4.创建action包,写servlet用的
三.功能
一.登录
1.写一个login.jsp页面
一个form表单, action = "login"的servlet类中
添加一个错误接受提示,当登录失败返回到登录页面显示错误
2.登录的servlet(LoginServlet)
1.设置编码
2.接收参数(用户名和密码)
3.查询(通过用户名和密码去使用登录查询方法查询是否有这个数据)
有:return 数据
无:return null
4.判断响应
if(数据 != null){
// 登录成功
1.创建session会话,并将登录的用户数据设置到session会话当中去
2.重定向到获取列表信息的servlet中
} else {
// 登录失败
1.设置返回注释
2.通过转发返回到登录页面
}
二.注册
1.写一个reg.jsp页面
一个form表单, action = "reg"的servlet类中 onSubmit= "return check()"-->这里通过js来进行非空验证
添加一个错误接受提示,当注册失败返回到注册页面显示错误
非空验证:
1.通过 var c = document.getElementById("对应的id名").value; 来获取数据
2.验证
if(c == "" || c == undefined){
// 数据为空,出来一个提示弹框,并返回false终止注册
alert("数据不为空");
return false;
} else {
// 数据不为空,返回true,进入注册的Servlet中进行注册操作
return true;
}
2.注册的servlet(RegServlet)
1.设置编码
2.接收参数(注册的各个数据)
3.DBHelper中更新方法(需要一个SQL语句,一个Object类型的数组用来储存注册数据)
String sql = "";
Object [] objs = {接收参数的个个变量};
有:return true; ==> 更新成功
无:return false; ==> 更新失败
4.接收返回参数
boolean isOk = DBHelper.update(sql , objs);
4.判断响应
if(isOk){
// 注册成功
2.重定向到login.jsp页面进行登录
} else {
// 注册失败
1.设置返回注释
2.通过转发返回到注册页面
}
三.列表
1.获取列表信息的servlet(GetListServlet)
1.设置编码
2.调用无参查询列表信息的方法并使用ArrayList<?> 接收 ?为你model包下定义的类名
ArrayList<?> lists = ?Dao.select();
3.通过转发将信息转发到列表的jsp中
2.列表的jsp(list.jsp)
1.写一个table表格
2.通过<c:forEach itam="${注意:这里要一一对应}" var="自定义一个下面获取值的名称"></c:forEach>
四.新增
1.新增的.jsp(add.jsp)
跟注册类似,只是form表单的内容有所改变
这里也可以添加非空验证
2.新增的servlet(AddServlet)
1.设置编码
2.接收参数
3.插入操作
跟注册类似;
4.响应
// 添加成功
跳转到获取数据列表的servlet中,获取完数据,进入到列表页面
// 添加失败
返回到添加的.jsp页面
五.修改
1.通过id获取数据详情的servlet(getListToIdServlet)
1.设置编码
2.接收参数
3.通过id获取数据详情的查询操作
4.响应
1.获取成功
使用转发将数据发送到修改的jsp页面(update.jsp)
2.获取失败
返回列表
2.修改的jsp页面(update.jsp)
1.form表单 action="update"
2.内容通过value="${}"获取
3.修改的Servlet(UpdateServlet)
1.设置编码
2.接收参数
3.String sql = "UPDATE <表名> SET 列名 = ?, WHERE id = ?";
4.更新操作
5.响应
1.更新成功
重定向到获取列表信息的servlet中
2.更新失败
返回到修改的.jsp页面
六.删除
1.删除的servlet(DeleteServlet)
1.设置编码
2.获取id
3.String sql = "DELETE FROM <表名> WHERE id = ?";
4.更新操作
5.重定向到获取列表信息的servlet中
七.详情(修改的前半段)
1.通过id获取数据详情的servlet(getListToIdServlet)
1.设置编码
2.接收参数
3.通过id获取数据详情的查询操作
4.响应
1.获取成功
使用转发将数据发送到详情的jsp页面(info.jsp)
2.获取失败
返回列表
2.详情的jsp页面(info.jsp)
1.table表格
2.内容通过${}获取
3.加一个超链接返回到获取数据列表的servlet中
<a href="GetListServlet">返回列表</a>