使用PD打开user.pdm
-
- 》pdm是文件是什么
- pdm是一个设计好的表结构文件
- 工作中可以用power designer来设计表模型
- Pdm的一个好处是:设计完表结构后,会自动生成创建表的sql语句
-
- 》使用PD打开已经创建好的user表结构
- 了解下设计表的结构即可
- 》创建一个pdm文件来设计表结构
- 掌握如何创建和设计表结构,其实以后的工作中,很多软件的使用都是靠自己摸索
步骤:
1.选择工作空间 – 新增 – Physical Data Model
|
2.在DBMS中选择MySQL5.0(因为我们项目中数据库是使用MySQL)
- DMBS:数据库管理系统(Database Management System)
|
3.创建一张用户表(自己摸索)
4.查看用户表的SQL语句
|
-
- 》通过PD导出sql文件
步骤:
1.根据如图123顺序点击操作
|
2.更新SQL导出的路径到桌面
3.桌面就会有一个crebas.sql的文件,内容如下
|
-
- 》把sql文件导入到mysql数据库
- 先登录到mysql,选择要导入的数据库名
- 然后使用source命令
- 注意:source导入表的sql语句时,.sql文件路径是右斜杠
|
-
- 》导入原先准备好的表结构
- 把前面导入的表删除
- 使用资料中准备好user.pdm里的表结构
-
- 》 使用IDEA自动根据表生成模型和映射文件【强大】
参照:
- IDEA连接数据库
- 项目中添加Hiberante
- 选中View-Tool Windows - Persist
- 》持久层(dao)、Service和表现层(web)的设计
- 》持久层接口设计(Dao)
- 持久层设计图解和原理
- 》持久层接口设计(Dao)
- 这里以User表的数据库设计为例
- 每一张表都有共同的数据库操作,如增删改查,所以IBaseDao, BaseDaoImpl中可以放置公有的方法或者属性
- 每 一张表都有自己的特有的业务,所以IUserDao里的方法是属于特有的
- 这样做代码的扩展性,健壮性比较好
|
-
-
- 》增大IDEA中Tomcat的内存
-
-server -XX:PermSize=128M -XX:MaxPermSize=256m |
![]() |
- 》集成登录界面和主界面
- 》将\资料\login导入到WebContent目录下
- 模板套用问题
- 公司中一般的界面都会由前端排版好,我们只需要套入项目中
- 前端给我们的是一个html页面,我们套用时把html改成jsp项目,然后修改css/js/图片的的引用路径
- 一般在jsp中前面加入${pageContext.request.contextPath } 上下文路径即可
- 验证码问题
- 普通的验证码一般套用网上写的即可,可用用jsp或者servlet实现
- 生成的验证码是一个字符串,然后会存储在session中,方便用于以后的校验
- 验证码的更新是点击图片,再次发送访问验证码的jsp页面
- 分析validatecode.jsp验证码生成的代码逻辑
- 》修改登录密码登录验证
- 数据库的密码是不可以存储明文的
- 一般使用MD5加密
- MD5是不可逆的加密方式
-
- 》在mysql添加两条密码加密后的数据
insert into t_user(id,username,password) values (3,'wangwu',md5('123456')); |
-
- 》在service中把密码加密成md5,然后再从数据库中查询
public class MD5Utils {
|
-
- 》MD5加盐
123456 -> md5
123456 -> md5
Service(123456&234b1 )
- 》Easyui的提示框学习
- Easyui有个$.messager对象,内部提供了很多方法可以实现提示框架效果
- 演示jquery-easyui-1.5.2\demo\messager的案例
- show方法
- 演示jquery-easyui-1.5.2\demo\messager的案例
-
-
- Alert 方法
-
-
-
- Confim 方法
-
-
-
- Prompt
-
-
-
- Progress
-
- 》Easyui 下拉菜单的学习
- 这个知识主要是掌握会看源码,copy核心代码
<div class="easyui-panel" style="width: 120px"> <a href="#" class="easyui-menubutton" data-options="menu:'#mm',iconCls:'icon-ok'">更改皮肤</a>
</div> <div id="mm" style="width:150px;"> <div onclick="alert('default');">默认</div> <div >灰</div> <div class="menu-sep">黑</div> </div> |
|
- 》通过Ajax修改密码
- 查找到界面修改密码的位置
- 界面业务
- 校验输入的请求参数
- 提交Ajax的post请求
<script type="text/javascript"> $("#btnEp").click(function(){ //对表单进行校验 //.form("validate")这个是由easyui.js提供的方法 var v = $("#editPasswordForm").form("validate"); //alert("xx") if(v){ //两次密码是否一至 var p1 = $("#txtNewPass").val(); var p2 = $("#txtRePass").val(); if(p1 == p2){ //发送网络请求 var url = "${pageContext.request.contextPath}/userAction_editPassword" $.post(url,{password:p1},function(data){ if(data == 1){ $.messager.alert("提示信息","修改成功","info"); }else{ $.messager.alert("提示信息","修改失败","info"); } }); }else{ $.messager.alert("提示信息","两次密码不一至","warning"); } } }); </script> |
-
- 写好后台的业务
- Action
public String editPassword() throws IOException{
User loginUser = (User) ServletActionContext.getRequest().getSession().getAttribute("loginUser");
String newPwd = MD5Utils.md5(model.getPassword());
String flag = "1"; try { userService.editPassword(newPwd,loginUser.getId());
} catch (Exception e) { flag = "0"; e.printStackTrace(); }
//响应客户端端 ServletActionContext.getResponse().setContentType("text/html;charset=UTF-8"); ServletActionContext.getResponse().getWriter().print(flag);
//返回json格式处理 //response.setHeader("content-type","text/json;charset=utf-8");
return NONE; } |
|
- Dao
/**这是一个通用的更新方法,queryName是需要在user.hbm.xml文件中配置的 * user.hbm.xml: * <query name="editPassword">UPDATE User SET password = ? WHERE id = ?</query> * */ public void excuteUpdate(String queryName, Object... objs) { // TODO Auto-generated method stub Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession();
Query query = session.getNamedQuery(queryName);
int i = 0; for(Object obj : objs){ query.setParameter(i, obj); i++; }
query.executeUpdate(); } |
![]() |
- 》显示登录用户&用户退出
- 显示登录用户名:
- el表达式${session.loginUser.username}
- E L(Expression Language):
为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。
-
- 退出的功能实现逻辑
- 只需要把session注销掉即可
- 注销完后,需要回到登录界面
public String logout(){ ServletActionContext.getRequest().getSession().invalidate(); return "login"; } |