Java MVC之 Controller层

来自CloudWiki
跳转至: 导航搜索
  • 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程序设计