先计划好步骤,写个readme
1. 搭建开发环境
1.1 导入开发包
1.2 创建组织程序的包
1.3 在类目录下创建代表数据库的xml文件
2. 开发实体
3. 开发dao
4.开发service
5.开发web
1.创建用来模拟数据库的xml文件,创建xml里保存的User实体类。
2.开发dao,用dom4j实现find(String name),find(String name, String password),和add(User user)方法
为什么用类加载器获取文件流?这样做有什么好处?见使用类加载器的方式管理资源和配置文件。
用junit测试dao
3.开发service层,实现register(User user)和login(String username,String password)方法。
在register方法里检查用户名是否存在,如果存在的话,抛出一个UserExitException通知上层程序。这里需要自定义一个异常。
如果用户名不存在,则调用dao,将传进来的用户写入到数据库。
login方法就是调用dao的find方法,登录不做校验。
业务类还要做两件事情:放到
1.为用户分配一个唯一的ID,通过UUID完成。
2.在ServiceUtils里对用户的密码做处理,通过一个随机的字串和用户的密码混在一起做md5,然后用Base64处理成16进制。
用junit测试service。
4.开发web层。
用RegisterUIServlet将用户forward到注册页面register.jsp
在register.jsp里用表单收集用户的信息,提交到RegisterServlet。
定义用于保存表单的RegisterFormBean。这个类里还有用来校验数据的validate()方法,在类里定义一个Map errors 属性,将校验失败项和失败原因存在Map里,便于在register里显示原因。
定义WebUtils,这里有两个方法,
1. request2Bean(request,beanClass) :将request的参数列表保存成Map,然后调用BeanUtis.populate(bean,map)来封装并返回bean
2.copyBean,使用BeanUtils.copyProperties(dest,src)方法将bean里的属性封装到User对象,这里需要注册一个利用SimpleDateFormat实现的当传入日期字符串为空的时候返回null的日期转换器。
RegisterServlet先用request2Bean将表单存到formBean里,然后调用其校验方法。
若是检验失败将表单存到request里,并forward到注册页面,formBean里封装了校验失败的原因和上次填写的数据,在注册页面里取出这些数据,并显示。
若是校验成功先调用copyBean吧表单封装到实体,然后调用业务类,把user存到数据库。这个时候如果捕获到业务类抛出的用户名已存在异常,则将消息存到request里,将用户forward到注册页面。若是没有收到异常,就将成功信息保存到request里,将用户forword消息显示页面,并显示该消息。
在整个RegiserServlet的doGet()里用try-catch包围,用以处理为预料的异常。