“Java MVC之 Controller层”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
改进版代码
 
(未显示同一用户的2个中间版本)
第1行: 第1行:
  
 
*C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
 
*C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
 +
 +
控制层的作用可以概括如下:如果涉及用户交互的操作它就调用视图层去做,如果涉及业务逻辑和数据库的操作它就调用业务逻辑层去做,它本身什么也不做
  
 
[[文件:Java8-1.png]]
 
[[文件:Java8-1.png]]
第84行: 第86行:
  
 
===改进版代码===
 
===改进版代码===
====MainClass类====
+
====控制层:MainClass类====
  
 
  <nowiki>package main;
 
  <nowiki>package main;
第94行: 第96行:
 
import java.util.Set;
 
import java.util.Set;
  
 +
import entity.*;
  
 
 
import entity.*;
 
import exception.CartException;
 
 
import exception.GoodsException;
 
import exception.GoodsException;
 
import exception.UserException;
 
import exception.UserException;
第105行: 第104行:
  
  
/*本类对应实训: MVC之控制层*/
+
/*本类对应实训: MVC之Model层 */
 
public class MainClass {
 
public class MainClass {
 +
 +
 
 
 
public static void main(String[] args) {
 
public static void main(String[] args) {
 
 
    //管理员登陆
+
        /*管理员登陆
    //如果输入正确就往下进行,否则就提示用户再次输入
+
        * 
    UserShow us= new UserShow();
+
        */
        while(true){
+
        //如果输入正确就往下进行,否则就提示用户再次输入
               
+
        UserShow us= new UserShow();//UserShow是一个视图层对象
        ArrayList<String> uinfo = us.start();
+
        while(true){
        String name=uinfo.get(0);
+
       
        String pwd=uinfo.get(1);
+
        ArrayList<String> uinfo = us.start();
        //在这里用一个if语句来模拟用户名和密码的验证
+
        UserService admin = new UserService();//UserService是一个业务逻辑层对象
        if(name.equals("zhangyi")&& pwd.equals("123456")){
+
       
        System.out.println(name+"登陆成功!");
+
        //uinfo.get(0)和uinfo.get(1)分别代表用户名和密码
        break;
+
        //调用业务逻辑层函数,验证用户名和密码是否正确
        }     
+
        boolean success =admin.login(uinfo.get(0),uinfo.get(1));
       
+
        if(success)
        }      
+
        break;
 
+
       
    //管理员要进行的各种操作     
+
        }
GoodsShow gs = new GoodsShow();
+
       
+
 
while(true) {
+
GoodsShow gs = new GoodsShow();//视图层对象
//显示可供选择的菜单
+
GoodsService bs = new GoodsService();//业务逻辑层对象
us.showMenu();
+
        String id=null;//商品编号
 +
       
 +
while(true) {
 +
//调用视图层方法 ,显示菜单
 +
us.showMenu();
 
 
//获取用户的选择(应用不输入退出应用的编号则始终显示菜单)
+
//调用视图层方法 ,获取用户的选择(应用不输入退出应用的编号则始终显示菜单)
 
           
 
           
int choise = us.getChoise();
+
int choise = us.getChoise();
 
 
switch(choise) {
+
switch(choise) {
 
 
case 1: //商品上架
+
case 1: //商品上架
gs.inputGoods();
+
gs.showTags();//调用视图层,展示所有标签
    //此处添加业务逻辑层的代码
+
Tag t= gs.getTag();//调用视图层,为该商品选择一种标签
 +
Goods g= gs.inputGoods(t);//调用视图层,手工录入商品信息
 +
bs.addGoods(g);//调用业务逻辑层,添加商品到数据库
 +
//System.out.println("商品成功上架!\r\n");
 +
    break;
 +
 +
case 2: //商品下架
 +
id = gs.inputId();//调用视图层,输入待下架的商品号
 +
    bs.delGoods(id);//调用业务逻辑层、进行实际下架
 +
    //System.out.println("商品成功下架!\r\n");
 +
 
    break;
 
    break;
case 2: //商品下架
 
    gs.inputId();
 
    System.out.println("商品成功下架!\r\n");
 
    //此处添加业务逻辑层的代码
 
break;
 
 
case 3: //查询图书
 
case 3: //查询图书
    gs.showTags();
+
  //调用业务逻辑层、进行实际查询的代码
    System.out.println("商品成功查询!\r\n");
+
    ArrayList<Goods> binfo= bs.queryGoods();    
    //此处添加业务逻辑层的代码
+
        gs.showGoods(binfo);//调用视图层,将商品进行展示
break;
+
    //System.out.println("商品成功查询!\r\n");
 +
    break;
 
case 4: //根据商品编号查询图书
 
case 4: //根据商品编号查询图书
    String id=gs.inputId();
+
    id = gs.inputId();//调用视图层,输入商品编号
    System.out.println(id);
+
    Goods g4= bs.queryGoods(id);
    System.out.println("商品成功查询!\r\n");
+
    //调用业务逻辑层、进行实际查询的代码
    //此处添加业务逻辑层的代码
+
    ArrayList<Goods> cinfo=new ArrayList<>();
 +
    cinfo.add(g4);
 +
    gs.showGoods(cinfo);
 +
  // System.out.println("商品成功查询!\r\n");
 +
     
 
    break;
 
    break;
 
case 5://修改图书数量
 
case 5://修改图书数量
 
    ArrayList<String> ginfo = gs.inputNum();
 
    ArrayList<String> ginfo = gs.inputNum();
    System.out.println(ginfo.get(0)+" "+ginfo.get(1));
+
    String id5 =ginfo.get(0);
    System.out.println("商品成功修改!\r\n");
+
    int num = Integer.parseInt(ginfo.get(1));
    //此处添加业务逻辑层的代码
+
    bs.modifyGoods(id5,num);
break;
+
    //调用业务逻辑层、进行实际修改商品数量的代码
 +
    //System.out.println("商品数量成功修改!\r\n");
 +
    break;
 
case 6: //退出当前应用程序
 
case 6: //退出当前应用程序
 
System.out.println(MessageFormat.format("您选择了{0}", "退出当前应用程序"));
 
System.out.println(MessageFormat.format("您选择了{0}", "退出当前应用程序"));
第173行: 第190行:
 
}
 
}
 
}
 
}
+
 +
     
 
 
 
}
 
}
 
 
  
}</nowiki>
+
}
 
 
====表示层GoodsShow====
 
<nowiki>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;
 
 
}
 
 
 
}</nowiki>
 
 
====用到的其他类:Goods====
 
  
<nowiki>package entity;
+
</nowiki>
  
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() {
+
返回 [[Java程序设计]]
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+ "]";
 
}
 
 
}</nowiki>
 

2018年6月17日 (日) 14:27的最新版本

  • C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

控制层的作用可以概括如下:如果涉及用户交互的操作它就调用视图层去做,如果涉及业务逻辑和数据库的操作它就调用业务逻辑层去做,它本身什么也不做

Java8-1.png

管理端

初始版代码

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.GoodsException;
import exception.UserException;
import service.*;



/*本类对应实训: MVC之Model层 */
public class MainClass {
	

	
	public static void main(String[] args) {
				
		        /*管理员登陆
		         *  	
		         */
		        //如果输入正确就往下进行,否则就提示用户再次输入
		        UserShow us= new UserShow();//UserShow是一个视图层对象
		        while(true){
		        	
		        	ArrayList<String> uinfo = us.start();
		        	UserService admin = new UserService();//UserService是一个业务逻辑层对象
		        	
		        	//uinfo.get(0)和uinfo.get(1)分别代表用户名和密码
		        	//调用业务逻辑层函数,验证用户名和密码是否正确
		        	boolean success =admin.login(uinfo.get(0),uinfo.get(1));
		        	if(success)
		        	break;
		        	
		        }
		        

				GoodsShow gs = new GoodsShow();//视图层对象
				GoodsService bs = new GoodsService();//业务逻辑层对象
		        String id=null;//商品编号
		        
				while(true) {
					//调用视图层方法 ,显示菜单
					us.showMenu();
					
					//调用视图层方法 ,获取用户的选择(应用不输入退出应用的编号则始终显示菜单)
		          
					int choise = us.getChoise();
					
					switch(choise) {
					
						case 1:	//商品上架
							gs.showTags();//调用视图层,展示所有标签
							Tag t= gs.getTag();//调用视图层,为该商品选择一种标签
							Goods g= gs.inputGoods(t);//调用视图层,手工录入商品信息
							bs.addGoods(g);//调用业务逻辑层,添加商品到数据库
							//System.out.println("商品成功上架!\r\n");
						    break;							
							
						case 2:	//商品下架
							id = gs.inputId();//调用视图层,输入待下架的商品号
						    bs.delGoods(id);//调用业务逻辑层、进行实际下架
						    //System.out.println("商品成功下架!\r\n");
							
						    break;
					case 3:	//查询图书
						   //调用业务逻辑层、进行实际查询的代码
						    ArrayList<Goods> binfo= bs.queryGoods();						    
					        gs.showGoods(binfo);//调用视图层,将商品进行展示
						    //System.out.println("商品成功查询!\r\n");
						    break;
					case 4:	//根据商品编号查询图书
						    id = gs.inputId();//调用视图层,输入商品编号
						    Goods g4= bs.queryGoods(id);
						    //调用业务逻辑层、进行实际查询的代码
						    ArrayList<Goods> cinfo=new ArrayList<>();
						    cinfo.add(g4);
						    gs.showGoods(cinfo);
						   // System.out.println("商品成功查询!\r\n");
						    
						    break;
					case 5://修改图书数量
						    ArrayList<String> ginfo = gs.inputNum();
						    String id5 =ginfo.get(0);
						    int num = Integer.parseInt(ginfo.get(1));
						    bs.modifyGoods(id5,num);
						    //调用业务逻辑层、进行实际修改商品数量的代码
						    //System.out.println("商品数量成功修改!\r\n");
						    break;					
					case 6:	//退出当前应用程序
							System.out.println(MessageFormat.format("您选择了{0}", "退出当前应用程序"));
							System.exit(0);
							break;
					default:
							continue;
					}
				}
			
       
		
	}
	

}

	



返回 Java程序设计