1、B\S架构通信原理

浏览器,服务器之间产生通信,浏览器访问服务器,服务器返回一个HTML,浏览器会对HTML进行解析,并渲染相关的内容。

在解析过程中,会发现HTML里引用了css文件,js文件,图片文件等等,HTML是依赖于多个文件的。每发现一个文件,就会再向服务器发送一次请求,服务器就会返回一个它所需要的依赖的文件。通常关注第一个请求,一般如果返回的HTML网页没有问题,其他基本问题不大。

2、MVC三层架构

服务端代码通常分为三层,称为三层架构:表现层,业务层,数据访问层。

对于一个web项目,其实不分层也可以写。但是写在一个类中,这个类做的事太多太杂,耦合度过高,当代码规模变大后,会变得不好维护甚至不可控。分层的目的是解耦,让代码更有利于维护。

MVC:一种设计模式,理念是将复杂代码分为三个层次,三者作为一个集体来解决表现层的问题。其中:

  • C:Controller层,用来处理浏览器的请求,负责调度
  • V:View层,只负责渲染,和展示
  • M:Model,二者联系的纽带



    关于三者如何协作?
  • 浏览器发送请求访问服务器
  • Controller接受请求中的数据,调用Service业务层去处理,之后将得到的数据封装到Model。
  • View层利用Model层数据,生成一个HTML返回给浏览器
  • 浏览器最终从View视图层得到一个HTML

3、DispatcherServlet

前端控制器:DispatcherServlet

SpringMVC核心组件,其实也是一个类,可用于调度Controller和View



servlet引擎,例如tomcat,上图这些程序都是位于tomcat之内运行

  • Thymeleaf模板引擎所需的模板位于 resources/templates
  • Controller控制层和View视图层代码分别位于Controller和templates文件夹下
  • Model对象会被框架自动实例化,主要是用来存放模型数据的,不需要我们管。

4、SpringMVC功能测试

在SpringMVC下获得请求/响应对象



此做法能对底层对象有更直观了解

封装后有更简便的请求方式

更简便的做法:将浏览器的请求分成两个方面处理。

  • 要请求的数据,基于request
  • 要相应的数据,基于response

1)如何请求数据

使用GET方法:



或者



总结:使用GET方法向服务器请求数据时,有两种传参方式,一种是?拼参数,一种是把参数拼到路径当中,两种方式获取参数方式有所不同,用不同的注解。

使用POST方法

2)如何响应数据

响应json数据

5、MyBatis功能测试

  • 核心组件

    • SqISessionFactory:用于创建SqlSession的工厂 类。
    • SqlSession: MyBatis的核心组件,用于向数据库执行SQL。类似于JDBC里的Connection
    • 主配置文件: XML配置文件,可以对MyBatis的底层行为做出详细的配置。
    • Mapper接口:就是DAO接口,在MyBatis中习惯性的称之为Mapper。
    • Mapper映射器:用于编写SQL,并将SQL和实体类映射的组件,采用XML、注解均可实现。

使用MyBatis访问数据库,只需要写出接口,不需要写出实现类,其底层会自动帮我们实现这个接口,前提是要告诉它每个crud方法所依赖的SQL。

这些SQL写在Mapper映射器中,并且体现了SQL与实体类之间的映射关系。

数据库连接池也叫数据源,统一的初始化一批连接,能够复用,效率高;能管理连接上限,可以避免数据库连接人数过多而瘫痪。

示例:对讨论帖进行查询

Mapper接口中定义查询接口:

在对应的mapper映射器(xml文件)中写出对应的sql标签:

Java社区——个人项目开发笔记(二)的更多相关文章

  1. Java社区——个人项目开发笔记(一)

    1.maven安装与测试 安装过程略,常用的maven命令行工具: mvn --version 查看maven版本 mvn compile 编译maven工程 mvn clean 删除编译文件 mvn ...

  2. [Openwrt 项目开发笔记]:Openwrt必要设置(二)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 前面的两篇blog中,我将如何搭建Openwrt ...

  3. [Openwrt 项目开发笔记]:Openwrt平台搭建(一)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 最近开始着手进行Openwrt平台的物联网网关设 ...

  4. [openwrt 项目开发笔记]: 传送门

    “Openwrt 项目开发笔记”系列传送门: [Openwrt 项目开发笔记]:Openwrt平台搭建(一) (2014-07-11 00:11) [Openwrt 项目开发笔记]:Openwrt平台 ...

  5. [Openwrt 项目开发笔记]:PHP+Nginx安装(七)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我们已经搭建了MySQL数据库了,因 ...

  6. [Openwrt 项目开发笔记]:MySQL配置(六)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在本人的项目中,运行在路由器上的服务器采用Ngi ...

  7. [Openwrt 项目开发笔记]:DDNS设置(五)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我主要讲述了如何在Openwrt上安 ...

  8. [Openwrt 项目开发笔记]:Samba服务&vsFTP服务(四)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我们讲述了如何在路由器上挂载U盘,以 ...

  9. [Openwrt 项目开发笔记]:USB挂载& U盘启动(三)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一篇中,我结合Netgear Wndr370 ...

随机推荐

  1. 经典论文系列 | 目标检测--CornerNet & 又名 anchor boxes的缺陷

    ​ 前言: 目标检测的预测框经过了滑动窗口.selective search.RPN.anchor based等一系列生成方法的发展,到18年开始,开始流行anchor free系列,CornerNe ...

  2. ESP-ADF相关学习笔记

    1.makefile:定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作 ...

  3. Java刷题常用API

    目录 输入输出 快速查看 最大最小值 string stringbuilder 集合 map queue stack set 优先队列 PriorityQueue (Heap) 数组 静态数组 动态数 ...

  4. 禅道项目管理软件-Linux上一键安装

    一.安装 1.将安装包直接解压到/opt目录下 特别说明:不要解压到别的目录再拷贝到/opt/,因为这样会导致文件的所有者和读写权限改变,也不要解压后把整个目录777权限. 可以使用命令: tar - ...

  5. ES 基础知识点总结

    为什么使用 ES? 在传统的数据库中,如果使用某列记录某件商品的标题或简介.在检索时要想使用关键词来查询某个记录,那么是很困难的,假设搜索关键词 "小米",那么 sql 语句就是 ...

  6. GDB常用命令整理

    (gdb) break xxx (gdb) b xxx 在源代码指定的某一行设置断点,其中 xxx 用于指定具体打断点的位置. (gdb) run (gdb) r 执行被调试的程序,其会自动在第一个断 ...

  7. 转载:使用jquery刷新当前页面以及其他js知识积累

    转载:https://www.cnblogs.com/heguihui/p/10505949.html 如何使用jquery刷新当前页面 下面介绍全页面刷新方法:有时候可能会用到 window.loc ...

  8. python -- 程序异常与调试(异常处理)

    一.异常处理 针对在运行时可能会出错的语句块,可以提前设计好出现问题后的解决方案, 或者给出相应的提示信息.使用try-except语句来处理Python抛出的异常: # -------------- ...

  9. 解决 Github 打不开或打开很慢的问题

    解决 Github 打不开或打开很慢的问题 方法一 一.确定 github 网站的 ip 打开网址:http://github.com.ipaddress.com/ 192.30.253.112 gi ...

  10. python3中文件/IO编程

    python3的文件操作可谓是我见过所有语言中最舒服的,那我们来一起看一下py3中的文件操作. 1:文件的打开方式有以下几种: 注:以上图表参考菜鸟教程 2:定位读写文件  f = open(&quo ...