当实习后回顾一下springmvc的原理

SpringMVC复习

        其实SpringMVC就是采用model2的设计模式,但是mvc不是一种设计模式,是一种架构模式。
        MVC简单分为模型Model,View视图,Controller控制器
        Model又可以分为业务层和服务层。
        View 视图,负责展示模型,常用于jsp, 现在的话比较少用。
        Controller 控制器,接收用户请求并适配给对应的方法来处理数据,最后返回给视图。

        DispatcherServlet 前端控制器,负责请求的分发,它本质也是个Servlet
        1、文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;

        2、通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个HandlerInterceptor拦截器);

        3、通过HandlerAdapter支持多种类型的处理器(HandlerExecutionChain中的处理器);

        4、通过ViewResolver解析逻辑视图名到具体视图实现;

        5、本地化解析;

        6、渲染具体的视图等;

        7、如果执行过程中遇到异常将交给HandlerExceptionResolver来解析。

SpringMVC执行过程

在这里插入图片描述

        DispatcherServlet调用HandlerMapping(处理器映射器),然后HandlerMapping根据请求url去查找Handler。

         HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,然后将解析后的信息返回给DispatcherServlet。

        DispatcherServlet再通过调用HandlerAdapter处理器适配器,通过DispatcherServlet传过来的信息去调用具体的Controller去执行,然后将执行的结果,如ModelAndView等返回给HandlerAdapter,HandlerAdapter再将返回的视图逻辑名或者模型返回给DispatcherServlet。

         DispatcherServlet再去调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名,最后返回视图。
        DispatcherServlet再往视图内放入model(数据),再返回,最后展示给用户。

最开始的时候确实看得云里雾里,但现在回头去看,海阔天空。

这是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">
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <!--    这个是绑定文件,初始化上下文-->
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <!--        启动级别 系统启动时就启用-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--        /表示只匹配请求,不匹配jsp界面
                    /*表示匹配请求,还包括匹配jsp界面-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

配置了DispatcherServlet

spring-mvc.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://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 class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
        <!--        前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--        后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

    <bean id="/hello" class="com.skity666.HelloController"/>
</beans>

maven项目的pom依赖

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>

最后贴上视频教程链接
https://www.bilibili.com/video/BV1aE41167Tu?p=1

当然不是我讲的 ^ - ^

9-23
今天学会了@Controller注解以及配置IOC自动注入

在这里插入图片描述
省略了装配处理器映射器和处理器适配器,
只添加了三行代码
具体作用
在这里插入图片描述
当然我们使用了注解以及IOC自动注入,那上面的配置也得改

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

在这里插入图片描述
在这里插入图片描述
简简单单的小demo,你学会了吗 ^ - ^

2020-09-24

今天学习了一下restful风格思想

restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束
条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,
更有层次,更易于实现缓存等机制。

REST,即Representational State Transfer的缩写。直接翻译的意思是"表现层状态转化"。

它是一种互联网应用程序的API设计理念:URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。

简单来说,就是每一个url都代表着一种资源,
restful是客户端和服务器中的中间层,

像百度百科
这代表着查询
https://baike.baidu.com/item/果子
这代表着添加
https://baike.baidu.com/item
这代表着更新
https://baike.baidu.com/item/果子
这代表着删除
https://baike.baidu.com/item/果子

这就是restful风格的魅力
是不是很cool

2020-09-27
当我们在springmvc的框架下
在这里插入图片描述
遇到了中文乱码
在这里插入图片描述
Content-Type:text/html; charset=ISO8859-1

其实它只要在ReRequestMapping方法加个produces = “application/json;charset=utf-8”,就能满足,但我不拘于此,我就是想要全局的。还有就是过滤器配置了,但是对@RequestBody注解是没有用的。
试了很多办法,最后成功了
在这里插入图片描述

<mvc:annotation-driven>
        <mvc:message-converters register-defaults="false">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes" value="application/json;charset=utf-8"></property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

添加mvc:annotation-driven,记得register-defaults要写为false,即启动时注册以supportedMediaTypes支持的编码规则添加到HttpMessageConverter组件内,而默认true,即springMVC启动时自动注册HttpMessageConverter,编码规则是ISO-8859-1。

如果没有加那个属性,他还是默认编码是ISO-8859-1;

你学会了吗?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值