Java 桌面版之Model层

来自CloudWiki
Cloud17讨论 | 贡献2019年5月19日 (日) 07:17的版本 加入对service层的调用
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

Model层的作用

  • M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

Java8-1.png

客户端功能

Java2-36.png


客户端Model层的编写

新建类UserService

新建包service,在其中新建此类。

 package service;

import dao.*;
import entity.*;
//import exception.UserException;
public class UserService {
	
	/**
	 * 用户集类(用于存储用户
	 */
	private UserDao userset = null;
	
	
	public UserService() {
		//这里根据实际情况,选择数据的实现类
		//userset = new UserDaoArray();
                userset = new UserDaoSQL();
	}
	}

添加用户功能:addUser

/**
	 * 用于向用户集添加用户
	 */
	public void addUser(User user){
		
		userset.addUser(user);
        System.out.println("用户 "+user.getName() +" 注册成功");        
		System.out.println();
	}	

用户登陆验证功能:login()

/**
	 * 登录验证,判断用户名与密码是否一致
	 * 
	 * @param uid 用户输入的登录账号
	 * @param pwd 用户输入的登录密码
	 * @return 登录信息有效:返回用户对象,否则返回NULL
	 */
	public boolean login(String name, String pwd) {
		//用户名为空,密码为空
		//try{
			if(userset.search(name)==null){
				//throw new UserException("用户 "+name+":该用户不存在");
				System.out.println("用户 "+name+":该用户不存在");
				return false;
			}else if(!userset.verify(name, pwd)){
				//throw new UserException("用户 "+name+":用户名或密码错误");
				System.out.println("用户 "+name+":用户名或密码错误");
				return false;
			}
			System.out.println("用户 "+name+" 登陆成功!");
		//}catch(UserException e){
			//System.out.println(e.toString());
			//return false;
		//}		
		return true;
	}

在main方法中编写测试代码

public static void main(String[] args) {
		UserService us = new UserService();
		User u1 =  new User("王建","000000");
		us.addUser(u1);;
		us.login("李建", "111111");
		us.login("王建", "111111");
		us.login("王建", "000000");
	}

与View层、Dao层联调联试

在View层UserInfo类内部,进行如下操作

创建和绑定事件监听器

共有两个监听器:一个是登陆按钮的监听器,一个是重置按钮的监听器。

这两个监听器都以UserInfo类的内部类存在,都在UserInfo类里面。


LoginAction:

private class LoginAction implements ActionListener{
		
		public LoginAction(){
			
		}
		@Override
		public void actionPerformed(ActionEvent e) {
				// 获取用户输入的账号和密码
				String uid = txtUserID.getText();
				String pwd = new String(txtPassword.getPassword());
				
				JOptionPane.showMessageDialog(null, uid+","+pwd, "信息", JOptionPane.INFORMATION_MESSAGE);
		}
	 }

ResetAction:

private class ResetAction implements ActionListener{
		
		public ResetAction(){
			
		}
		@Override
		public void actionPerformed(ActionEvent e) {
			txtUserID.setText("");
			txtPassword.setText("");
			txtUserID.requestFocus();
		}
	 }

在UserInfo类的构造方法中,为两个按钮绑定事件监听器:

btnLogon.addActionListener(new LoginAction());
 btnReset.addActionListener(new ResetAction());

Java9-41.png

测试:右击类UserInfo ,RUN AS -> JAVA APPLICATION:

Java8-6.png

点击登陆时,如图:

Java9-42.png

加入对model层的调用

在UserInfo的事件监听器LoginAction中,加入对model层的调用:

private class LoginAction implements ActionListener{
		
		public LoginAction(){
			
		}
		@Override
		public void actionPerformed(ActionEvent e) {
				// 获取用户输入的账号和密码
			String uid = txtUserID.getText();
			String pwd = new String(txtPassword.getPassword());
			// 判断用户输入的账号和密码是否存在
			UserService us = new UserService();
			boolean success = us.login(uid, pwd);
			// 用户编号不存在
			if (success == false) {
				JOptionPane.showMessageDialog(null, "登陆账号或密码不正确", "警告信息", JOptionPane.WARNING_MESSAGE);
				// 增加用户体验,选中文本框中的字,并获得焦点
				txtUserID.requestFocus();
				txtUserID.selectAll();
			} else
				JOptionPane.showMessageDialog(null, "登陆成功", "信息", JOptionPane.INFORMATION_MESSAGE);
		}
	 }

测试:右击类UserInfo ,RUN AS -> JAVA APPLICATION:

Java8-6.png

登录成功时,弹出成功界面,如图:

Java8-12.png

失败时,弹出失败界面,如图:

Java8-12.png

完整代码

package service;

import dao.*;
import entity.*;
//import exception.UserException;
public class UserService {
	
	/**
	 * 用户集类(用于存储用户
	 */
	private UserDao userset = null;
	
	
	public UserService() {
		userset = new UserDaoSQL();
	}
	/**
	 * 用于向用户集添加用户
	 */
	public void addUser(User user){
		
		userset.addUser(user);
        System.out.println("用户 "+user.getName() +" 注册成功");        
		System.out.println();
	}
	
	/**
	 * 登录验证,判断用户名与密码是否一致
	 * 
	 * @param uid 用户输入的登录账号
	 * @param pwd 用户输入的登录密码
	 * @return 登录信息有效:返回用户对象,否则返回NULL
	 */
	public boolean login(String name, String pwd) {
		//用户名为空,密码为空
		//try{
			if(userset.search(name)==null){
				//throw new UserException("用户 "+name+":该用户不存在");
				System.out.println("用户 "+name+":该用户不存在");
				return false;
			}else if(!userset.verify(name, pwd)){
				//throw new UserException("用户 "+name+":用户名或密码错误");
				System.out.println("用户 "+name+":用户名或密码错误");
				return false;
			}
			System.out.println("用户 "+name+" 登陆成功!");
		//}catch(UserException e){
			//System.out.println(e.toString());
			//return false;
		//}		
		return true;
	}
	public static void main(String[] args) {
		UserService us = new UserService();
		User u1 =  new User("王建","000000");
		us.addUser(u1);;
		us.login("李建", "111111");
		us.login("王建", "111111");
		us.login("王建", "000000");
	}
}