• MVC三层架构


    MVC设计模式

    什么是MVC:Model view Controller 模型、视图、控制器

    mvc设计模式的概念

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范。
    用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
    MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构.

    早些年

    用户直接访问控制层,控制层就可以直接操作数据库;

    servlet-->CRUD(增删改查)-->数据库
        弊端:程序十分臃肿,不利于维护 
        Servlet的代码中:处理请求、响应、视图跳转、处理JDBC、处理业务代码、处理逻辑代码
        
        架构:没有什么是加一层解决不了的
        程序员调用
        ↓
        JDBC
        ↓
        Mysql Oracle sqlServer ..
    

    MVC三层架构

    Model

    • 业务处理:业务逻辑(Service)
    • 数据持久层:CRUD(Dao)

    View

    • 展示数据
    • 提供链接发起Servlet请求(a,form,img...)

    Controller(Servlet)

    • 接收用户请求:(req:请求参数、Session信息等..)
    • 交给业务层处理对应的代码
    • 控制视图的跳转

    登录--->接收用户的登录请求--->处理用户的请求(获取用户登录的参数,username、password)--->交给业务层处理登录业务(判断用户名密码是否正确:事务)--->Dao层查询用户名和密码是否正确--->数据库

    一般情况下,在项目中要体现出三层架构,通过分包来描述:

    • 1.web/controller/action...:表现层控制器
    • 2.domain/bean...:定义javabean
    • 3.service:描述业务层(定义业务接口)
      • serviceImpl:实现业务接口
    • 4.dao:描述数据访问层(定义数据访问层接口)
    • daoImpl:实现数据访问层接口
    • 5.util:定义工具类
    • 6.exception:自定义异常

    BaseServlet

    为什么要书写BaseServlet?

    书写一个模块需要至少四个Servlet,即增删改查.这样不便于维护.开发复杂.可以通过BseServlet进行请求方法的定位.

    package com.zgrj.account.util;
    
    import java.io.IOException;
    import java.lang.reflect.Method;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class BaseServlet
     */
    public  abstract class BaseServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    			request.setCharacterEncoding("utf-8");
    			String methodName = request.getParameter("method");
    			Class clazz  = 	this.getClass();
    			String path = null;
    			try {				
    				    Method method = clazz.getDeclaredMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
    					path = (String) method.invoke(this, request,response);
    			} catch (Exception e) {
    				e.printStackTrace();
    				}
    			request.getRequestDispatcher(path).forward(request, response);
    		}
    	
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		
    		doGet(request, response);
    	}
    
    }
    
    频频回头的人注定走不了远路。
  • 相关阅读:
    把csv文件导入数据库
    c# DataTable 针对xml、excel、csv导入和导出
    ASP.NET常用珍藏代码
    C# 判断图片链接是否存在
    在asp.net中长内容自动分页的实现.NET教程
    SQL代理服务启动不了SQLSERVERAGENT
    SQL重复记录查询(转载)
    在asp.net中长内容自动分页的实现.NET教程2
    根据年月来判断月里天数
    SQL字符串函数
  • 原文地址:https://www.cnblogs.com/CHENFANgY/p/13023794.html
Copyright © 2020-2023  润新知