SpringMVC学习(一)

1.SpringMVC

1.1 MVC模式

在这里插入图片描述

Controller:应用程序中用户交互部分(Servlet)

Model:应用程序数据逻辑部分(JavaBeans)

View:数据显示部分(JSP)

优点:职责清晰,较适合于大型项目架构          

缺点:分层较多,不适合小型项目开发
1.2 什么是SpringMVC?其作用是什么?
SpringMVC是一种Web层mvc框架,用于替代servlet,主要用于处理和响应请求,获取表单参数,表单校验等
SpringMVC框架的作用就是用来简化编程的,相对于servlet来说,获取表单参数,响应请求等变得更简单了。

特点:

(1)结构松散,几乎可以在 Spring MVC 中使用各类视图
(2)松耦合,各个模块分离
(3)与 Spring 无缝集成
1.3 SpringMVC的运行原理

在这里插入图片描述

SpringMVC运行原理

Spring MVC 的入口函数也就是前端控制器 DispatcherServlet ,其作用是接收请求,响应结果。

(1)客户端(浏览器)发送请求url,直接请求到 DispatcherServlet。

(2)DispatcherServlet 根据请求信息调用 HandlerMapping,解析请求对应的 Handler,执行HandlerExcutor去返回一个执行链。

(3)解析到对应的 Handler(也就是我们平常说的 Controller 控制器)后,开始由 HandlerAdapter 适配器处理。

(4)HandlerAdapter 会根据 Handler来调用真正的处理器处理请求,并处理相应的业务逻辑。

(5)处理器处理完业务后,会返回一个 ModelAndView 对象,Model 是返回的数据对象,View 是个逻辑上的 View。

(6)ViewResolver 会根据逻辑 View 查找实际的 View。

(7)DispaterServlet 把返回的 Model 传给 View(视图渲染)。

(8)把 View 返回给请求者(浏览器)
1.4 Hello-SpringMVC(入门)

1.首先创建maven项目,添加web支持
在这里插入图片描述
2.修改web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!--1.配置注册DispatcherServlet:SpringMVC的核心,请求分发器,前端控制器-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--DispatcherServlet要绑定的spring配置-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>

        <!--启动级别-->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--
    在spring中,/  和 /*  :
    / :表示只匹配所有的请求,不会去匹配jsp页面.由Spring MVC的后台控制器来处理

    /* :匹配所有的请求,匹配jsp页面
    -->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

3.编写springmvc-servlet.xml文件,对应于DispatcherServlet要绑定的spring配置。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--处理器映射器-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

    <!--处理器适配器-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    <!--视图解析器-->
    <bean id="InternalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

4.编写HelloController

package com.chen.controller;

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

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

//实现了Controller 接口的类表示控制器
public class HelloController implements Controller {

    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
   // SpringMVC通过 ModelAndView 对象把模型和视图结合在一起
        ModelAndView modelAndView=new ModelAndView();

        //业务代码
        modelAndView.addObject("msg","HelloSpringMVC");

        //视图跳转
        modelAndView.setViewName("hello"); //   /WEB-INF/jsp/hello.jsp
        return modelAndView;
    }
}

5.在springmvc-servlet.xml文件中配置handler

    <!--handler:用于处理器映射器进行映射  class用于处理器适配器进行处理 -->
    <bean id="/hellohello" class="com.chen.controller.HelloController"/>

6.写jsp页面 hello.jsp

<%--
  Created by IntelliJ IDEA.
  User: clc
  Date: 2020/5/8
  Time: 13:04
  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>
        ${msg}
</body>
</html>

7.启动服务器,进行测试
在这里插入图片描述

此处的地址为:handler中对应的id---》http://localhost:8080/hellohello

SpringMVC请求跟踪 的具体实现细节

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值