学习jdbc的总结

来源:互联网 发布:淘宝违规词查询工具 编辑:程序博客网 时间:2024/06/03 18:02

MVC设计模式下的dao层,service层与web层三层架构,还有domain层,domain层负责最原始的类,如Customer、PageBean(QueryInfo、QueryResult),将所需的值封装起来,比如消费者这个类中,有消费者的id、name、type等,这些值与数据库中的值要联系起来,两者的变量名要一致,这样是为了两者的链接,其中dao层有你CustomerDao接口,文件名定为CustomerDao.java和该接口的实现文件CustomerDaoImpl.java。里面包括了一些增加用户、修改用户、删除用户等等方法。下面举例说明add()方法。

public void add(Customer c) {
Connection conn=null;
PreparedStatement st=null;
ResultSet rs=null;
try {
conn=JdbcUtils.getConnection();
String sql="insert into customer (id,name,gender,type)values(?,?,?,?)";
st=conn.prepareStatement(sql);
st.setString(1, c.getId());
st.setString(2, c.getName());
st.setString(3, c.getGender());
st.setString(4, c.getType());
st.executeUpdate();
}
catch(Exception e){
throw new RuntimeException(e);



}finally {
JdbcUtils.release(conn, st, rs);

}

}

首先注意add()方法的参数类型为Customer类,类类型,即调用时要传一个Customer的类进去,而Cunstomer类中有一些成员变量,他们都有相应的get和set方法,而我们从页面拿到数据之后,通过表单Post方法提交,将数据传递给AddCustomerServlet.java这个servlet的doPost()方法,这个方法中将会将表单的数据封装到Customer对象中,在此,我们可以将从request数据封装到Customer对象的功能封装到工具类中,以便下次调用。下面说一下service层,这个层是为web层服务的,有addCustomer()方法、updataCustomer()方法等等,具体方法中要写一些具有校验用户是否存在的代码,下面以addCustomer()为例。

public void addCustomer(Customer c) {
dao.add(c);
}

可以知道,就是简单调用了dao层的add()方法。

下面说一下web层,web层主要是一些servlet类,封装在...web.controller这个类中,在doGet方法中,有一些表单合法性校验的代码,举例说明,

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("UTF-8");
//1.对表单提交的数据进行合法性校验,并且把表单数据封装到formbean
RegisterForm form=WebUtils.request2Bean(request, RegisterForm.class);
boolean b=form.validate();
//2.如果校验失败,则跳回到表单页面,回显校验失败信息
if(!b){
request.setAttribute("form", form);//将form对象存于域中
request.getRequestDispatcher("/WEB-INF/jsp/register.jsp").forward(request, response);
return;
}
//3.如果校验成功,则调用service处理注册请求
BusinessServiceImpl service= new BusinessServiceImpl();
User user=new User();
WebUtils.copyBean(form, user);
try {
service.register(user);
request.setAttribute("message", "恭喜您,注册成功");
request.getRequestDispatcher("/WEB-INF/jsp/register.jsp").forward(request, response);
return;
} catch (UserExistException e) {
form.getErrors().put("username", "注册的用户名已存在");
request.setAttribute("form", form);
request.getRequestDispatcher("/WEB-INF/jsp/register.jsp").forward(request, response);
return;
}catch(Exception e){
request.setAttribute("message", "服务器出现未知错误");
request.getRequestDispatcher("/message.jsp").forward(request, response);
return;
}
}

有一些小点要注意到,WenContent目录下,浏览器可以直接访问到,但是Wencontent目录下的WEB-INF目录不可以访问到,必须通过request.getRequestDispertch()方法。

原创粉丝点击