zoukankan      html  css  js  c++  java
  • springMVC入门

    Spring MVC框架

    是一个遵守 MVC设计模式的框架。

    MVC, Model, View, Control 三者的简称,其中,Model指的数据层【DAO+entity】, View指的是视图【html/css/js, JSP, Thymeleaf, Velocity, FreeMarker】,Control 指的是控制层【Servlet】.

    mvc 的框架有很多,比较有名的有:

    • Struts1.x
    • Struts2.x -- 以前很流行
    • Spring MVC -- 现在很流行, 得益于SPRING框架的技术生态
    • ...

    Spring MVC是一款非常优秀的MVC框架,它提供如下功能:

    • 有一个非常强大的前置控制器,本质上是一个 Servlet
    • 有强大的配置能力,包含请求到控制器的映射
    • 提供了很多辅助性的功能,比如:
      • 模型和视图 的封装
      • Bean Validation
      • 文件上传和下载
      • 对json的支持
      • 自动封装请求参数,并转换成你想的任何对象,直接以参数传递进来。
      • 提供编码过滤器

    Spring MVC框架的搭建

    1. 准备一个基于maven的web项目结构
    2. 加入SpringMVC 相关的依赖【spring-webmvc】
    3. web.xml 中添加 SpringMVC的配置
    4. 如果采用注解配置的话,需要添加一个 WebMvcConfig.java
    5. 添加控制器,写一个JAVA类,打上 @Controller 注解,并且在方法上面添加 @RequestMapping
    6. 默认情况下,控制器方法的返回值被会SPRING MVC解析成 jsp 的名字,如果添加了 @ResponseBody的话,则SPRING MVC框架会把方法的返回值当做响应体的内容,响应给客户端。

    Spring MVC 的前置控制器 [DispatcherServlet]

    这个前置控制器,我们叫做大C,而我们自己开发的控制器叫小 C。

    这个类中所做的事情况非常复杂,后面随着学习的深入再来慢慢理解。

    大C 的匹配模式

    1. 扩展名匹配

      web.xml中 的, 使用 *.xxx 做为匹配的规则,它的优点是 静态资源不会被大C拦截,缺点是不支持·RESTFUL 的URL风格

    2. 通配

      web.xml中 的, 使用 / 做为匹配的规则,它的优点是完全支持 RESTFUL 的URL风格,缺点是会拦截一些静态的资源。所以,我们要把这些静态资源注册到静态资源的处理器中。

      注:

      默认情况,所有的.jsp 文件是不会被 大C拦截的。

    添加静态资源的处理器

    1.容器层面的处理方式

    通过容器自带的默认Servlet,来处理这些静态资源,如下:

    <!-- 由容器提供的一个默认Servlet,请求过来后,先经过这个Servlet
         注:不同的容器,这个默认的名字是不一样的。
      -->
     <servlet-mapping>
         <servlet-name>default</servlet-name>
         <url-pattern>*.css</url-pattern>
     </servlet-mapping>
     <servlet-mapping>
         <servlet-name>default</servlet-name>
         <url-pattern>*.html</url-pattern>
     </servlet-mapping>
    

    2. Spring MVC框架的处理方式

    • 2.1 通过XML的配置来解决

      <mvc:default-servlet-handler/>
      
    • 2.2 通过XML的配置来解决,但不是利用 容器自带的默认Servlet来处理,而是基于spring mvc提供的功能。

      <!-- 以下的配置是基于SpringMVC内置的静态资源处理器
              mapping是映射的请求uri
              location是静态资源真正的位置
           -->
          <mvc:resources mapping="/css/**" location="/css/"/>
          <mvc:resources mapping="/images/**" location="/images/"/>
          <mvc:resources mapping="/js/**" location="/js/"/>
      
      <!-- 当然,我们可以把这些静态资源放在一个叫 static 的目录下,然后,只需要映射这一个目录即可 -->
      
    • 2.3 在配置中,重写父类的addResourceHandlers方法,并指定静态资源请求和映射位置,如下:

      @Configuration  //这是一个配置类
      @ComponentScan({"com.hcedu.springmvc.controller"})  //指定扫描的包及其子包
      @EnableWebMvc //启动WEB MVC 功能 (和 AOP, DT 一样,默认都是禁用的)
      public class WebMvcConfig extends WebMvcConfigurerAdapter { //继承WebMvc配置适配器类
      
          @Override
          public void addResourceHandlers(ResourceHandlerRegistry registry) {
              //添加静态资源的映射
              registry.addResourceHandler("/static/**")
                                      .addResourceLocations("/static/");
          }
      }
      
  • 相关阅读:
    前端常用设计模式和工作中应用场景思考
    webpack从零开始打造react项目(更新中...)
    操作系统-进程
    go语言web框架-如何使用gin教程+react实现web项目
    JavaScript逗号运算符的用法
    react的生命周期和使用
    在Vue项目中使用wangEditor
    TypeScript实现axios
    SpringBoot整合邮件发送(thymeleaf和freemarker)
    SpringBoot整合RabbitMQ
  • 原文地址:https://www.cnblogs.com/guoyinghome/p/11225247.html
Copyright © 2011-2022 走看看