“Java MVC之 Controller层”的版本间的差异
来自CloudWiki
(→改进版代码) |
|||
第1行: | 第1行: | ||
*C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。 | *C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。 | ||
+ | |||
+ | 控制层的作用可以概括如下:如果涉及用户交互的操作它就调用视图层去做,如果涉及业务逻辑和数据库的操作它就调用业务逻辑层去做,它本身什么也不做 | ||
[[文件:Java8-1.png]] | [[文件:Java8-1.png]] |
2018年5月17日 (四) 01:56的版本
- C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
控制层的作用可以概括如下:如果涉及用户交互的操作它就调用视图层去做,如果涉及业务逻辑和数据库的操作它就调用业务逻辑层去做,它本身什么也不做
管理端
初始版代码
MainClass
package main; import java.text.MessageFormat; import java.util.ArrayList; /*本类对应实训: MVC之控制层*/ public class MainClass { public static void main(String[] args) { //管理员登陆 //如果输入正确就往下进行,否则就提示用户再次输入 UserShow us= new UserShow(); while(true){ ArrayList<String> uinfo = us.start(); String name=uinfo.get(0); String pwd=uinfo.get(1); //在这里用一个if语句来模拟用户名和密码的验证 if(name.equals("zhangyi")&& pwd.equals("123456")){ System.out.println(name+"登陆成功!"); break; } } / while(true) { //显示可供选择的菜单 us.showMenu(); //获取用户的选择(应用不输入退出应用的编号则始终显示菜单) int choise = us.getChoise(); switch(choise) { case 1: //商品上架 System.out.println("商品成功上架!\r\n"); //此处添加业务逻辑层的代码 break; case 2: //商品下架 System.out.println("商品成功下架!\r\n"); //此处添加业务逻辑层的代码 break; case 3: //查询图书 System.out.println("商品成功查询!\r\n"); //此处添加业务逻辑层的代码 break; case 4: //根据商品编号查询图书 System.out.println("商品成功查询!\r\n"); //此处添加业务逻辑层的代码 break; case 5://修改图书数量 System.out.println("商品成功修改!\r\n"); //此处添加业务逻辑层的代码 break; case 6: //退出当前应用程序 System.out.println(MessageFormat.format("您选择了{0}", "退出当前应用程序")); System.exit(0); break; default: continue; } } } }
改进版代码
MainClass类
package main; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Scanner; import java.util.Set; import entity.*; import exception.CartException; import exception.GoodsException; import exception.UserException; import service.*; /*本类对应实训: MVC之控制层*/ public class MainClass { public static void main(String[] args) { //管理员登陆 //如果输入正确就往下进行,否则就提示用户再次输入 UserShow us= new UserShow(); while(true){ ArrayList<String> uinfo = us.start(); String name=uinfo.get(0); String pwd=uinfo.get(1); //在这里用一个if语句来模拟用户名和密码的验证 if(name.equals("zhangyi")&& pwd.equals("123456")){ System.out.println(name+"登陆成功!"); break; } } //管理员要进行的各种操作 GoodsShow gs = new GoodsShow(); while(true) { //显示可供选择的菜单 us.showMenu(); //获取用户的选择(应用不输入退出应用的编号则始终显示菜单) int choise = us.getChoise(); switch(choise) { case 1: //商品上架 gs.inputGoods(); //此处添加业务逻辑层的代码 break; case 2: //商品下架 gs.inputId(); System.out.println("商品成功下架!\r\n"); //此处添加业务逻辑层的代码 break; case 3: //查询图书 gs.showTags(); System.out.println("商品成功查询!\r\n"); //此处添加业务逻辑层的代码 break; case 4: //根据商品编号查询图书 String id=gs.inputId(); System.out.println(id); System.out.println("商品成功查询!\r\n"); //此处添加业务逻辑层的代码 break; case 5://修改图书数量 ArrayList<String> ginfo = gs.inputNum(); System.out.println(ginfo.get(0)+" "+ginfo.get(1)); System.out.println("商品成功修改!\r\n"); //此处添加业务逻辑层的代码 break; case 6: //退出当前应用程序 System.out.println(MessageFormat.format("您选择了{0}", "退出当前应用程序")); System.exit(0); break; default: continue; } } } }
表示层GoodsShow
package main; import java.util.ArrayList; import java.util.Scanner; import entity.Goods; public class GoodsShow { private static Scanner sc = new Scanner(System.in); public GoodsShow(){ } /** * 展示所有的商品分类标签 */ public void showTags() { /* * 编写输出语句 * */ System.out.println("**********商品分类**********\r\n" + "1.纸质书籍, 软件编程\r\n" + "2.纸质书籍, 软件编程\r\n" + "3.电子产品, 学习工具\r\n" + "4.其他标签\r\n" + "*******************************"); } /** * 新商品的录入界面 */ public Goods inputGoods(){ Goods g= new Goods(); System.out.println("请输入商品编号:"); String id = sc.nextLine(); g.setId(id); System.out.println("请输入商品名称:"); String name =sc.nextLine(); g.setName(name); System.out.println("请输入商品数量:"); String number =sc.nextLine(); int n= Integer.parseInt(number); g.setNumber(n); System.out.println("请输入商品价格:"); String price =sc.nextLine(); Float p = Float.parseFloat(price); g.setPrice(p); System.out.println("商品信息录入完毕!\r\n"); return g; } /** * 输入商品编号的页面 */ public String inputId(){ System.out.println("请输入商品编号:"); String id = sc.nextLine(); return id; } /** * 输入要修改的商品的编号和数量的页面 */ public ArrayList<String> inputNum(){ System.out.println("请输入商品编号:"); String id = sc.nextLine(); System.out.println("请输入商品数量:"); String number =sc.nextLine(); ArrayList<String> ginfo = new ArrayList<>(); ginfo.add(id); ginfo.add(number); return ginfo; } }
用到的其他类:Goods
package entity; public class Goods { protected String id; //商品编号 protected String name; //商品名称 protected int number; //商品库存 protected float price; //商品价格 protected Tag tag; // 书籍详细分类(类目) public Goods(){} public Goods(String id,String name,float price,int number){ this.id = id; this.name = name; this.number = number; this.price = price; } public Goods(String id, String name, float price, int number,Tag tag) { this.id = id; this.name = name; this.number = number; this.price = price; this.tag = tag; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } public Tag getTag() { return tag; } public void setTag(Tag tag) { this.tag = tag; } @Override public String toString() { return "Goods [id=" + id + ", name=" + name + ", number=" + number + ", price=" + price +"tag="+tag+ "]"; } }