时间:2015-06-29 来源:

黑马day07登录注册案例(一) 【系统运维】

简介:根据三层架构的思想设计本案例.

1.搭建环境

-->cn.itheima.exception

准备好需要的包和模拟数据库配置文件users.xml

-->cn.itheima.service

-->cn.itheima.web

4.建立UserDao...实现相应的查询和添加功能(主要通过使用dom树操作xml文件)

package cn.itheima.exception; public class MsgException extends Exception { public MsgException() { } public MsgException(String msg) { super(msg); } }

package cn.itheima.dao; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import cn.itheima.domain.User; import cn.itheima.utils.XmlUtil; public class XmlUserDao { /*** * 根据用户名查询用户 * @param username用户名 * @return 根据用户名找到用户的信息封装到javaBean中承接网站前端,没有返回null */ public User findUserByUsername(String username){ Document doc = XmlUtil.getDocument(); Element root = doc.getRootElement(); List<Element> list = root.selectNodes("//user[@username='"+username+"']"); if(list.size()>0){//如果找到这个用户就封装到bean中返回user Element userEle = list.get(0); User user=new User(); user.setUsername(userEle.attributeValue("username")); user.setPassword(userEle.attributeValue("password")); user.setNickname(userEle.attributeValue("nickname")); user.setEmail(userEle.attributeValue("email")); return user; }else{//没有找到用户 return null; } } /** * 通过用户名和密码查找用户,承接网站前端找到就封装到javaBean中,html切图报价找不到返回null * @param username * @param password * @return */ public User findUserByUserNameAndPassword(String username,String password){ Document doc = XmlUtil.getDocument(); Element root = doc.getRootElement(); List<Element> list = root.selectNodes("//user[@username='"+username+"' and @password='"+password+"']"); if(list.size()>0){//如果找到这个用户就封装到bean中返回user Element userEle = list.get(0); User user=new User(); user.setUsername(userEle.attributeValue("username")); user.setPassword(userEle.attributeValue("password")); user.setNickname(userEle.attributeValue("nickname")); user.setEmail(userEle.attributeValue("email")); return user; }else{//没有找到用户 return null; } } /** * 添加一个用户到数据库中 * @param user */ public void addUserToXml(User user){ Document doc = XmlUtil.getDocument(); Element root = doc.getRootElement(); //1.凭空创建一个<user>标签,团队网页接活 user.getUsername()); userEle.setAttributeValue("password", user.getNickname()); userEle.setAttributeValue("email",OutputFormat.createPrettyPrint()); writer.write(doc); writer.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(); } } } 6.开发service 提供方法注册的方法和检查用户名和密码的方法 package cn.itheima.service; import cn.itheima.dao.XmlUserDao; import cn.itheima.domain.User; import cn.itheima.exception.MsgException; public class UserSevice { XmlUserDao dao=new XmlUserDao(); /** * 注册用户 * @param user * @throws MsgException */ public void registUser(User user) throws MsgException{ //1.判断数据库中是不是有用户了 if(dao.findUserByUsername(user.getUsername())!=null){ throw new MsgException("用户已经存在"); } //2.添加到数据库中 dao.addUserToXml(user); } /** * 检查用户名和密码是否正确 * @param username * @param password * @return */ public User isUser(String username, password); } } 7.建立异常类MsgExcetion

-->cn.itheima.dao

package cn.itheima.domain; import cn.itheima.exception.MsgException; public class User { private String username; private String password; private String password2; private String nickname; private String email; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPassword2() { return password2; } public void setPassword2(String password2) { this.password2 = password2; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public void check()throws MsgException{ if(username==null || "".equals(username)){ throw new MsgException("用户名不能为空!"); } if(password==null || "".equals(password)){ throw new MsgException("密码不能为空!"); } if(password2==null || "".equals(password2)){ throw new MsgException("确认密码不能为空!"); } if(!password.equals(password2)){ throw new MsgException("两次密码不一致!"); } if(nickname==null || "".equals(nickname)){ throw new MsgException("昵称不能为空!"); } if(email==null || "".equals(email)){ throw new MsgException("邮箱不能为空!"); } if(!email.matches("^\\w+@\\w+(\\.\\w+)+$")){ throw new MsgException("邮箱格式不正确!"); } } }

-->cn.itheima.utils

<?xml version="1.0" encoding="UTF-8"?> <users> <user username="admin" password="admin" nickname="admin" email="admin@qq.com"></user> </users> 3.建立javaBean users

-->cn.itheima.domain

点击次数:7536
作者:
web前端行业资讯
Web new NewsList
微软发布WindowsServerBuild17074更新 ,,2018年01月18日凭借一个AI小功能,这款Google应用冲上苹果AppStore榜首 ,,2018年01月18日百度数据可视化实验室正式成立,发布深度学习可视化平台VisualDL ,,2018年01月18日OpenAI开源最新工具包,模型增大10倍只需额外增加20%计算时间 ,,2018年01月18日百度手机输入法8.0正式发布:支持多人语音速记 ,,2018年01月18日CSDN宣布收购TinyMind团队并升级为AI社区 ,,2018年01月18日甲骨文发布补丁修复英特尔芯片漏洞造成的问题 ,,2018年01月18日权威!官方发布CPU熔断和幽灵漏洞防范指引:附补丁下载 ,,2018年01月18日Oracle宣布新的JavaChampions ,,2018年01月18日腾讯加码区块链项目已悄然注册“以太锁”商标 ,,2018年01月18日Fedora28壁纸征集活动现已开幕:将持续至2月13日 ,,2018年01月18日苹果WebKit团队发布Speedometer2.0网页响应测试工具 ,,2018年01月18日百度输入法8.0后天发布:全感官AI输入 ,,2018年01月18日腾讯和乐高合作:共同研发智能玩具、游戏 ,,2018年01月18日HomePod上市日益临近智能音箱市场吸引力越来越大 ,,2018年01月18日3D打印脑组织?科学家正在向这一目标正在前进 ,,2018年01月18日英特尔公布修补漏洞后PC性能数据:8代CPU影响最小 ,,2018年01月18日云存储公司Dropbox秘密提交IPO申请估值超百亿美元 ,,2018年01月18日iPod之父:防手机上瘾无技术难度苹果谷歌应承担责任 ,,2018年01月18日芯片不安全英特尔云客户考虑转用AMD等对手处理器 ,,2018年01月18日2018年Java展望 ,,2018年01月18日区块链有多火?快播流量矿石遭20多万人疯抢 ,,2018年01月18日Intel搞定神经拟态芯片:模拟人类大脑、自主学习 ,,2018年01月18日阿里巴巴发布IoTConnect开放连接协议,盼推动语音互动入口普及 ,,2018年01月18日区块链火了,全球大佬们怎么看? ,,2018年01月18日Facebook正测试新功能主推本地新闻资讯 ,,2018年01月18日在GooglePlay中发现使用Kotlin开发的安卓恶意软件 ,,2018年01月18日VisualStudio201715.6预览版本2,增加新功能 ,,2018年01月18日百度陆奇:AI是5G最好的加速器 ,,2018年01月18日PinterestCEO:不同于谷歌和Facebook,我们走了第三条路 ,,2018年01月18日Session.TimeOut的最大取值是1440,超出会报错2014年01月29日asp.net静态方法弹出对话框实现思路2014年01月29日HDU5296Annoyingproblem【移动开发】2015年07月24日c++类的隐式转换与强制转换重载详解2014年01月30日柯南君:Oracle分区技术之如何支撑大数据操作?【研发管理】2014年11月14日修改LitJson支持iOS 【编程语言】2015年01月26日hdu1506LargestRectangleinaHistogram(DP) 【编程语言】2015年04月07日PPT中声音“冲突”的解决方法2014年01月28日你是码农还是优秀程序员? 【编程语言】2015年03月10日JS获取父节点方法2014年01月29日移植libev事件库到Android中 【综合】2015年04月24日Excel2007单元格内容的移动或复制2014年01月28日模块管理常规功能自定义系统的设计与实现(56--开源开发测试版发布) 【移动开发】2015年01月24日iOS-字符串拼接 【编程语言】2015年07月23日JavaScript执行效率与性能提升方案2014年01月29日WORD内容以链接插入EXCEL20102014年01月28日RIM将于下周二推出PlayBook2.0系统 ,,2016年06月23日各种跟16进制相关的转换问题 【移动开发】2015年07月30日Android:防止过快点击造成多次事件 【架构设计】2015年03月24日JavaScriptCSS创建右击菜单效果代码2014年01月29日linux操作系统内核启动参数详细解析 【综合】2015年05月18日javascript中关于执行环境的杂谈2014年01月29日【翻译自mos文章】当使用DCD和TCPS时,rmanduplicatehang住【移动开发】2015年08月31日D3.js以圆做点绘制力图(一) 【编程语言】2014年11月04日解决erlang和java同时操作一张表,造成锁表问题 【编程语言】2015年01月24日Linux基础(二)常用命令1 【Web前端】2015年06月17日iOS真机模拟内存警告【互联网】2015年03月03日每周四JEECG社区公开课:微信公众账号运营(jeewx使用)入门讲解 【综合】2015年09月10日原来CSS里的!important是如此用法2014年01月29日Splay入门题【移动开发】2015年08月26日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)