zoukankan      html  css  js  c++  java
  • 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/"/>
    
    
     
  • 相关阅读:
    Atitit 经济学常见的流派 古典主义与凯恩斯主义
    Atitit 学习方法 体系化学习方法 Excel 科目,分类,专业 三级分类。。 知识点。。 课程就是每一个知识点的详细化。。 比如经济学 类别 专业 xx概论知识点 3、金
    atiitt it学科体系化 体系树与知识点概念大总结.xlsx
    Atitit 减少财政支出普通人如何蹭政府补贴措施 attilax大总结.docx
    Atitit 信用管理概论 attilax学习心得
    Atitit.月度计划日程表 每月流程表v5
    Atitit 企业6大职能 attilax总结
    Atitit 常见每日流程日程日常工作.docx v8 ver ampm imp 签到 am y 天气情况检查 am y 晨会,每天或者隔天 am 每日计划(项目计划,日计划等。 am
    Atitit 财政赤字解决方案
    Atitit 建设自己的财政体系 attilax总结 1.1. 收入理论 2 1.2. 收入分类 2 1.3. 2 1.4. 非货币收入 2 1.5. 2 1.6. 降低期望 2 1.7.
  • 原文地址:https://www.cnblogs.com/Chencheno/p/11812952.html
Copyright © 2011-2022 走看看