1.SpringMVC简介

SpringMVC 是一种基于 Java 实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,它和Struts2 都属于表现层的框架,属于 Spring FrameWork 的后续产品,Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制。

SpringMVC 已经成为目前最主流的 MVC 框架之一,并且随着 Spring3.0 的发布,全面超越 Struts2,成 为最优秀的 MVC 框架,它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时它还支持 RESTful 编程风格的请求。

2.SpringMVC架构流程

1.用户发送请求至前端控制器DispatcherServlet

2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4.DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

5.执行处理器(Controller,也叫后端控制器)。

6.Controller执行完成返回ModelAndView

7.HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet 8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器

9.ViewReslover解析后返回具体View

10.DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。

11.DispatcherServlet响应用户

组件说明 以下组件通常使用框架提供实现:

DispatcherServlet:前端控制器 用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

HandlerMapping:处理器映射器 HandlerMapping负责根据用户请求url找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

Handler:处理器 Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。 由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。

HandlAdapter:处理器适配器 通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。适配器最终都可以使用usb接口连接

ViewResolver:视图解析器 View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

View:视图 springmvc框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是jsp。

一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

在springmvc的各个组件中,处理器映射器、处理器适配器、视图解析器称为springmvc的三大组件。 需要用户开发的组件有handler、view

因为框架已经默认加载这些组件了,所以我们不需要做任何配置,就可以使用这些组件了。

3.SpringMVC入门

目录结构:

3.1创建一个web工程,导入依赖,下面是我的pom.xml文件

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.qf</groupId><artifactId>springmvc-01</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>springmvc-01 Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.10</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><version>2.0</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency></dependencies></project>

3.2在webapp目录下创建login.jsp,以及在\webapp\WEB-INF\jsp目录下创建index.jsp

<%--Created by IntelliJ IDEA.User: Mriacles21Date: 2021/10/18Time: 19:03To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><center><a href="user/login"><font color="red" size="400px">登录</font></a></center>
</body>
</html>
<%--Created by IntelliJ IDEA.User: Mriacles21Date: 2021/10/18Time: 19:06To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head><title>Title</title>
</head>
<body>
<center><h2><font size="200px" color="red">主页</font></h2></center>
<hr color="blue">
<center><font size="200px" color="#deb887">欢迎:${username}光临红浪漫洗浴中心</font></center>
</body>
</html>

3.3在main目录下创建java目录,然后创建UserController

package com.qf.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;@Controller
@RequestMapping("user")//一级访问路径
public class UserController {@RequestMapping("login")//二级访问路径public ModelAndView login(){//调用service层方法,下面假设从service层取出数据String username = "张麻子";//保存数据跳转页面ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("username",username);modelAndView.setViewName("/index.jsp");return modelAndView;}
}

3.4在main目录下创建resources目录,然后创建springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- bean definitions here -->
​
​<context:component-scan base-package="com.qf"></context:component-scan>
​<!-- 相当于配置了处理器映射器以及处理器适配器 --><mvc:annotation-driven></mvc:annotation-driven>
​<!-- 视图解析器 --><bean name="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/WEB-INF/jsp"></property><!-- 后缀 -->
<!--                <property name="suffix" value=".jsp"></property>--></bean>
​
</beans>

3.5配置web.xml

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" >
​
<web-app><display-name>Archetype Created Web Application</display-name>
​<!--配置解决中文乱码的过滤器--><filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
​<!--配置前端控制器--><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
​
</web-app>

3.6 启动服务器,输入网址: http://localhost:8080/login.jsp

 点击登录,即可跳转页面

 到此,入门案例结束。

SpringMVC 第一篇(SpringMVC入门小案例)相关推荐

  1. vue 单相绑定_Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)...

    Vuejs第一篇之入门教程详解(单向绑定.双向绑定.列表渲染.响应函数) 2018-12-30 什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素 ...

  2. axios vue 回调函数_Vue 02 —— Vue 入门小案例~使用 Axios 中的GET、POST请求

    作为后端攻城狮,写前端代码是一种什么体验? 相信不少人和 @Python大星 一样,有写过前端代码的经历. 记录一下,Vue 框架开发中"啼笑皆非"的故事,非专业前端人员,该案例无 ...

  3. spring boot入门小案例

    spring boot 入门小案例搭建 (1) 在Eclipse中新建一个maven project项目,目录结构如下所示: cn.com.rxyb中存放spring boot的启动类,applica ...

  4. c语言程序设计林小茶,C语言第一篇概述林小茶

    <C语言第一篇概述林小茶>由会员分享,可在线阅读,更多相关<C语言第一篇概述林小茶(8页珍藏版)>请在人人文库网上搜索. 1.第一章,C,语言概述,1.1,程序与程序设计语言, ...

  5. Electron系列教程——第一篇:入门

    Electron系列教程--第一篇:入门 一.楔子 想要学习Electron,跟着官网或者中文网,仔细阅读,并实践,其实是够了,不必要重复.那为什么还要写这个系列呢?大概有两方面原因,其一:我使用el ...

  6. JavaWeb:shiro入门小案例

    学习原因:刚接触Javaweb的时候懂的很少(当然现在也不多),所以开发一个小项目都是自己从头写到尾,从登录界面一直到数据库,当时想以后开发要是都这么写那不是很枯燥?!-知道后来团队开发,接触的开发人 ...

  7. pytorch 指定卡1_[原创][深度][PyTorch] DDP系列第一篇:入门教程

    引言 DistributedDataParallel(DDP)是一个支持多机多卡.分布式训练的深度学习工程方法.PyTorch现已原生支持DDP,可以直接通过torch.distributed使用,超 ...

  8. Axure的一些入门小案例

    Axure RP是一款专业的快速原型设计工具.上手入门比较简单,可以帮助我们快速的搭建一个网页原型.接下来我写一些自己入门时候写的小案例. 1.简单的表单 左下角的元件库可以直接拖拽使用以上元件即可, ...

  9. vue3.0网易云音乐及入门小案例

    前言 之前学习vue3.0时做了几个小案例,近段时间又找了几个案例想着把之前做的那些和现在做的放在一起于是休息的时候就搭建了一个vue3的项目.这个项目所用的数据都是页面上写死的,音乐播放器数据是调用 ...

  10. 第一篇:python小彩蛋

    第一篇,测试.-.- C:\>python Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AM ...

最新文章

  1. 大脑“拖延症”让你直呼“眼瞎”:加工视觉信息有15秒延迟 | Science子刊
  2. SQL培训内容转之wantin6(收藏)
  3. XAML Workflow Schema
  4. ICDE:POLARDB定义云原生数据库
  5. java oql_深入理解java虚拟机(八):java内存分析工具-MAT和OQL
  6. 运用“异或”对原文加密,并解密
  7. python学习-python学习笔记(一)python简介和基础
  8. 力扣-1880(243 周赛) 检查某单词是否等于两单词之和
  9. 利用google closure管理javascript模块依赖
  10. (5) 学习笔记_numpy
  11. 六度分离 HDU - 1869 (最短路径)
  12. 51单片机lcd1602显示时间日期
  13. 云服务器流量是什么东西_云服务器带宽与流量都有什么关系?不限制流量服务器...
  14. Centos7之LVM(逻辑卷管理器)
  15. 使用aspose.words将Word转为PDF
  16. 利用R语言对RNA-Seq进行探索分析与差异表达分析
  17. jQuery表单正则校验(邮箱、手机号、身份证)
  18. JavaSE-饿了么项目实战
  19. 汉旺镇震后第九日:强忍刺鼻恶臭向废墟下搜寻
  20. 紫光同创国产FPGA学习之Fabric Inserter

热门文章

  1. java web聊天室论文_基于javaweb聊天室.doc
  2. 行人重识别实验笔记2-mmdetection代码配置(人体骨架结构分析)
  3. Java 媒体框架 之 JMF
  4. 2018年福建省计算机二级acess试题,2018年计算机二级Access试题及答案(一)
  5. windows7、windows10 桌面快捷方式左下角有一个白色方块
  6. 人教版 初步使用计算机 教案,人教版小学信息三上第5课益智游戏练技能教案与课件配套5篇...
  7. 操作系统 --- 磁盘调度算法
  8. 计算机毕业设计springboot睎晴贸易公司安保保洁管理平台
  9. 计算机文化论文5000字,大学生科技论文5000字
  10. 第14周收录104起融资,国外企业服务领域较为火爆丨潜在周报