三层架构与MVC框架解析

三层架构概述

表示层

表示层主要负责接收用户的请求并返回数据,为客户端提供应用程序的访问接口,通常由Servlet实现。

业务逻辑层

业务逻辑层负责对数据实现业务逻辑的封装,提供服务接口,这一层通常由Service类实现。

数据访问层

数据访问层主要负责与数据库进行交互,处理数据库的读写操作,由DAO类实现。

项目结构示例:

  • com.mayikt.servlet - 表示层(Servlet)
  • com.mayikt.service - 业务逻辑层(Service)
  • com.mayikt.dao - 数据访问层(DAO)

MVC模型

MVC是指模型(Model)、视图(View)和控制器(Controller)的设计模式。

模型(M)

模型结合了业务逻辑层和数据库访问层。它代表应用程序中的数据和数据逻辑,负责与数据库进行交互。

视图(V)

视图由网页、JSP等组成,主要用于展示模型中的数据,负责处理数据显示。

控制器(C)

控制器负责处理用户交互,从视图读取数据,并将其发送到模型。Servlet的角色就是担任控制器。

视图层

视图层包括JSP、Freemarker模板(ftl)、JavaScript(js)和CSS文件。

注解解析

1. @RequestParam

作用:将请求中指定名称的参数赋值给控制器的形参。

示例:

java 复制代码
@RequestMapping("/demo")
public String demo(@RequestParam("uname") String name){
    System.out.println(name);
    return "show2";
}

2. @RequestBody

作用:用于获取请求体内容并自动转换为对象。

示例:

java 复制代码
@RequestMapping("/demo")
public String demo(@RequestBody User user){
    System.out.println(user.getName());
    return null;
}

3. @PathVariable

作用:用于绑定URL中的占位符,实现RESTful风格的请求。

示例:

java 复制代码
@RequestMapping("/show8/{ename}/{esex}")
public String show8(@PathVariable String ename, @PathVariable String esex) {
    System.out.println(ename);
    System.out.println(esex);
    return "sucess";
}

4. Restful

Restful是一种软件架构风格,主要用于客户端与服务器间的交互,使得软件设计更加简洁、层次分明。

请求方式:

  • GET:获取资源
  • POST:创建资源
  • PUT:更新资源
  • DELETE:删除资源

5. @RequestHeader

作用:用于获取请求消息头。

示例:

java 复制代码
@RequestMapping("show02")
public String show02(@RequestHeader(value = "msg1") String msg) {
    System.out.println(msg);
    return "sucess";
}
  1. @RequestMapping
    • 在默认的情况下RequestMapping是支持所有的请求方式(get,post,delete)

@RequestMapping("value = "/add",method = RequestMethod.post)

​ RequestMethod.post设定该接口支持的类型

java 复制代码
@RestController
@RequestMapping("/user")
public class TwoController {

    @RequestMapping("/add",method = RequestMethod.post)
    public String selectAll(@RequestBody Emp emp){
        System.out.println(emp);
        return "success";
    }
}

请求参数的绑定

支持的数据类型

  1. 基本类型参数:包括基本类型和String类型。
  2. POJO类型参数:包括实体类。
  3. 数组和集合类型参数:支持List和Map集合。
  4. Servlet API对象:如HttpServletRequest和HttpServletResponse。

示例代码:

java 复制代码
@RequestMapping("/show")
public String show() {
    return "one";
}

@RequestMapping("/show1")
public String show1(String msg1) {
    System.out.println("接收到用户数据为" + msg1);
    return "sucess";
}

小结

本文详细介绍了三层架构及MVC模式的基本概念和实现,同时阐述了常用的注解及请求参数的绑定方式,为开发者在Java Web开发过程中提供了清晰的参考。

相关推荐
熊猫钓鱼>_>1 小时前
鸿蒙ArkUI全手势操作实战指南:6大基础手势从原理到落地避坑
人工智能·深度学习·华为·架构·harmonyos·arkui·tapgesture
天远数科2 小时前
零信任架构实战:基于天远二手车VIN估值构建自动化汽车数据网关
人工智能·架构·自动化·汽车
独孤九剑打醒他2 小时前
SMS 架构轻量化原型:单硬盘双分区实现方案+仿真
架构
这个DBA有点耶3 小时前
Redis大key“根治”指南:拆分策略与数据结构选型
数据库·mysql·架构
老郑聊AI业财智造4 小时前
Spring AI 技术架构与源码分析
java·人工智能·后端·spring·架构·软件工程
隔窗听雨眠4 小时前
当KES遇到多租户:金仓数据库多租户架构的隔离实践与部署指南
数据库·架构
zzz_23685 小时前
【AI代码测评】OpenCodeReview 架构拆解:确定性工程与 Agent 如何分工
人工智能·架构·agent·agent测评·harnes
星创易联7 小时前
无人车供电闪断数据丢失?SV920网联域控制器掉电保护方案 | 星创易联
5g·架构·自动驾驶·车载通信·车载网关
2601_963282777 小时前
油田、工矿厂区 DMR 专网对讲系统:部署实施、干扰治理与防爆终端选型实战
网络·架构
楠楠子呀7 小时前
从零构建高性能 WhatsApp 链接生成器与重定向服务:架构与路由解析
redis·python·容器·架构·flink·散列表·flume