springMVC(一)springMVC的工作原理和如何搭建一个springMvc项目

一:springMVC

1.1 概念

  • 底层:servlet,springMVC的工作能实现的,servlet都能实现但是非常的臃肿和繁琐。

  • java开源框架,Spring Framework的一个独立模块。

  • ** MVC框架,在项目中开辟MVC层次架构**

  • 对控制器中的功能 包装 简化 扩展践行工厂模式,功能架构在工厂之上

1.1.1 MVC架构 概念

名称职责
Model模型:即业务模型,负责完成业务中的数据通信处理,对应项目中的 service和dao
View视图:渲染数据,生成页面。对应项目中的Jsp
Controller控制器:直接对接请求,控制MVC流程,调度模型,选择视图。对应项目中的Servlet

1.2 工作流程

https://blog.csdn.net/weixin_43189971/article/details/125555085?spm=1001.2014.3001.5502

1.3springMvc的项目搭建

1.31 带模板的Mvaen搭建

1.3.2 pom打war包

  <!--写这个的目的,是为了让 idea 识别出我这个是一个 web 工程-->
    <packaging>war</packaging>

1.3.3 改web模块

在这里插入图片描述

在这里插入图片描述

记得改位置

1.3.4 加依赖

  <!--引入 SpringMVC 的依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.20</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
        </dependency>

servlet上一代的最后一个版本是2.5,里面不支持注解。这一代的第一个版本是3.0,与tomcat 7配套。servlet 1.0当时不叫这个名字

1.3.5 WEB-INF (比spring工程多的)

1.3.5.1 概念:安全目录,其中的文件必须通过接口才能访问

1.3.5.2 配置WEB-INF下的web.xml

在这里插入图片描述

作为一个MVC框架,首先要解决的是:如何能够收到请求!

所以MVC框架大都会设计一款前端控制器,选型在 Servlet 或 Filter两者之一,在框架最前沿率先工作,接收所有请求。

此控制器在接收到请求后,还会负责springMVC的核心的调度管理,所以既是前端又是核心

 <servlet>
        <servlet-name>springmvc</servlet-name>
        <!--SpringMVC 的核心就是 DispatcherServlet-->
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--指定 Servlet 的配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-servlet.xml</param-value>
        </init-param>
    </servlet>
    <!--
    将来,所有的请求都会被 DispatcherServlet 拦截下来,然后在 DispatcherServlet 完成对 HandlerMappingHandlerAdapter 以及 ViewResolver 的调用
    -->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
  • 默认情况下,这个 servlet 的名字+‘-servlet’ 共同组成配置文件名,此时如果配置刚好还处于 WEB-INF目录下,那么就可以不哦用写配置了 :
    例如当前这个,如果此时在 WEB-INF 目录下,有一个 Spring 的配置文件,并且配置文件名还是 springmvc-servlet.xml,那么就不需要配置配置文件位置了

后端控制器,即servlet

@Controller //声明这是一个控制器
@RequestMapping("/hello")  //访问路径 ,等价于url-pattern
public class HelloController {
	@RequestMapping("/test1")  //访问路径
	public String hello1(){
		System.out.println("hello world");
		return "index"; // 跳转:/index.jsp  
	}
	@RequestMapping("/test2") //访问路径
	public String hello2(){
		System.out.println("hello c9");
		return "views/users";//  跳转:/views/user.jsp
	}
}

1.3.6 resource目录下创建spring-servlet.xml

1.2.6.1 注入bean

  <!--
    1. 先注册接口
    -->
    <bean class="com.huang.demo.MyController" id="/hello"/>
    <bean class="com.huang.demo.MyController2" id="/hello2"/>
    <!--

1.3.6.2 处理器映射器HandlerMapping(是一个接口)

HandlerMapping根据URL地址,找到对应的处理器

例如这里: http://localhost:8080/mvc01/hello -> MyController

BeanNameUrlHandlerMapping 表示根据 bean 的名字去处理请求地址,例如请求地址是

http://localhost:8080/mvc01/hello,
在这个路径中,servletPath 是 /hello,
此时,系统会自动去查找一个名为 /hello 的 bean 来处理当前请求

在这里插入图片描述

  • 其中提供了很多不同的实现类
  • 即提供了很多种找到路径的方式

大家知道什么servletPath和ContextPath吗

  • servletPath 是/hello,
    + 此时,系统会自动取查找一个名为/hello的bean来处理当前请求
  • ContextPath就是你工程的名字

在这里插入图片描述

具体配置

	    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

1.3.6.3 处理器适配器HandlerAdapter

  • 处理器映射器找到了处理器(路径),适配器找方法去执行

在这里插入图片描述

  • HandlerAdapter下面有很多实现类,我们那两个举例子
    + SinpleControllerHandlerAdapter,这个处理器适配器的作用,就是将你的处理器强转成一个Controller对象,然后调用里面的handlerRequest方法
    + 对于springMvc来说,拿到适配器之后直接调用HandlerAdapter的handle的方法。至于这个方法里面怎么实现与spingMvc无关,很像我们的充电器(电源适配器),故此命名

具体配置

   <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

1.3.6.4 配置试图解析器

 4. 配置视图解析器
    第三步,会返回一个 ModelAndView,接下来,需要解析这个 ModelAndView
    -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

13.7 Spring-servilet.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 https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--包扫描,扫描到刚刚写好的 Controller-->
    <context:component-scan base-package="com.qfedu.demo"/>
                    <!--
                    配置了这个 HandlerMapping,将来就按照 @RequestMapping 注解上的值,去查找对应的处理器
                    -->
                <!--    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>-->
                    <!--通过 @RequestMapping 注解标记的处理器,通过这个处理器适配器来执行-->
                <!--    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>-->

                    <!--
                    这个注解,一个顶两个(HandlerMappingHandlerAdapter)
                    下面这个并不是简单的代替上面两行配置,它不仅仅代替上面两行,还为上面的两个 Bean 做了很多其他相关的配置
                    -->
                    <mvc:annotation-driven/>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
* 2 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 3 * 21 * 22 * 23 * 24 * 25 * 26 * 27 * 28 * 29 * 30 * 4 * 31 * 32 * 33 * 34 * 35 * 36 * 5 * 6 * 7 * 8 * 9 * 10 直方图知识(zhī shi)培训 第一页,共36页。 回顾常规(chángguī)控制图 Section- I 第二页,共36页。 常规(chángguī)控制图回顾: 常用的常规(chángguī)控制图有哪几种? 提示(tíshì):分计量,计件,计点 三大类 第三页,共36页。 2.各种常用(chánɡ yònɡ)控制图 第四页,共36页。 直方图制作(zhìzuò) Section- II 第五页,共36页。 1. 直方图概念(gàiniàn) 直方图(Histogram)是频数直方图的简称。它是用一系列宽度相等、高度不等的长方形表示数据的图。长方形的宽度表示数据范围的间隔,长方形的高度表示在给定间隔内的数据数。 直方图的作用是: (1)显示质量波动的状态; (2)较直观地传递有关过程质量状况的信息; (3)通过(tōngguò)研究质量波动状况之后,就能掌握过程的状况,从而确定在什么地方集中力量进行质量改进工作。 第六页,共36页。 控制(kòngzhì)图 第七页,共36页。 常规(chángguī)控制图与直方图的对照 可以(kěyǐ)看成:直方图是常规控制图的点分布直观表现。 第八页,共36页。 2. 直方图制作(zhìzuò) Sample 例:老师傅用车床车制机螺丝,要求其直径为10毫米(háo mǐ)。为了了解老师傅的加工质量,抽查他加工好的机螺丝100个,测得其直径数据100个,如下表所示。 第九页,共36页。 取100个螺丝(luó sī)的数据 第十页,共36页。 Step1 步骤1:找出最大值和最小值。 从表中可见(kějiàn)最大值为10.60,最小值为9.22。 数据分散宽度=(最大值-最小值)=10.60-9.22=1.38 第十一页,共36页。 Step2 步骤2:确定(quèdìng)组数。 设n为数据个数,组数k可按下表或按经验公式:k 进行估计,这些都是经验值。其实,组数k=3,图形太粗糙,组数k=12,分组过多,直方图的直方之间已经出现缺口,故图中组数k在3-12之间最合适。本例数据个数n=100,故试取组数k=7。 第十二页,共36页。 第十三页,共36页。 以下直方图对应(duìyìng)那些常规控制图可以反映异常? 第二十五页,共36页。 (一)形状(xíngzhuàn)分析与判断: 分布虽然落在规格范围之内,但完全没有余量,一不小心就会超差。 直方图制作(zhìzuò) Sample 第三十二页,共36页。 第二十八页,共36页。 2、直方图的观察(guānchá)分析 步骤1:找出最大值和最小值。 长方形的宽度表示数据范围的间隔,长方形的高度表示在给定间隔内的数据数。 常规(chángguī)控制图回顾: 注意事项及问题(wèntí) 步骤5:确定各组的频数。 工序控制不好,实际尺寸分布过分偏离中心,造成超差或废品 回顾常规(chángguī)控制图 控制(kòngzhì)图 第十四页,共36页。 Step3 步骤(bùzhòu)3:确定组距。 本例组距:h = (最大值-最小值)/组数 = 1.38/7 = 0.197 0.2 第十五页,共36页。 Step4 步骤4:确定(quèdìng)各组的边界。 为了使得所有数据不可能落在组界上,并使最小值9.22落在第一组内,故取第一组的下限等于最小值减去最小测量单位的一半(在本例即0.01/2 = 0.005)。于是,第一组的下限 = 9.22 - 0.005 = 9.215;第一组的上限 = 第一组的下限 + 组距 = 9.215 + 0.2 = 9.415 第十六页,共36页。 Step5 步骤5:确定各组的频数。 将数据表中的各个数据按其数值大小(dàxiǎo)分配到各个组中去。从螺丝直径数据表得出频数分布表。 第十七页,共36页。 频数(pín shù)统计 其余各组依此类推(yī cǐ lèi tuī),参见下面的频数分布表。可见最大值10.60已包括在第七组内。 第十八页,共36页。 Step6 步骤6:作直方图。 根据频数分布表,在横轴上以每组对应的组距线段(xiànduàn)为底,以该组的频数为高,作出7个矩形所组成的直方图(histogram),参见下图。 第十九页,共36页。 第二十页,共36页。 直方图的观察(guānchá)与分析 Section- III (一)形状分析

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谁是黄黄

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值