• 手把手教你优雅的编写第一个SpringMVC程序


    可能之前写的文章走进SpringMVC世界,从SpringMVC入门到SpringMVC架构中的第一个springMVC入门程序讲解的不是那么优雅、细致、精巧,因此特地写这篇稍微优雅、细致、精巧一些的文章,至于优雅、细致、精巧到什么程度呢,我觉得只要有servlet的基础应该就能懂(哈哈,好像有点夸大其词了),反正应该大概可能会适合小白(我不是大牛,我也是小白QnQ)

    首先,看一下传统至今的数据交互的常规套路,嗯,还是原来的味道,真香!
    在这里插入图片描述
    其次,要明确springMVC是充当MVC中的哪个角色,现在我要说的是第一个SpringMVC程序是以jsp ->Servlet (Springmvc)->Jsp流程写的,一眼看出,是collection层!于是从servlet入手。

    普通的servlet流程: 请求-url-pattern -交给对应的servlet去处理

    如果现在想用springmvc,而不是普通的servlet,如何告知程序?-如何让springmvc 介入程序:

    Springmvc需要配置一个 Springmvc自带的servlet

    通过以下配置,拦截所有请求,交给SpringMVC处理:

     <servlet>
      	<servlet-name>springDispatcherServlet</servlet-name>
      	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      	<init-param>
      			<param-name>contextConfigLocation</param-name>
      			<param-value>classpath:springmvc.xml</param-value>
      	</init-param>
      	<load-on-startup>1</load-on-startup>
      </servlet>
      
      <servlet-mapping>
      	<servlet-name>springDispatcherServlet</servlet-name>
      	<url-pattern>/</url-pattern>
      </servlet-mapping>
    

    详解看下图:
    在这里插入图片描述其中需要注意以下的拦截规则

    < url-pattern > .action < /url-pattern >

    /:一切请求 ,注意不是 /*
    /user: 拦截以 /user开头的请求
    /user/abc.do: 只拦截该请求
    .action: 只拦截 .action结尾的请求

    .action为例:
    在这里插入图片描述

    至于init-param的内容,通过源码发现...(不说废话了直接看图哈哈)
    在这里插入图片描述
    通过init-param属性配置指定springmvc配置文件的路径,如果要省略,必须放到 默认路径:
    /WEB-INF/springDispatcherServlet-servlet.xml
    在这里插入图片描述
    在这里,考验一下自己,有没有什么办法能知道默认路径为/WEB-INF/springDispatcherServlet-servlet.xml的,先自己想想。其实很简单,我们只要把init-param配置一删,运行Tomcat,报错,看异常,这一流程下来你就会发现异常就很明显的告诉我们默认路径了,如下图:
    在这里插入图片描述

    当然,项目中同时兼容 springMVC版的servlet和普通版的Servlet

     <servlet-mapping>
      	<servlet-name>springDispatcherServlet</servlet-name>
      	<url-pattern>.action</url-pattern>
      </servlet-mapping>
    
      <servlet>
      	<servlet-name>springDispatcherServlet</servlet-name>
      	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      	<init-param>
      			<param-name>contextConfigLocation</param-name>
      			<param-value>classpath:springmvc.xml</param-value>
      	</init-param>
      	<load-on-startup>1</load-on-startup>
      </servlet>
    

    接下来创建一个后缀名为handler的普通类,要想把一个普通类变的不普通有几种方法:接口/类 、 注解 、 配置 ,而springMVC用注解则显得时尚,所以采用了注解,特别注意@RequestMapping的用法,因为之后它会非常常见!!!
    在这里插入图片描述
    当然不要忘记给这个类组件扫描,不然springMVC是不认识它的哦,为了方便直接扫描了所在整个包
    在这里插入图片描述
    到这里,servlet就完成了,接下来是JSP了

    在这里插入图片描述
    再接下来回到springMVC.xml配置中,要再学习一个好东西那就是InternalResourceViewResolver视图解析器,首先观察源码,如下图:
    在这里插入图片描述
    在这里插入图片描述
    这个时候,你再写请求时,直接写success的时候,默认就会给你解析为如下图;
    在这里插入图片描述

    到这里,基本上就大功告成了,于是到了胆战心惊的测试程序环节了,紧张又刺激!
    在这里插入图片描述
    好了,最后一起来分析分析一下我们的第一个springMVC的入门程序的整体流程吧!
    在这里插入图片描述
    什么?要源码。。。额,好的呢
    源码已打包至网盘
    什么?没用过百度网盘?
    出门右拐————秋名山决斗在这里插入图片描述
    链接:https://pan.baidu.com/s/1JRdk1RsPN-52ddlN-b_MTw
    提取码:5d78

    到这里,恭喜各位,贺喜大家,现在的everybody完美地走上了SpringMVC的不归之路!一条从入门到入土的道路(话好像不太好听,但毕竟学习编程嘛,活到老,编程也就到老!

    如果本文对你有一点点帮助,那么请点个赞呗,谢谢~

    最后,若有不足或者不正之处,欢迎指正批评,感激不尽!如果有疑问欢迎留言,绝对第一时间回复!

    欢迎各位关注我的公众号,一起探讨技术,向往技术,追求技术,说好了来了就是盆友喔...

    在这里插入图片描述

  • 相关阅读:
    Tomcat Jboss,jetty,Apache WebLogic区别与比较(阿里面试)
    zookeeper 负载均衡 核心机制-实现原理 包含ZAB协议(滴滴,阿里面试)
    六大Web负载均衡原理与实现
    LVS(Linus Virtual Server):三种IP负载均衡方式比较+另三种Web负载均衡方式
    JTable动态刷新数据
    java当中的定时器的4种使用方式
    java如何判断编码是否是utf8编码
    Java多线程-线程的同步与锁
    java中需要用equals来判断两个字符串值是否相等
    libcurl使用easy模式阻塞卡死等问题的完美解决---超时设置
  • 原文地址:https://www.cnblogs.com/yichunguo/p/11939688.html
Copyright © 2020-2023  润新知