[springmvc]springmvc的实现流程原理,以及快速创建一个三层架构项目

1.回顾mvc

模型

  • 模型(dao,service):业务逻辑,保存数据的状态

视图

  • 视图(jsp,html……):展示页面

控制器

  • 控制(servlet):取得表单数据,调用业务逻辑,转向指定的页面

2.认识springMvc

  • 轻量级,简单易学
  • 高效,基于请求响应
  • 与spring可以无缝结合
  • 约定优于配置
  • 功能强大:restful风格,数据验证,格式化,本地化
  • 简洁灵活

[springmvc]springmvc的实现流程原理,以及快速创建一个三层架构项目

在以前的学习中,我们总是根据不同的需求请求不同的servlet,那么对于用户来说,这一步骤就非常麻烦,要不断的转换请求,为了解决这一问题,在原有的架构基础上面加上一层,专门用来处理这些请求,用户只需要请求 上面的一层即可。它就是DispatcherServlet

实际上这个DispatcherServlet它本身也是一个servlet。

实现原理:

[springmvc]springmvc的实现流程原理,以及快速创建一个三层架构项目

[springmvc]springmvc的实现流程原理,以及快速创建一个三层架构项目

快速搭建一个springmvc项目

方式一 实现类

(1)配置web文件


        springmvc
        org.springframework.web.servlet.DispatcherServlet

            contextConfigLocation
            classpath:springmvc-servlet.xml

        1

        springmvc
        /

(2)配置spring核心文件


(3)调用控制器层跳转

package com.spring.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author panglili
 * @create 2022-07-25-12:01
 */
public class HelloController implements Controller {
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        ModelAndView view = new ModelAndView();

        //业务代码
        String result="HelloSpringMvc";
        view.addObject("msg",result);
        //视图跳转
        view.setViewName("WEB-INF/jsp/test.jsp");

        return view;

    }
}

(4)视图层接受数据传给用户


    Title

${msg}

[springmvc]springmvc的实现流程原理,以及快速创建一个三层架构项目

方式二 注解实现

(1)配置web文件

  • 跟上面实现类的相同

(2)配置spring文件


(3)控制器类实现界面跳转

package com.spring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author panglili
 * @create 2022-07-25-13:15
 */
@Controller
public class hello {

    @RequestMapping("/hello")
    public String hello(Model md){
        md.addAttribute("msg","helloooo");
        return "hello";
    }
}

(4)视图跳转

  • 同实现类相同

Original: https://www.cnblogs.com/lumanmanqixiuyuanxi/p/16544514.html
Author: 路漫漫qixiuyuanxi
Title: [springmvc]springmvc的实现流程原理,以及快速创建一个三层架构项目

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/619547/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • HTTP Study

    定义:在两点之间传输文本,视频,图片等超文本数据的协议和规范 HTTP风险 通信使用明文,https通过信息加密(混合加密)解决 无法验证报文的完整性,https通过校验机制(摘要…

    数据库 2023年6月16日
    097
  • 自己编写平滑加权轮询算法,实现反向代理集群服务的平滑分配

    学会了负载均衡算法,却没有用起来? 今天就来 实战一遍,感受下平滑加权轮询算法的魅力。 通过Java语言,自己编写的平滑加权轮询算法,结合线程池和Socket 网络编程等,实现了反…

    数据库 2023年6月6日
    0308
  • jQuery学习笔记

    jQuery 是一个 JavaScript 库; jQuery 极大地简化了 JavaScript 编程; jQuery 很容易学习; 一. 什么 jQuery? jQuery 是…

    数据库 2023年6月11日
    0109
  • 设计模式六大原则(简单总结)

    一、单一职责原则 通俗来说即一个类只负责一项职责(实现类要职责单一),可以降低类的复杂度,提高系统的可读性、可维护性,降低类修改时对其他功能的影响 二、里氏替换原则 即子类继承父类…

    数据库 2023年6月6日
    088
  • MySQL 数据库自动备份

    压缩文件恢复 gzip -d backup.sql.gz | mysql -h -u -p Tips: gzip -d为解压, 下面介绍下gzip用法与参数介绍(gzip命令只是压…

    数据库 2023年5月24日
    094
  • DM变更表空间存放路径

    1、变更前置条件 (1)、数据库服务器提供dmdba用户权限 (2)、目标路径有足够的空间可以使用 (3)、数据库可以重启 2、变更实施过程 2.1、变更前备份变更表空间目录需要对…

    数据库 2023年6月11日
    0193
  • 【数据库】– MySQL SQL调优笔记(2)

    1.常规索引优化方式 1.1.单表优化 查询category_id为1且comments大于1的情况下,views最多的article id SELECT id, author_i…

    数据库 2023年5月24日
    0118
  • 设计模式遵循的设计原则

    一、什么是设计原则? 答:如果说设计模式是编写代码的一种套路,那么设计原则就是用来约束我们使用这种套路应该要遵循的规则,只有遵循了这些规则的设计模式编写出来的应用程序才具有更好的扩…

    数据库 2023年6月14日
    0102
  • 开源二三事|ShardingSphere 与 Database Mesh 之间不得不说的那些事

    背景 前段时间,以 Apache ShardingSphere 核心团队组建的创业公司 SphereEx,正式对外推出了 Database Mesh 2.0 概念以及与之相配套的开…

    数据库 2023年6月16日
    0158
  • Struts 2 学习笔记

    Struts2 是一个基于 MVC 设计模式的 Web 应用框架,它本质上相当于一个 servlet,在 MVC 设计模式中,Struts2 作为控制器(Controller)来建…

    数据库 2023年6月11日
    0118
  • Rabbitmq从安装到简单入门

    1:Rabbitmq是什么? RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。 它由以高性能、健壮以及可伸缩性出名的 Erlang …

    数据库 2023年6月6日
    098
  • Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000081c00000, 134217728, 0) failed; error

    Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory 编译程序时代码没错,结果报错,原因是内存满了,…

    数据库 2023年6月16日
    0124
  • ZooKeeper集群部署

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月16日
    0130
  • mydumper备份mysql8.0 sql thread被kill掉

    这个问题是好久以前的问题了,今天看自己的笔记,发现了这个问题,当时没有进行细看,想着现在复现一下。 1、半夜收到测试数据库备份告警: 报警内容就是8002端口,备份失败,因为有慢查…

    数据库 2023年6月16日
    0116
  • 学习笔记——Django项目中的结果集、分页

    2022-10-01 结果集的含义: 结果集就是在查询过程中,返回的一个列表的集合。 常见的结果集在一些函数中查询会返回,具体包括的函数有: filter、exclude、orde…

    数据库 2023年6月14日
    085
  • Dubbo源码(一)-SPI使用

    Dubbo 的可扩展性是基于 SPI 去实现的,而且Dubbo所有的组件都是通过 SPI 机制加载。 SPI 全称为 (Service Provider Interface) ,是…

    数据库 2023年6月11日
    0124
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球