PowerDesigner教程

使用PD打开user.pdm

    1. pdm是文件是什么
  1. pdm是一个设计好的表结构文件
  2. 工作中可以用power designer来设计表模型
  3. Pdm的一个好处是:设计完表结构后,会自动生成创建表的sql语句

 

    1. 使用PD打开已经创建好的user表结构
  1. 了解下设计表的结构即可
    1. 创建一个pdm文件来设计表结构
  1. 掌握如何创建和设计表结构,其实以后的工作中,很多软件的使用都是靠自己摸索

步骤:

1.选择工作空间 – 新增 – Physical Data Model

b0b2895e97b5d21666c9eefaae2bab63f3a.jpg

 

2.在DBMS中选择MySQL5.0(因为我们项目中数据库是使用MySQL)

  1. DMBS:数据库管理系统(Database Management System)

7172ef51da0483c1c8b36bb8ec843034293.jpg

 

3.创建一张用户表(自己摸索)

 

4.查看用户表的SQL语句

2268ebcc8a570c7585da135dd13b5d69e6f.jpg

 

 

    1. 通过PD导出sql文件

步骤:

1.根据如图123顺序点击操作

765aa4a71ee92e7bd74b97f85c8857ba29e.jpg

2.更新SQL导出的路径到桌面

a6a81361c186367c02dadc383eb6ca469c4.jpg

3.桌面就会有一个crebas.sql的文件,内容如下

c2e836d53325bc18b39fff77a95f019a8f6.jpg

 

    1. 把sql文件导入到mysql数据库
  1. 先登录到mysql,选择要导入的数据库名
  2. 然后使用source命令
  3. 注意:source导入表的sql语句时,.sql文件路径是右斜杠

4e219c9dfcdb51112e18d27c6deee7c4025.jpg

 

 

    1. 导入原先准备好的表结构
  1. 把前面导入的表删除
  2. 使用资料中准备好user.pdm里的表结构

 

    1. 》 使用IDEA自动根据表生成模型和映射文件【强大】

参照:

7a431a20af6face4ef31b7c7fd4865f9fbc.jpg

 

  1. IDEA连接数据库
  2. 项目中添加Hiberante
  3. 选中View-Tool Windows - Persist
  1. 持久层(dao)、Service和表现层(web)的设计
    1. 持久层接口设计(Dao)
      1. 持久层设计图解和原理
  • 这里以User表的数据库设计为例
  1. 每一张表都有共同的数据库操作,如增删改查,所以IBaseDao, BaseDaoImpl中可以放置公有的方法或者属性
  2. 每 一张表都有自己的特有的业务,所以IUserDao里的方法是属于特有的
  3. 这样做代码的扩展性,健壮性比较好

c3fc36503b49b38bce63cceb37477c72ff4.jpg

 

      1. 》增大IDEA中Tomcat的内存

-server -XX:PermSize=128M -XX:MaxPermSize=256m

6bfec2e39e0b7ee7669a695aa8dc0c726f9.jpg

 

  1. 集成登录界面和主界面
    1. 将\资料\login导入到WebContent目录下
  1. 模板套用问题
  1. 公司中一般的界面都会由前端排版好,我们只需要套入项目中
  2. 前端给我们的是一个html页面,我们套用时把html改成jsp项目,然后修改css/js/图片的的引用路径
  3. 一般在jsp中前面加入${pageContext.request.contextPath } 上下文路径即可

 

  1. 验证码问题
    1. 普通的验证码一般套用网上写的即可,可用用jsp或者servlet实现
    2. 生成的验证码是一个字符串,然后会存储在session中,方便用于以后的校验
    3. 验证码的更新是点击图片,再次发送访问验证码的jsp页面

 

  1. 分析validatecode.jsp验证码生成的代码逻辑

 

 

 

  1. 修改登录密码登录验证
  1. 数据库的密码是不可以存储明文的
  2. 一般使用MD5加密
  3. MD5是不可逆的加密方式

 

    1. 在mysql添加两条密码加密后的数据

insert into t_user(id,username,password) values (3,'wangwu',md5('123456'));

    1. 在service中把密码加密成md5,然后再从数据库中查询

public class MD5Utils {

    public static String text2md5(String text) {

        try {
            MessageDigest digest = MessageDigest.getInstance("md5");
            byte[] bs = digest.digest(text.getBytes());
            String hexString = "";
            for (byte b : bs) {
                int temp = b & 255;
                if (temp < 16 && temp >= 0) {
                    hexString = hexString + "0" + Integer.toHexString(temp);
                } else {
                    hexString = hexString + Integer.toHexString(temp);
                }
            }
            return hexString;
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return "";

    }
}

 

 

 

    1. 》MD5加盐

123456 -> md5

 

123456 -> md5

 

Service(123456&234b1 )

  1. Easyui的提示框学习
  1. Easyui有个$.messager对象,内部提供了很多方法可以实现提示框架效果
    1. 演示jquery-easyui-1.5.2\demo\messager的案例
      1. show方法

370ad51c4f7b12d7ddb30803bb7c67738cc.jpg

 

      1.  Alert 方法

657738e4184b76bd3a76266d69a93d33551.jpg

 

      1.  Confim 方法

e0b5900bd11d641201d894017fbc5ed4c01.jpg

 

      1.  Prompt

866327fc498e38cbd011a96a830a0277bb5.jpg

 

      1.  Progress

b0d89ef862008039c78f8c597aa6dac993d.jpg

 

 

  1. Easyui 下菜单的学习
  1. 这个知识主要是掌握会看源码,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>

 

feb7a81a3dc8592fe52ee5b32ccf15d99d1.jpg

 

 

  1. 通过Ajax修改密码
    1. 查找到界面修改密码的位置
  1. 界面业务
    1. 校验输入的请求参数
    2. 提交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>

 

    1. 写好后台的业务
  1. 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");
        //response.getWriter().print("{\"success\":\"1\"}");

 

return NONE;

}

 

  1. 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();

}

99de166cec16205db80da7b68522a19fce5.jpg
  1. 显示登录用户&用户退出
    1. 显示登录用户名:
  1. el表达式${session.loginUser.username}
    1. E L(Expression Language):

为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。

    1.  退出的功能实现逻辑
  1. 只需要把session注销掉即可
  2. 注销完后,需要回到登录界面

public String logout(){ ServletActionContext.getRequest().getSession().invalidate();

return "login";

}

转载于:https://my.oschina.net/zhengchen/blog/3098613

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值