Java全栈开发---Java ERP系统开发:商业ERP登录与密码管理

Posted 蓝匣子itbluebox

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java全栈开发---Java ERP系统开发:商业ERP登录与密码管理相关的知识,希望对你有一定的参考价值。

登录与密码管理

一、登录与退出

(一)页面的创建于修改

1、管理主界面的构建

(1)在网上找一个后台管理的模板(拷贝到webapp的目录下面)

点击这里下载:

(2)访问主界面

2、登录主界面的构建

(1)在网上找一个后台管理的模板(拷贝到webapp的目录下面)

点击这里下载:

(2)访问登录界面

3、修改login.html

(二)DAO层的实现

1、在接口当中创建对应登录的方法

2、在实现类当中实现接口的方法,查询对应用户名以及返回对应

/*
* 用户登录
*/
public Emp findByUsernameAndPwd(String username, String pwd) 
	String hql = "from Emp where username = ? and pwd = ?";
	List<Emp> list = (List<Emp>) this.getHibernateTemplate().find(hql, username, pwd);//通过向数据库访问的方式查询对应的内容是否符合
	//能够匹配上,侧返回第一个元素
	if (list.size() > 0) 
		return list.get(0);
	
	//如果登录名或密码不正确
	return null;

(三)业务层的实现

1、在IEmpBiz接口当中

Emp findByUsernameAndPwd(String username, String pwd);

2、EmpBiz实现类当中

@Override
public Emp findByUsernameAndPwd(String username, String pwd) 
	return empDao.findByUsernameAndPwd(username, pwd);

(四)Action层的实现

1、在erp_web下面创建一个LoginAction :登录的时候单独创建一个Action

package com.itzheng.erp.action;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.alibaba.fastjson.JSON;
import com.itzheng.erp.biz.IEmpBiz;
import com.itzheng.erp.biz.impl.EmpBiz;
import com.itzheng.erp.entity.Emp;
import com.opensymphony.xwork2.ActionContext;
//登录的时候在创建一个Action 
public class LoginAction 
	private String username;// 登录用户名
	private String pwd;// 输入的密码
	private IEmpBiz empBiz;
	public IEmpBiz getEmpBiz() 
		return empBiz;
	
	public void setEmpBiz(IEmpBiz empBiz) 
		this.empBiz = empBiz;
	
	public String getUsername() 
		return username;
	
	public void setUsername(String username) 
		this.username = username;
	
	public String getPwd() 
		return pwd;
	
	public void setPwd(String pwd) 
		this.pwd = pwd;
	
	public void checkUser() 
		// 查询是否存在
		Emp loginUser = empBiz.findByUsernameAndPwd(username, pwd);
		if (loginUser != null) 
			//记录当前登录的用户
			ActionContext.getContext().getSession().put("loginUser", loginUser);
			ajaxReturn(true, "用户名或密码正确");
		 else 
			ajaxReturn(false, "用户名或密码不正确");
		
	
	public void ajaxReturn(boolean success, String message) 
		Map map = new HashMap();
		map.put("success", success);
		map.put("message", message);
		write(JSON.toJSONString(map));
	
	public void write(String jsonString) 
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setCharacterEncoding("UTF-8");
		try 
			response.getWriter().print(jsonString);
		 catch (IOException e) 
			// TODO Auto-generated catch block
			e.printStackTrace();
		
	

2、配置对应的Action

(1)在struts.xml当中配置

<!-- 登录/退出 -->
<action name="login_*" class="loginAction" method="1"></action>

(2)applicationContext_action.xml

<!-- 登录、退出 -->
<bean id="loginAction" class="com.itzheng.erp.action.LoginAction" scope="prototype">
	<property name="empBiz" ref="empBiz"></property>
</bean>

3、运行项目在浏览器上面测试

(五)登录功能前端的实现

1、在login.html当中引入easyUI的依赖


2、在login.html当中设置对应的属性

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Zeo·ERP企业资源管理系统</title>
<link rel="stylesheet" type="text/css" href="css/login.css" />
<link rel="stylesheet" type="text/css"
	href="ui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="ui/themes/icon.css">
<script type="text/javascript" src="ui/jquery.min.js"></script>
<script type="text/javascript" src="ui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="ui/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript" src="ui/jquery.serializejson.min.js"></script>
<script type="text/javascript">
	/*
	 *提交登录验证
	 */
	function login() 
		//通过JSON方式提交表单验证
		var formdata = $('#loginform').serializeJSON();
		//提交登录验证
		$.ajax(
			url : 'login_checkUser',//访问对应的Action对应的方法
			data : formdata,
			dataType : 'json',
			type:'post',
			success : function(rtn) 
				//登录成功
				if (rtn.success) 
					location.href = "index.html";
				else
					$.messager.alert('提示', rtn.message, 'info');
				
			
		);
	
</script>
</head>
<body>
	<div class='signup_container'>
		<div class="w-load">
			<div class="spin"></div>
		</div>
		<h1 class='signup_title'>Zeo·ERP企业资源管理系统</h1>
		<div id="userInfo">
			<span
				style="float: left; margin-left: 40px; height: 200px; border: 0px solid red"><img
				src='images/erp.jpg' id='admin' /></span> <span
				style="float: left; margin-left: 40px; height: 200px; border: 0px solid red">
				<div id="signup_forms" class="signup_forms clearfix">
					<form class="signup_form_form" id="loginform" method="post">
						<div class="form_row first_row">
							<label for="signup_email">请输入用户名</label> <input type="text"
								name="username" placeholder="请输入用户名" id="signup_name">
						</div>
						<div class="form_row">
							<label for="signup_password">请输入密码</label> <input type="password"
								name="pwd" placeholder="请输入密码" id="signup_password">
						</div>
					</form>
				</div>
				<div id="foo"></div> <br />
			</span>
		</div>
		<div class="login-btn-set">
			<div class='rem'>记住我</div>
			<a href='javascript:login()' class='login-btn'></a>
		</div>
	</div>
</body>
</html>

3、在业务层处理异常信息

4、登录功能的实现以及测试

访问登录页面http://localhost:8080/erp/login.html

访问成功

(六)显示用户登录名

1、action的修改

增加showName方法

/*
* 显示登录用户
 */
	public void showName() 
		// 获取当前登录的用户
		Emp emp = (Emp) ActionContext.getContext().getSession().get("loginUser");// 先把用户的信息放到session当中
		// session是否会超时,用户是否登录过
		if (null != emp) 
			ajaxReturn(true, emp.getName());
		else 
			ajaxReturn(false, "");
		
	

2、前端页面的实现

(1)修改index.html页面当中的内容

<span style="float:right; padding-right:20px;" class="head">欢迎:<span id="username"></span>   
<a href="#" id="editpass">修改密码</a> <a href="#" id="loginOut">安全退出</a></span>
(2)修改index.jsp页面当中的内容

$(function()	
	//显示登录用户名
	showName();
	InitLeftMenu();
	tabClose();
	tabCloseEven();
)
/*
 * 显示登录用户名
 */
function showName()
	$.ajax(
		url:'login_showName',
		dataType:'json',
		type:'post',
		success:function(rtn)
			//判断是否存在用户登录用户
			if(rtn.success)
				$('#username').html(rtn.name);
			else
				location.href="login.html";
			
		
	);

(七)退出登录

1、修改LoginAction:增加loginOut方法

/*
* 退出登录
 */
	public void loginOut() 
		ActionContext.getContext().getSession().remove("loginUser");
	

2、修改index.jsp

$(function()	
	//显示登陆用户名
	showName();
	tabClose();
	tabCloseEven();
	//安全退出登录 
	$('#loginOut').bind('click',function()
		$.ajax(
			url:'login_loginOut',
			success:function()
				location.href="login.html";
			
		);
	);
)

测试退出登录

成功返回到了登录页面

二、主界面(菜单的动态读取)

1、菜单动态读取后端的实现

(1)修改Menu实体类

private List<Menu> menus;
	public List<Menu> getMenus() 
		return menus;
	
	public void setMenus(List<Menu> menus) 
		this.menus = menus;
	
(2)修改Menu实体类

(3)修改映射文件

		<!-- 自关联 -->
		<bag name="menus" order-by="menuid">
			<key column="pid" ></key>
			<one-to-many  class="com.itzheng.erp.entity.Menu" />		
		</bag>
(4)在IBaseDao当中get方法

(5)在BaseDao当中重载get方法

public T get(String id)
		return getHibernateTemplate().get(entityClass, id);
	
(6)在IBaseBiz接口当中

(7)在BaseBiz类当中

(8)在MenuAction当中添加一个方法

/*
 * 获取菜单数据
 */
public void getMenuTree() 
		//通过获取主菜单,资关联就会带出旗下所有的菜单
		System.out.println("===============");
		Menu menu = menuBiz.get("0");
		System.out.println(menu);
		write(JSON.toJSONString(menu));

2、菜单动态前端的实现

(1)修改index.jsp当中的内容
// 获取菜单数据
	$.ajax(

		url : 'menu_getMenuTree',
		type : 'post',
		dataType : 'json',
		success : function(rtn) 
			// 给菜单赋值
			_menus = rtn;
			InitLeftMenu();
		
	);


测试运行运行成功

三、密码加密

1、添加shiro依赖

修改erp_parent下的POM.xml文件

(1)定义shiro版本常量

<shiro.ver>1.2.3</shiro.ver>
(2)加入shiro的依赖

<dependency>
        <groupId>org.apache.shiro</groupId>
        我的全栈之路-Java基础之Java概述与开发环境搭建

我的全栈之路-Java基础之macOS+Visual Studio Code开发Java程序

0到1快速掌握Java全栈开发,玩转微信生态

全栈项目实战直播课,来了!

全栈项目实战直播课,来了!

Java从0到全栈-Java语言概述与开发环境搭建