JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

SpringMVC(springmvc怎么读)

wys521 2025-05-02 14:04:20 精选教程 9 ℃ 0 评论

Spring MVC(ModelViewController模型视图控制器)全称Spring Web MVC,是Spring Framework提供的Web组件,提供前端路由映射、视图解析等功能。

核心组件:

  1. DispatcherServlet:前端控制器,负责调度其他模块执行,核心模块
  2. Handler:处理器,完成具体的业务逻辑,相当于Servlet
  3. HandlerMapping:处理器映射器,DispatcherServlet通过HandlerMapping找到具体的Handler
  4. HandlerInterceptor:处理器拦截器,是一个接口,需要拦截处理时可实现该接口
  5. HandlerExecutionChain:处理器执行链,包含两部分:Handler和HandlerInterceptor
  6. HandlerAdapter:处理器适配器,Handler执行前,需要进行的验证,包括表单数据验证、数据类型转换、表单数据封装到POJO
  7. ModelAndView:封装了数据模型和视图信息
  8. ViewResolver:视图解析器,DispatcherServlet通过ViewResolver把逻辑视图解析为物理视图,最终把渲染的结果响应给客户端

工作流程:

  1. 首先客户端发送请求
  2. 前端控制器收到请求后并通过处理器映射器找到对应的处理器,处理器和处理器拦截器以处理器执行链的形式返回给前端控制器
  3. 前端控制器通过处理器适配器,调用处理器执行业务逻辑,并返回数据模型和视图信息
  4. 前端控制器把获取的数据和视图信息通过视图解析器,解析渲染视图并返回
  5. 前端控制器把渲染后的视图返给客户端

画了一个简单流程图,以供学习参考

开发流程:

  • 创建一个Maven工程、并引入MVC依赖
<dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-webmvc</artifactId>
       <version>5.3.19</version>
</dependency>
  • 在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>
 <!-- 配置核心控制器 -->
	<servlet>
		<servlet-name>dispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- springmvc配置文件加载路径
		     1)默认情况下,读取WEB-INF下面的文件
		     2)可以改为加载类路径下(resources目录),加上classpath:
		 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
		<!--
		   DispatcherServlet对象创建时间问题
		      1)默认情况下,第一次访问该Servlet的创建对象,意味着在这个时间才去加载springMVC.xml
		      2)可以改变为在项目启动时候就创建该Servlet,提高用户访问体验。
		          <load-on-startup>1</load-on-startup>
		                数值越大,对象创建优先级越低! (数值越低,越先创建)
		-->
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>dispatcherServlet</servlet-name>
		 <!--/ 匹配所有的请求;(不包括.jsp)-->
   <!--/* 匹配所有的请求;(包括.jsp)-->
    <!--*.do拦截以do结尾的请求-->
		<url-pattern>/</url-pattern>
	</servlet-mapping>
</web-app>
  • 创建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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 配置自动扫包 -->
    <context:component-scan base-package="com.zyh.controller"></context:component-scan>
    <!-- 视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--给逻辑视图加上前缀和后缀 -->
        <!--前缀-->
        <property name="prefix" value="/"></property>
        <!--后缀-->
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>
  • 创建index.jsp页面
  • 创建Controller
@Controller
public class HelloHandler {
    /**
     * 当客户端访问index请求时
     * 直接自动关联到这个方法
     * 执行这个方法后,会返回结果
     * @return
     */
    @RequestMapping("/index")
    public String index(){
        System.out.println("接收到了请求");
        //返回逻辑视图 逻辑视图相当于视图的别名 通过这个找到物理视图,也就是真正的视图
        //这里返回的只是页面的名称,不是完整的页面访问路径
        return "index";
    }
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表