“Java MVC之 Model层”的版本间的差异
来自CloudWiki
(→Model层的编写) |
|||
(未显示同一用户的3个中间版本) | |||
第2行: | 第2行: | ||
*M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。 | *M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。 | ||
+ | '''(该层最好用接口写,现在的内容实际是业务逻辑层的部分内容)''' | ||
[[文件:Java8-1.png]] | [[文件:Java8-1.png]] | ||
第7行: | 第8行: | ||
===客户端=== | ===客户端=== | ||
===管理端=== | ===管理端=== | ||
− | <nowiki>package main; | + | |
+ | ===业务逻辑层:UserService=== | ||
+ | <nowiki> | ||
+ | package service; | ||
+ | import dao.*; | ||
+ | import entity.*; | ||
+ | //import exception.UserException; | ||
+ | public class UserService { | ||
+ | |||
+ | /** | ||
+ | * 用户集类(用于存储用户 | ||
+ | */ | ||
+ | private UserDao userset = null; | ||
+ | |||
+ | |||
+ | public UserService() { | ||
+ | userset = new UserDaoMap(); | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * 用于向用户集添加用户 | ||
+ | */ | ||
+ | public void addUser(User user){ | ||
+ | |||
+ | userset.addUser(user); | ||
+ | System.out.println("用户 "+user.getName() +" 注册成功"); | ||
+ | System.out.println(); | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * 查询仓库中的用户 | ||
+ | */ | ||
+ | public void queryUser( ){ | ||
+ | System.out.println("本店现有如下用户:"); | ||
+ | userset.queryUser(); | ||
+ | System.out.println(); | ||
+ | } | ||
+ | /** | ||
+ | * 登录验证,判断用户名与密码是否一致 | ||
+ | * | ||
+ | * @param uid 用户输入的登录账号 | ||
+ | * @param pwd 用户输入的登录密码 | ||
+ | * @return 登录信息有效:返回用户对象,否则返回NULL | ||
+ | */ | ||
+ | public boolean login(String name, String pwd) { | ||
+ | //用户名为空,密码为空 | ||
+ | //try{ | ||
+ | if(!userset.hasUser(name)){ | ||
+ | //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("zhangliu","456");//这里可能会遇到构造方法参数不符的问题,重新修改一下构造方法 | ||
+ | us.addUser(u1); | ||
+ | us.queryUser( ); | ||
+ | us.login("zhangliu","456"); | ||
+ | |||
+ | } | ||
+ | }</nowiki> | ||
− | + | ===业务逻辑层:GoodsService=== | |
+ | <nowiki>package service; | ||
import java.util.ArrayList; | import java.util.ArrayList; | ||
− | |||
− | |||
+ | import dao.*; | ||
import entity.*; | import entity.*; | ||
− | |||
import exception.GoodsException; | import exception.GoodsException; | ||
− | + | /** | |
− | + | * 这个类处理与商品有关的业务逻辑 | |
− | + | */ | |
− | + | public class GoodsService { | |
− | + | ||
− | /* | + | |
− | public | + | private GoodsDao dbset ; |
+ | |||
+ | |||
+ | public GoodsService() { | ||
+ | dbset = new GoodsDaoMem(); | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * 向数据仓库中批量添加商品 | ||
+ | * @param goods 向仓库中添加商品(数组) | ||
+ | * @return 值为空 | ||
+ | */ | ||
+ | public void addGoods(Goods [] goods){ | ||
+ | |||
+ | System.out.println("现在开始向库中添加商品 "); | ||
+ | for(int i=0;i<goods.length;i++){ | ||
+ | this.addGoods(goods[i]); | ||
+ | } | ||
+ | System.out.println("所有商品添加完毕 "); | ||
+ | System.out.println(); | ||
+ | |||
+ | |||
+ | } | ||
+ | /** | ||
+ | * 向数据仓库中添加商品 | ||
+ | * @param g 向仓库中添加的商品 | ||
+ | * @return 值为空 | ||
+ | */ | ||
+ | public void addGoods(Goods g){ | ||
+ | |||
+ | int num = g.getNumber(); | ||
+ | if(dbset.hasGoods(g)){//如果该商品已经存在,则追加商品数目 | ||
+ | dbset.modifyGoods(g, num); | ||
+ | }else{//如果该商品不存在,则添加这个商品到数据库 | ||
+ | dbset.addGoods(g); | ||
+ | } | ||
+ | System.out.println(" 商品 "+g.getName() +" 成功入库"); | ||
+ | |||
+ | } | ||
+ | |||
+ | /** | ||
+ | * 向数据仓库中删除商品 | ||
+ | * @param g 向仓库中删除的商品 | ||
+ | * @return 值为空 | ||
+ | */ | ||
+ | public void delGoods(Goods g) { | ||
+ | System.out.println("现在开始向库中删除商品 "); | ||
+ | try{ | ||
+ | if(dbset.hasGoods(g)){ | ||
+ | dbset.delGoods(g); | ||
+ | System.out.println(g.getName()+" 已删除完毕!"); | ||
+ | }else{ | ||
+ | throw new GoodsException("要删除的商品"+g.getName()+" 不存在哦!"); | ||
+ | //System.out.println("要删除的商品"+g.getName()+" 不存在"); | ||
+ | } | ||
+ | System.out.println(); | ||
+ | }catch(GoodsException e){ | ||
+ | System.out.println(e.toString()); | ||
+ | } | ||
+ | } | ||
+ | /** | ||
+ | * 向数据仓库中删除商品 | ||
+ | * @param g 向仓库中删除的商品 | ||
+ | * @return 值为空 | ||
+ | */ | ||
+ | public void delGoods(String id) { | ||
+ | try{ | ||
+ | System.out.println("现在开始向库中删除商品 "); | ||
+ | if(dbset.hasGoods(id)){ | ||
+ | dbset.delGoods(id); | ||
+ | System.out.println("商品"+ id+" 已删除完毕!"); | ||
+ | }else{ | ||
+ | throw new GoodsException("要删除的商品"+id+" 不存在哦!"); | ||
+ | //System.out.println("要删除的商品"+g.getName()+" 不存在"); | ||
+ | } | ||
+ | System.out.println(); | ||
+ | }catch(GoodsException e){ | ||
+ | System.out.println(e.toString()); | ||
+ | } | ||
+ | } | ||
+ | /** | ||
+ | * 查询仓库中的商品 | ||
+ | * * @param 值为空 | ||
+ | * @return 值为空 | ||
+ | */ | ||
− | + | public ArrayList<Goods> queryGoods( ){ | |
+ | |||
+ | ArrayList<Goods> g= dbset.queryGoods(); | ||
+ | System.out.println("商品成功查询!\r\n"); | ||
+ | return g; | ||
+ | |||
+ | |||
+ | } | ||
+ | /** | ||
+ | * 查询仓库中的商品 | ||
+ | * * @param 值为空 | ||
+ | * @return 值为空 | ||
+ | */ | ||
− | public | + | public Goods queryGoods(String id ) { |
+ | |||
+ | Goods g= dbset.queryGoods(id); | ||
+ | |||
+ | if(g==null){ | ||
+ | System.out.println("要查找的商品"+id+" 不存在哦!"); | ||
+ | return null; | ||
+ | } | ||
+ | System.out.println("商品成功查询!\r\n"); | ||
+ | return g; | ||
+ | |||
+ | } | ||
+ | /** | ||
+ | * 向数据仓库中修改商品的数量 | ||
+ | * @param g 仓库中待修改的商品 | ||
+ | * @param n 商品的数量增加或减少的数量 | ||
+ | * @return 值为空 | ||
+ | */ | ||
+ | public void modifyGoods(Goods g,int n) { | ||
+ | System.out.println("现在开始修改商品 "+g.getName()+ " 的数量"); | ||
+ | try{ | ||
+ | if(!dbset.hasGoods(g)){//如果查不到这个商品 | ||
+ | throw new GoodsException("要修改的商品"+g.getName()+" 不存在哦!"); | ||
+ | //System.out.println("要修改的商品"+g.getName()+" 不存在"); | ||
+ | }else {//查到这个商品了,可以做进一步操作 | ||
− | + | int s = g.getNumber();//该商品现在的库存数 | |
− | + | if(n>0){//如果n>0 ,库存实际上是增加了 | |
− | + | dbset.modifyGoods(g, n); | |
− | + | ||
− | + | }else if(s +n >=0){//如果n<0,s+n>=0,库存实际上是减小了,但仍是正数 | |
− | + | dbset.modifyGoods(g, n); | |
− | + | ||
− | + | }else{//对应s +n <0的情况,要减去的数目比实际的库存数还要大,操作错误。 | |
− | + | throw new GoodsException(g.getName()+" 待删除数量已超过该商品库存数哦!"); | |
− | + | //System.out.println(g.getName()+" 待删除数量已超过该商品库存数!"); | |
− | + | } | |
− | + | System.out.println(g.getName()+" 的库存增加了 " + n+ " 个"); | |
− | + | System.out.println(); | |
− | + | } | |
− | + | }catch( GoodsException e){ | |
− | + | System.out.println(e.toString()); | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ||
− | + | } | |
+ | /** | ||
+ | * 向数据仓库中修改商品的数量 | ||
+ | * @param g 仓库中待修改的商品 | ||
+ | * @param n 商品的数量增加或减少的数量 | ||
+ | * @return 值为空 | ||
+ | */ | ||
+ | public void modifyGoods(String id,int n) { | ||
+ | System.out.println("现在开始修改商品 "+id+ " 的数量"); | ||
+ | try{ | ||
+ | if(!dbset.hasGoods(id)){//如果查不到这个商品 | ||
+ | throw new GoodsException("要修改的商品"+id+" 不存在哦!"); | ||
+ | |||
+ | }else {//查到这个商品了,可以做进一步操作 | ||
+ | Goods g=dbset.queryGoods(id); | ||
+ | int s = g.getNumber();//该商品现在的库存数 | ||
+ | if(n>0){//如果n>0 ,库存实际上是增加了 | ||
+ | dbset.modifyGoods(g, n); | ||
+ | |||
+ | }else if(s +n >=0){//如果n<0,s+n>=0,库存实际上是减小了,但仍是正数 | ||
+ | dbset.modifyGoods(g, n); | ||
+ | |||
+ | }else{//对应s +n <0的情况,要减去的数目比实际的库存数还要大,操作错误。 | ||
+ | throw new GoodsException(g.getName()+" 待删除数量已超过该商品库存数哦!"); | ||
+ | //System.out.println(g.getName()+" 待删除数量已超过该商品库存数!"); | ||
+ | } | ||
+ | System.out.println(g.getName()+" 的库存增加了 " + n+ " 个"); | ||
+ | System.out.println(); | ||
+ | } | ||
+ | }catch( GoodsException e){ | ||
+ | System.out.println(e.toString()); | ||
+ | } | ||
+ | |||
} | } | ||
− | + | ||
} | } | ||
+ | </nowiki> | ||
− | + | 项目源文件请见: | |
− | + | http://cloud.sict.edu.cn:80/link/CED3A93616F3973EBBBBCC4427DE32B1 | |
− | |||
− | + | 返回 [[Java程序设计]] |
2020年5月17日 (日) 09:32的最新版本
Model层的作用
- M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
Model层的编写
客户端
管理端
业务逻辑层:UserService
package service; import dao.*; import entity.*; //import exception.UserException; public class UserService { /** * 用户集类(用于存储用户 */ private UserDao userset = null; public UserService() { userset = new UserDaoMap(); } /** * 用于向用户集添加用户 */ public void addUser(User user){ userset.addUser(user); System.out.println("用户 "+user.getName() +" 注册成功"); System.out.println(); } /** * 查询仓库中的用户 */ public void queryUser( ){ System.out.println("本店现有如下用户:"); userset.queryUser(); System.out.println(); } /** * 登录验证,判断用户名与密码是否一致 * * @param uid 用户输入的登录账号 * @param pwd 用户输入的登录密码 * @return 登录信息有效:返回用户对象,否则返回NULL */ public boolean login(String name, String pwd) { //用户名为空,密码为空 //try{ if(!userset.hasUser(name)){ //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("zhangliu","456");//这里可能会遇到构造方法参数不符的问题,重新修改一下构造方法 us.addUser(u1); us.queryUser( ); us.login("zhangliu","456"); } }
业务逻辑层:GoodsService
package service; import java.util.ArrayList; import dao.*; import entity.*; import exception.GoodsException; /** * 这个类处理与商品有关的业务逻辑 */ public class GoodsService { private GoodsDao dbset ; public GoodsService() { dbset = new GoodsDaoMem(); } /** * 向数据仓库中批量添加商品 * @param goods 向仓库中添加商品(数组) * @return 值为空 */ public void addGoods(Goods [] goods){ System.out.println("现在开始向库中添加商品 "); for(int i=0;i<goods.length;i++){ this.addGoods(goods[i]); } System.out.println("所有商品添加完毕 "); System.out.println(); } /** * 向数据仓库中添加商品 * @param g 向仓库中添加的商品 * @return 值为空 */ public void addGoods(Goods g){ int num = g.getNumber(); if(dbset.hasGoods(g)){//如果该商品已经存在,则追加商品数目 dbset.modifyGoods(g, num); }else{//如果该商品不存在,则添加这个商品到数据库 dbset.addGoods(g); } System.out.println(" 商品 "+g.getName() +" 成功入库"); } /** * 向数据仓库中删除商品 * @param g 向仓库中删除的商品 * @return 值为空 */ public void delGoods(Goods g) { System.out.println("现在开始向库中删除商品 "); try{ if(dbset.hasGoods(g)){ dbset.delGoods(g); System.out.println(g.getName()+" 已删除完毕!"); }else{ throw new GoodsException("要删除的商品"+g.getName()+" 不存在哦!"); //System.out.println("要删除的商品"+g.getName()+" 不存在"); } System.out.println(); }catch(GoodsException e){ System.out.println(e.toString()); } } /** * 向数据仓库中删除商品 * @param g 向仓库中删除的商品 * @return 值为空 */ public void delGoods(String id) { try{ System.out.println("现在开始向库中删除商品 "); if(dbset.hasGoods(id)){ dbset.delGoods(id); System.out.println("商品"+ id+" 已删除完毕!"); }else{ throw new GoodsException("要删除的商品"+id+" 不存在哦!"); //System.out.println("要删除的商品"+g.getName()+" 不存在"); } System.out.println(); }catch(GoodsException e){ System.out.println(e.toString()); } } /** * 查询仓库中的商品 * * @param 值为空 * @return 值为空 */ public ArrayList<Goods> queryGoods( ){ ArrayList<Goods> g= dbset.queryGoods(); System.out.println("商品成功查询!\r\n"); return g; } /** * 查询仓库中的商品 * * @param 值为空 * @return 值为空 */ public Goods queryGoods(String id ) { Goods g= dbset.queryGoods(id); if(g==null){ System.out.println("要查找的商品"+id+" 不存在哦!"); return null; } System.out.println("商品成功查询!\r\n"); return g; } /** * 向数据仓库中修改商品的数量 * @param g 仓库中待修改的商品 * @param n 商品的数量增加或减少的数量 * @return 值为空 */ public void modifyGoods(Goods g,int n) { System.out.println("现在开始修改商品 "+g.getName()+ " 的数量"); try{ if(!dbset.hasGoods(g)){//如果查不到这个商品 throw new GoodsException("要修改的商品"+g.getName()+" 不存在哦!"); //System.out.println("要修改的商品"+g.getName()+" 不存在"); }else {//查到这个商品了,可以做进一步操作 int s = g.getNumber();//该商品现在的库存数 if(n>0){//如果n>0 ,库存实际上是增加了 dbset.modifyGoods(g, n); }else if(s +n >=0){//如果n<0,s+n>=0,库存实际上是减小了,但仍是正数 dbset.modifyGoods(g, n); }else{//对应s +n <0的情况,要减去的数目比实际的库存数还要大,操作错误。 throw new GoodsException(g.getName()+" 待删除数量已超过该商品库存数哦!"); //System.out.println(g.getName()+" 待删除数量已超过该商品库存数!"); } System.out.println(g.getName()+" 的库存增加了 " + n+ " 个"); System.out.println(); } }catch( GoodsException e){ System.out.println(e.toString()); } } /** * 向数据仓库中修改商品的数量 * @param g 仓库中待修改的商品 * @param n 商品的数量增加或减少的数量 * @return 值为空 */ public void modifyGoods(String id,int n) { System.out.println("现在开始修改商品 "+id+ " 的数量"); try{ if(!dbset.hasGoods(id)){//如果查不到这个商品 throw new GoodsException("要修改的商品"+id+" 不存在哦!"); }else {//查到这个商品了,可以做进一步操作 Goods g=dbset.queryGoods(id); int s = g.getNumber();//该商品现在的库存数 if(n>0){//如果n>0 ,库存实际上是增加了 dbset.modifyGoods(g, n); }else if(s +n >=0){//如果n<0,s+n>=0,库存实际上是减小了,但仍是正数 dbset.modifyGoods(g, n); }else{//对应s +n <0的情况,要减去的数目比实际的库存数还要大,操作错误。 throw new GoodsException(g.getName()+" 待删除数量已超过该商品库存数哦!"); //System.out.println(g.getName()+" 待删除数量已超过该商品库存数!"); } System.out.println(g.getName()+" 的库存增加了 " + n+ " 个"); System.out.println(); } }catch( GoodsException e){ System.out.println(e.toString()); } } }
项目源文件请见:
http://cloud.sict.edu.cn:80/link/CED3A93616F3973EBBBBCC4427DE32B1
返回 Java程序设计