论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
物联网
›
物联网
›
【SpringMVC】详细介绍SpringMVC的执行流程
【SpringMVC】详细介绍SpringMVC的执行流程
种地
论坛元老
|
2024-8-7 08:12:45
|
显示全部楼层
|
阅读模式
楼主
主题
1097
|
帖子
1097
|
积分
3291
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
目录
1. 概念
2.SpringMVC工作原理
3. springMVC的简朴使用
1.在pom.xml中导入相关依赖
2.在web.xml中配置dispatcherServlet
3.创建springMVC.xml核心配置文件
1. 概念
什么是MVC?
MVC是下面三个组件的简写,模型(Model)、视图(View)和控制器(Controller)。
模型(Model): 表示应用程序中的数据和业务逻辑。在Spring MVC中,通常使用POJO作为模型对象。通常模型对象负责在数据库中存取数据。
视图(View): 负责展示用户界面,通常是HTML页面、JSON相应或其他范例的视觉呈现。视图负责将模型数据渲染,并向用户呈现。
控制器(Controller): 接收并处理HTTP请求,并根据请求的内容选择相应的处理方法。控制器负责调理适当的业务逻辑,操作模型数据,并通过相应的视图返回相应结果。
注:MVC是一种思想,而Spring MVC是在MVC模式的底子上实现的一种Web框架,即SpringMVC是一种具体实现。它使用了MVC的上风并添加了更多的功能和便利性,使得开发者可以更轻松地构建和维护当代化的Web应用程序。
2.SpringMVC工作原理
如上图2所示,执行步调如下:
用户通过浏览器或其他客户端向服务器发送 HTTP 请求。
当请求到达服务器时,容器(如 Tomcat)将请求通报给 前端控制器 ( DispatcherServlet ),DispatcherServlet 是 Spring MVC 的核心组件,它负责接收 HTTP 请求,并且作为请求处理的入口点。然后读取配置文件来初始化 WebApplicationContext,它又是 Spring 应用上下文的一个子接口,它包含全部 Bean 的定义和配置信息。
前端控制器 ( DispatcherServlet ) 收到请求调用处理器映射器 (HandlerMapping),通过 URL 或其他规则来决定应该调用哪个控制器。而处理器映射器(HandlerMapping)找到具体的处理器(可以根据 xml 配置、注解举行查找),天生处理器对象及处理器拦截器(如果有则天生)一并返回给 DispatcherServlet。
前端控制器(DispatcherServlet) 查找能够处理选定控制器的 HandlerAdapter。HandlerAdapter 负责调用控制器中的具体方法。
处理器适配器(HandlerAdapter)去调用自定义的处理器类(Controller)。
自定义的处理器类(Controller)将得到的参数举行处理并返回结果给处理器适配器(HandlerAdapter)。
处理器适配器 ( HandlerAdapter )将得到的结果返回给前端控制器 (DispatcherServlet)。
前端控制器(DispatcherServlet )将 ModelAndView 传给视图分析器 (ViewReslover)。
视图分析器(ViewReslover)将得到的参数从逻辑视图转换为物理视图并返回给前端控制器(DispatcherServlet)。
前端控制器(DispatcherServlet)调用物理视图举行渲染并返回。
前端控制器(DispatcherServlet)将渲染后的结果返回。
3. springMVC的简朴使用
开发流程
maven创建web工程(略)
引入依赖Spring+SpringMVC+JSTL+Servlet底子包
在web.xml中配置dispatcherServlet
创建SpringMVC核心配置文件
开发controller
创建测试index.jsp页面
1.在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>org.example</groupId>
<artifactId>02-SpringMVC</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!--配置依赖-->
<dependencies>
<!--配置Spring相关依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.26</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.3.26</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.26</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.26</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.3.26</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.26</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.26</version>
</dependency>
<!--配置Mybatis相关依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.16</version>
</dependency>
<!--配置MyBatis和Spring的整合依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!--配置jdbc-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
<!-- 工具类 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<!--表示该jar只在代码的编程和编译阶段有效,在部署的时候自动剔除!-->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
</dependency>
<!--配置web相关依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/taglibs/standard -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<!-- springmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.26</version>
</dependency>
</dependencies>
</project>
复制代码
2.在web.xml中配置dispatcherServlet
<!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>
<!--配置Spring相关:如果没有service和mapper层代码可以先不配置-->
<!--配置DispatcherServlet相关-->
<!--配置编码过滤器-->
<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>mvc</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>
<!-- tomcat启动的时候立即加载servlet-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>/</url-pattern><!--斜杠表示拦截除Jsp以外的所有请求,/*表示拦截所有请求-->
</servlet-mapping>
</web-app>
复制代码
3.创建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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--配置注解扫描:扫描bean对象-->
<context:component-scan base-package="com.wollo.controller"></context:component-scan>
<!--配置注解解析器:初始化一些其他的相关bean-->
<mvc:annotation-driven></mvc:annotation-driven>
<!--配置视图解析器-->
<bean id="resourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/myPage/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!--配置静态资源放行-->
<mvc:resources mapping="/static/**" location="/static/"></mvc:resources>
</beans>
复制代码
4.开发controller层代码
package com.wollo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class MyController4 {
@RequestMapping("/add")
public String add(){
System.out.println("我只是一个普通的单元方法");
return "add";
}
}
复制代码
5.jsp页面代码如下
<%--
Created by IntelliJ IDEA.
User: 22529
Date: 2024/8/6
Time: 11:06
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
我是add页面
</body>
</html>
复制代码
6.最后启动tomcat,在地址栏中输入http://8080/add可以看到页面如下
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
种地
论坛元老
这个人很懒什么都没写!
楼主热帖
Beta 阶段事后分析
mac下配置Charles,安装证书,连接iOS ...
为什么 SQL 语句使用了索引,但却还是 ...
图的基本术语,邻接矩阵、邻接表表示方 ...
python经典习题(一)
DOS窗口命令和单表简单查询
Archlinux scarlett solo driver insta ...
5.返回值IDCANCEL和CommDlgExtendedErr ...
利用kubernetes中的leader选举机制来完 ...
MySQL实战45讲 10
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
QMS
Mysql
程序人生
虚拟化与私有云
快速回复
返回顶部
返回列表