• SPring MVC


    Spring MVC的介绍

    Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的 Servlet进行Web开发。

     Servlet的弊端: 1、Servlet的编码问题 请求-响应(内置编码过滤器)

                   2、无法自动封装参数。(3种参数传递,类型的自动转换+封装)

                   3、doXXX方法,oper=(根据自身需要任意声明函数)

                   4、切换WEB工程的版本,Servlet配置复杂。

                      支持XML和注解 2.5 以上。

    Spring MVC的优势

    1、清晰的角色划分:前端控制器(DispatcherServlet)、请求到处理器映射(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、处理器或页面控制器(Controller)、验证器( Validator)、表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。

    2、由于命令对象就是一个POJO,无需继承框架特定API,可以使用命令对象直接作为业务对象;

    3、和Spring 其他框架无缝集成,是其它Web框架所不具备的;

    4、可适配,通过HandlerAdapter可以支持任意的类作为处理器;

    5、可定制性,HandlerMapping、ViewResolver等能够非常简单的定制;

    6、功能强大的数据验证、格式化、绑定机制;

    7、利用Spring提供的Mock对象能够非常简单的进行Web层单元测试;

    8、本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。

    9、RESTful风格的支持、简单的文件上传、约定优于配置的契约式编程支持、基于注解的零配置支持等等。

    MVC三元组的概念

    MVC (Model-View-Controller):

    • Model:组件等价于 实体层 + 业务逻辑层 + 持久层
    • View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
    • Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图。

    Spring MVC执行流程

     Spring MVC基于配置

    案例

    架包

    <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>5.1.5.RELEASE</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>5.1.5.RELEASE</version>
        </dependency>

    appliocationContext-mvc.xml文件

    <!--将Controller注入到容器当中,id就是浏览器请求地址-->
        <bean id="/firstController" class="com.springmvc.controller.FirstController"/>

    web.xml文件

     <!--中央调度器-->
      <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:appliocationContext-mvc.xml</param-value>
        </init-param>
        <!--控制初始化时机-->
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>

    创建控制器

    public class FirstController implements Controller {
        @Override
        public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
            ModelAndView mv=new ModelAndView();
            //携带给页面数据
            mv.addObject("user","张三");
            //指定跳转页面地址
            mv.setViewName("/jsp/index.jsp");
            return mv;
        }
    }

    jsp页面

    <%@page language="java" pageEncoding="UTF-8" contentType="text/html; UTF-8" isELIgnored="false" %>
    <html>
    <body>
    <h2>SpringMVC第一个案例</h2>
    <%--<img src="/images/liubin.png"/>--%>
    ${user}
    </body>
    </html>

     Spring MVC基于注解

    案例

    appliocationContex-mvc.xml

    <!--扫描注解-->
        <context:component-scan base-package="com.springmvc"/>
        <!--Spring支持SpringMVC注解-->
        <mvc:annotation-driven/>
    
        <!--视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/jsp/"/>
            <property name="suffix" value=".jsp"/>
        </bean>

    创建控制器

    @Controller
    @RequestMapping("/second")
    public class SecondController {
        @RequestMapping("/firstRequest")
        public ModelAndView firstRequest(){
            ModelAndView mv=new ModelAndView();
            //携带给页面数据
            mv.addObject("user","张三");
            //指定跳转页面地址
            mv.setViewName("index");
            return mv;
        }
        @RequestMapping("/secondRequest")
        public ModelAndView secondRequest(){
            ModelAndView mv=new ModelAndView();
            //携带给页面数据
            mv.addObject("user","李四");
            //指定跳转页面地址
            mv.setViewName("index");
            return mv;
    
        }
    }

    Spring MVC静态拦截(三种方式)

    1.

    <!--基于DefaultServlet:默认访问前会执行DeafultServlet-->
      <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.png</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.gif</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
      </servlet-mapping>

    2.

    <!--利用DefaultServlet放行资源-->
        <mvc:default-servlet-handler/>

    3.

     <!--从Spring3.4.0版本提供资源放行的方式-->
        <mvc:resources mapping="/**" location="/images/"/>
    
    
     
  • 相关阅读:
    bilibili 高并发实时弹幕系统的实现
    主流深度学习框架对比
    完整的视频直播系统
    一个简单的直播demo for java
    流媒体知识 wiki
    Entity Framework 6 暂停重试执行策略
    泛型的资源释放
    Entity Framework异步查询和保存
    Entity Framework中的连接管理
    了解Entity Framework中事务处理
  • 原文地址:https://www.cnblogs.com/Chencheno/p/11812952.html
Copyright © 2020-2023  润新知