架构
总体架构都是一个思路:
一)当实现一个需求的时候,首先要去前端寻找相应的请求,不管是直接发出的请求还是通过Ajax发出的请求
二)在servlet中写出对应的方法,method对应好,构思方法体,参数列表,先做什么再做什么
三)去service业务层接受参数,应该实现什么功能,需要哪些参数并思考需不需要处理,需要提供给DAO层什么参数
四)在DAO层拿到service层提供的参数后,构建SQL,调用公共类方法执行,返回参数
今天实现功能:
一、Ajax异步实现加载下拉框(其实是功能复用,控制层多写一个方法)
① DAO层实现类中实现SQL查询:
public List<Role> getRoleList(Connection connection) {
List<Role> list = new ArrayList<Role>();
PreparedStatement ps = null;
ResultSet rs = null;
if(connection!=null){
String sql = "select * from smbms_role ";
Object[] params = {
};
try {
rs = BaseDao.excutequery(connection,sql,params,rs,ps);
while (rs.next()){
Role role = new Role();
role.setId(rs.getInt("id"));
role.setRoleCode(rs.getString("roleCode"));
role.setRoleName(rs.getString("roleName"));
list.add(role);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
BaseDao.close(connection,ps,rs);
}
}
return list;
}
② 业务层调用:
List<Role> list = new ArrayList<Role>();
Connection cnn = null;
cnn = BaseDao.getConnection();
try {
list = reoledao.getRoleList(cnn);
} catch (SQLException e) {
e.printStackTrace();
}finally {
BaseDao.close(cnn,null,null);
}
return list;
③ 控制层调用
public void getrolelist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//先创建一个RoleService业务层对象,用于调取获取角色列表方法
RoleService roleService = new RoleServiceImlp();
List<Role> list = null;
list = roleService.getRoleList();
resp.setContentType("Application/json");
PrintWriter printWriter = resp.getWriter();
printWriter.write(JSONArray.toJSONString(list));
printWriter.flush();
printWriter.close();
}
二、实现插入用户功能
首先拿到需求思考,前台一堆数据,提交表单,应该是要在控制层就直接把全部参数获取到直接封装到User对象中,这样取用方便。思考一个点,前台取用的全部都是String类型,而数据库中存放的有的不是字符串类型,如时间,如userRole,这样就需要一定的转换。然后控制层调用了业务的方法,业务层应该返回的是一个boolean值,代表执行成功或者失败。而SQL执行的方法,返回的是一个Int值,代表执行成功了几条,因此需要在业务层中判断Int值的大小,如果大于0就返回给控制层一个true,反之则false。因此正确程序流程是,DAO层执行SQL,提交给业务层一个int,业务层执行方法提交给控制一个boolean。最后方法执行完毕。
一、DAO层
public int add(Connection cnn,User user){
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "insert into smbms_user (userCode,userName,userPassword," +
"userRole,gender,birthday,phone,address,creationDate,createdBy) " +
"values(?,?,?,?,?,?,?,?,?,?)";
int results = 0;
Object[] params = {
user.getUserCode(),user.getUserName(),user.getUserPassword(),user.getUserRole(),user.getGender(),user.getBirthday(),user.getPhone(),user.getAddress(),user.getCreationDate(),user.getCreatedBy()};
try {
results = BaseDao.excute(cnn,sql,params,ps);
} catch (SQLException e) {
e.printStackTrace();
}finally {
BaseDao.close(null,ps,null);
}
return results;
}
二、业务层
public boolean add(User user){
Connection cnn = BaseDao.getConnection();
int result = 0;
boolean flag = false