Java全栈开发---Java ERP系统开发:商业ERP(七

[](()2、菜单动态前端的实现

[](()(1)修改index.jsp当中的内容

// 获取菜单数据

$.ajax({

url : ‘menu_getMenuTree’,

type : ‘post’,

dataType : ‘json’,

success : function(rtn) {

// 给菜单赋值

_menus = rtn;

InitLeftMenu();

}

});

Java全栈开发---Java ERP系统开发:商业ERP(七_第1张图片

测试运行运行成功

Java全栈开发---Java ERP系统开发:商业ERP(七_第2张图片

[](()三、密码加密


[](()1、添加shiro依赖

修改erp_parent下的POM.xml文件

[](()(1)定义shiro版本常量

Java全栈开发---Java ERP系统开发:商业ERP(七_第3张图片

1.2.3

[](()(2)加入shiro的依赖

Java全栈开发---Java ERP系统开发:商业ERP(七_第4张图片

org.apache.shiro

shiro-core

${shiro.ver}

org.apache.shiro

shiro-web

${shiro.ver}

org.apache.shiro

shiro-spring

${shiro.ver}

org.apache.shiro

shiro-aspectj

${shiro.ver}

[](()(3)修改EmpDao,创建add方法重写父类的add,通过super的方式调用父类的add

Java全栈开发---Java ERP系统开发:商业ERP(七_第5张图片

/*

  • 新增员工

*/

public void add(Emp emp) {

String pwd = emp.getPwd();

// source : 原密码

// salt;盐-》搅乱码

// hashIterations:散列次数,加密次数

Md5Hash md5 = new Md5Hash(pwd, emp.getUsername(), 2);

// 取出加密后的密码

String newPwd = md5.toString();

System.out.println(newPwd);

//设置为加密后的密码

emp.setPwd(newPwd);

//保存倒数数据库当中

super.add(emp);//将

}

[](()2、登录密码的加密

[](()(1)在EmpDao当中,需要单独将加密的方法抽取出来

在这里插入图片描述

Java全栈开发---Java ERP系统开发:商业ERP(七_第6张图片

替换add方法当中的加密

Java全栈开发---Java ERP系统开发:商业ERP(七_第7张图片

[](()(2)在EmpDao当中,修改findByUsernameAndPwd方法来实现查询登录时加密

Java全栈开发---Java ERP系统开发:商业ERP(七_第8张图片

上面的方式虽然实现了功能但是密码的加密应该在业务层进行

抽取加密方法到业务层当中

将empdao当中所有的加密抽取到业务层

package com.itzheng.erp.dao.impl;

import java.util.List;

import org.apache.shiro.crypto.hash.Md5Hash;

import org.hibernate.criterion.DetachedCriteria;

import org.hibernate.criterion.MatchMode;

import org.hibernate.criterion.Restrictions;

import com.itzheng.erp.dao.IEmpDao;

import com.itzheng.erp.entity.Emp;

/**

  • 员工数据访问类

  • @author Administrator

*/

public class EmpDao extends BaseDao implements IEmpDao {

/*

  • 用户登录

*/

public Emp findByUsernameAndPwd(String username, String pwd) {

String hql = “from Emp where username = ? and pwd = ?”;

System.out.println(pwd);

List list = (List) this.getHibernateTemplate().find(hql, username, pwd);// 通过向数据库访问的方式查询对应的内容是否符合

// 能够匹配上,侧返回第一个元素

if (list.size() > 0) {

return list.get(0);

}

// 如果登录名或密码不正确

return null;

}

/**

  • 构建查询条件

*/

public DetachedCriteria getDetachedCriteria(Emp emp1, Emp emp2, Object param) {

DetachedCriteria dc = DetachedCriteria.forClass(Emp.class);

if (emp1 != null) {

if (emp1.getUsername() != null && emp1.getUsername().trim().length() > 0) {

dc.add(Restrictions.like(“username”, emp1.getUsername(), MatchMode.ANYWHERE));

}

if (emp1.getPwd() != null && emp1.getPwd().trim().length() > 0) {

dc.add(Restrictions.like(“pwd”, emp1.getPwd(), MatchMode.ANYWHERE));

}

if (emp1.getName() != null && emp1.getName().trim().length() > 0) {

dc.add(Restrictions.like(“name”, emp1.getName(), MatchMode.ANYWHERE));

}

if (emp1.getEmail() != null && emp1.getEmail().trim().length() > 0) {

dc.add(Restrictions.like(“email”, emp1.getEmail(), MatchMode.ANYWHERE));

}

if (emp1.getTele() != null && emp1.getTele().trim().length() > 0) {

dc.add(Restrictions.like(“tele”, emp1.getTele(), MatchMode.ANYWHERE));

}

if (emp1.getAddress() != null && emp1.getAddress().trim().length() > 0) {

dc.add(Restrictions.like(“address”, emp1.getAddress(), MatchMode.ANYWHERE));

}

// 根据部门查询

if (null != emp1.getDep() && null != emp1.getDep().getUuid()) {

dc.add(Restrictions.eq(“dep”, emp1.getDep()));

}

// 根据出生年月日查询,其实日期

if (null != emp1.getBirthday()) {

dc.add(Restrictions.ge(“birthday”, emp1.getBirthday()));

}

}

if (null != emp2) {

// 根据出生年月日查询,结束日期

if (null != emp2.getBirthday()) {

dc.add(Restrictions.le(“birthday”, emp2.getBirthday()));

}

}

return dc;

}

//修改密码

@Override

public void updatePwd(Long uuid, String newPwd) {

String hql = “update Emp set pwd = ? where uuid = ?”;

this.getHibernateTemplate().bulkUpdate(hql, newPwd,uuid);

}

}

[](()四、修改密码


[](()(一)后端的实现

[](()1、修改IEmpDao接口

Java全栈开发---Java ERP系统开发:商业ERP(七_第9张图片

void updatePwd(Long uuid, String newPwd);

[](()2、对应的实现类

Java全栈开发---Java ERP系统开发:商业ERP(七_第10张图片

//修改密码

@Override

public void updatePwd(Long uuid, String newPwd) {

String hql = “update Emp set pwd = ? where uuid = ?”;

this.getHibernateTemplate().bulkUpdate(hql, newPwd,uuid);

}

[](()3、在IEmpBiz当中设置对应的接口

Java全栈开发---Java ERP系统开发:商业ERP(七_第11张图片

public void updatePwd(Long uuid, String oldPwd, String newPwd);

[](()4、在com.itzheng.erp.exception下创建ErpException并继承RuntimeException (自定义异常类型)

Java全栈开发---Java ERP系统开发:商业ERP(七_第12张图片

package com.itzheng.erp.exception;

public class ErpException extends RuntimeException {

public ErpException(String message) {

super(message);

}

}

[](()5、在实现类EmpBiz当中

Java全栈开发---Java ERP系统开发:商业ERP(七_第13张图片

@Override

public void updatePwd(Long uuid, String oldPwd, String newPwd) {

// 取出员工信息

Emp emp = empDao.get(uuid);

// 加密旧密码

String encrypted = encrypt(oldPwd, emp.getUsername());

if (!encrypted.equals(emp.getPwd())) {

// 抛出自定义异常

throw new ErpException(“旧密码不正确”);

}

newPwd = encrypt(newPwd, emp.getUsername());

// 如果相同就更新对应的密码

empDao.updatePwd(uuid, newPwd);

}

[](()6、修改BaseActopn

Java全栈开发---Java ERP系统开发:商业ERP(七_第14张图片

/*

  • 获取登录的用户信息

*/

public Emp getLoginUser() {

Emp emp = (Emp) ActionContext.getContext().getSession().get(“loginUser”);

return emp;

}

[](()7、在EmpAction当中

Java全栈开发---Java ERP系统开发:商业ERP(七_第15张图片

// 修改密码调用的方法

// 修改密码调用的方法

public void updatePwd() {

Emp loginUser = getLoginUser();

System.out.println(loginUser);

if (null == loginUser) {

write(ajaxReturn(false, “亲!你还没有登录”));

return;

}

try {

empBiz.updatePwd(loginUser.getUuid(), oldPwd, newPwd);

write(ajaxReturn(true, “修改密码成功”));

} catch (Exception e) {

e.printStackTrace();

write(ajaxReturn(false, “修改密码失败”));

}

}

[](()(二)前端的实现

[](()1、修改index.html

Java全栈开发---Java ERP系统开发:商业ERP(七_第16张图片

style=“padding: 10px; background: #fff;”>

旧密码: 新密码: 确认密码:

[](()2、修改index.js当中的内容

$.ajax({

url : ‘emp_updatePwd’,

data : {

‘oldPwd’ : oldPwd,

‘newPwd’ : newPwd

},

dataType : ‘json’,

type : ‘post’,

success : function(rtn) {

$.messager.alert(‘提示’, rtn.message, ‘info’, function() {

if (rtn.success) {

$(‘#w’).dialog(‘close’);

//清空内容

$(‘#txtOldPass’).val(‘’);

$(‘#txtNewPass’).val(‘’);

$(‘#txtRePass’).val(‘’);

}

});

}

});

Java全栈开发---Java ERP系统开发:商业ERP(七_第17张图片

[](()3、测试修改密码

Java全栈开发---Java ERP系统开发:商业ERP(七_第18张图片

Java全栈开发---Java ERP系统开发:商业ERP(七_第19张图片

[](()五、管理员重置密码


[](()(一)后端的实现

[](()1、在业务层的接口当中创建对应的接口

Java全栈开发---Java ERP系统开发:商业ERP(七_第20张图片

[](()2、在对应的实现类当中实现

Java全栈开发---Java ERP系统开发:商业ERP(七_第21张图片

[](()3、在EmpAction当中

Java全栈开发---Java ERP系统开发:商业ERP(七_第22张图片

[](()(二)前端的实现

[](()1、创建pwd.html

员工管理

登陆名:

登陆密码:

真实姓名:

性别:全部


邮件地址:

联系电话:

联系地址:

出生年月日: ->

部门:

查询

登陆名

required:true,missingMessage:‘登录名不能为空!’

">

登陆密码 真实姓名 性别

邮件地址

required:true,validType:‘email’,invalidMessage:‘Email格式不正确’

">

联系电话 联系地址 出生年月日 部门

url:‘dep_list’,textField:‘name’,valueField:‘uuid’,required:‘true’

" >

保存

[](()2、创建pwd.js

$(function(){

//加载表格数据

$(‘#grid’).datagrid({

url:‘emp_listByPage’,

columns:[[

{field:‘uuid’,title:‘编号’,width:100},

{field:‘username’,title:‘登陆名’,width:100},

{field:‘name’,title:‘真实姓名’,width:100},

{field:‘gender’,title:‘性别’,width:100,formatter:function(value, row, index){

value = row.gender;

if(1 == value * 1){

return ‘男’;

}

if(0 == value * 1){

return ‘女’;

}

}},

{field:‘email’,title:‘邮件地址’,width:100},

{field:‘tele’,title:‘联系电话’,width:100},

{field:‘address’,title:‘联系地址’,width:100},

{field:‘birthday’,title:‘出生年月日’,width:100,formatter:function(value){

return new Date(value).Format(“yyyy-MM-dd”);

}},

{field:‘dep’,title:‘部门编号’,width:100,formatter:function(value){

return value.name;

}},

{field:‘-’,title:‘操作’,width:200,formatter: function(value,row,index){

var oper = “重置密码';

return oper;

}}

]],

singleSelect: true,

pagination: true

});

//重置密码的窗口

$(‘#editDlg’).dialog({

title: ‘重置密码’,//窗口标题

width: 260,//窗口宽度

height: 120,//窗口高度

closed: true,//窗口是是否为关闭状态, true:表示关闭

modal: true,//模式窗口

iconCls: ‘icon-save’,

buttons: [

{

text: ‘保存’,

iconCls: ‘icon-save’,

handler:function(){

var formdata = $(‘#editForm’).serializeJSON();

$.ajax({

url: ‘emp_updatePwd_reset’,

data : formdata,

dataType: ‘json’,

type: ‘post’,

success:function(rtn){

$.messager.alert(‘提示’,rtn.message,‘info’,function(){

if(rtn.success){

$(‘#editDlg’).dialog(‘close’);

}

});

}

});

}

}

]

});

});

//打开重置密码窗口

function updatePwd_reset(uuid){

$(‘#editDlg’).dialog(‘open’);

//清空表单

$(‘#editForm’).form(‘clear’);

//加载数据

$(‘#editForm’).form(‘load’,{id: uuid, newPwd:“”});

}

[](()(三)访问前端页面

Java全栈开发---Java ERP系统开发:商业ERP(七_第23张图片

访问pwd.html点击重置密码

Java全栈开发---Java ERP系统开发:商业ERP(七_第24张图片

重新登录设置成功

[](()(四)设置初始密码

[](()1、修改biz层的add方法

Java全栈开发---Java ERP系统开发:商业ERP(七_第25张图片

String newPwd = encrypt(emp.getUsername(), emp.getUsername());

[](()2、修改emp.html当中的内容

Java全栈开发---Java ERP系统开发:商业ERP(七_第26张图片

[](()六、解决更新员工信息,密码丢失


修改用户信息后密码丢失

Java全栈开发---Java ERP系统开发:商业ERP(七_第27张图片

数据库当中密码丢失

在这里插入图片描述

使用session的持久化不更新pwd字段,Hbm.xml里面加入update=false属性,不更新pwd字段

上面在更新密码订单时候是使用的SQL语句来更新的密码,设置该属性的时候在映射文件当中设置update=false属性后是不会影响SQL语句更新密码的方法的,所以在更新用户信息的时候设置该属性后就不会更新密码

Java全栈开发---Java ERP系统开发:商业ERP(七_第28张图片

[](()七、静态页面传参数


[](()1、在emp_web下的ui当中创建request.js

var url=location.search;//获取?号后面的字符串

var Request = new Object();//创建Object对象

if(url.indexOf(“?”)!=-1)//判断是否后?号 有?号的时候

{

var str = url.substr(1);//截取字符串当中第2个后的字符串(不包括? 的字符串)

strs = str.split(“&”);//按照&号分隔字符串,赋值给一个数组

for(var i=0;i

{

//Request类型的数组,的第分隔前面字符串部分按照=号分隔,

Request[strs[i].split(“=”)[0]]=unescape(strs[i].split(“=”)[1]);

}

}

[](()2、在supplier.html当中引入crud.js

Java全栈开发---Java ERP系统开发:商业ERP(七_第29张图片

[](()3、在supplier.html当中添加一些数据

Java全栈开发---Java ERP系统开发:商业ERP(七_第30张图片

[](()4、修改crud.js

Java全栈开发---Java ERP系统开发:商业ERP(七_第31张图片

[](()5、修改supplier.html

供应商管理

名称:

联系地址:

联系人:

联系电话:

邮件地址:

查询

style=“width: 320px;height: 250px” data-options=“closed:true”>

名称 联系地址 联系人 联系电话

你可能感兴趣的:(Java,经验分享)