手把手教你优雅的编写第一个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的不归之路!一条从入门到入土的道路(话好像不太好听,但毕竟学习编程嘛,活到老,编程也就到老!
如果本文对你有一点点帮助,那么请点个赞呗,谢谢~
最后,若有不足或者不正之处,欢迎指正批评,感激不尽!如果有疑问欢迎留言,绝对第一时间回复!
欢迎各位关注我的公众号,一起探讨技术,向往技术,追求技术,说好了来了就是盆友喔...
手把手教你优雅的编写第一个SpringMVC程序的更多相关文章
- 【转】手把手教你把Vim改装成一个IDE编程环境(图文)
手把手教你把Vim改装成一个IDE编程环境(图文) By: 吴垠 Date: 2007-09-07 Version: 0.5 Email: lazy.fox.wu#gmail.com Homepage ...
- win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序
本文是一个非常简单的博客,让大家知道如何使用 asp dot net core 做后台,使用 UWP 或 WPF 等做前台. 本文因为没有什么业务,也不想做管理系统,所以看到起来是很简单. Visua ...
- 搭建java开发环境、使用eclipse编写第一个java程序
搭建java开发环境.使用eclipse编写第一个java程序 一.Java 开发环境的搭建 1.首先安装java SDK(简称JDK). 点击可执行文件 jdk-6u24-windows-i586. ...
- 【安装eclipse, 配置java环境教程】 编写第一个java程序
写java通常用eclipse编写,还有一款编辑器比较流行叫IJ.这里我们只说下eclipse编写java的前期工作. 在安装eclipse之前要下载java的sdk文件,即java SE:否则无法运 ...
- 【C#入门教案-02】用记事本编写第一个C#程序-Hello World
02-用记事本编写第一个C#程序-Hello World 广东职业技术学院 欧浩源 [1]进行.NET程序开发的最基本环境配备 .NET Framework + 代码编辑工具(记事本或Noetpad ...
- 一起学Hadoop——使用IDEA编写第一个MapReduce程序(Java和Python)
上一篇我们学习了MapReduce的原理,今天我们使用代码来加深对MapReduce原理的理解. wordcount是Hadoop入门的经典例子,我们也不能免俗,也使用这个例子作为学习Hadoop的第 ...
- 从零自学Java-1.编写第一个Java程序
编写第一个Java程序 完成工作:1.在文本编辑器中输入一个Java程序. 2.使用括号组织程序. 3.保存.编译和运行程序. package com.Jsample;//将程序的包名称命名为com. ...
- Java笔记:编写第一个Java程序
2017.6.17 1.编写第一个Java程序 创建text文本,命名第一个Java程序.txt 在里面编写Java代码 public class Demo1{ public static void ...
- 假期作业02:安装JDK与文本编辑器并编写第一个Java程序
假期作业02:安装JDK与文本编辑器并编写第一个Java程序 一.安装JDK与文本编辑器并编写第一个java程序 首先在oracle官网(需要创建账号,进行登录后方可使用)按照自己的需求下载JDK(h ...
随机推荐
- (记录)Jedis存放对象和读取对象--Java序列化与反序列化
一.理论分析 在学习Redis中的Jedis这一部分的时候,要使用到Protostuff(Protobuf的Java客户端)这一序列化工具.一开始看到序列化这些字眼的时候,感觉到一头雾水.于是,参考了 ...
- node 短信接口的调用
首先安装一下 短信的sdk 依赖 这里使用的是阿里云的短信SDK,在阿里云官网申请 npm install @alicloud/sms-sdk --save 调用 新建个 message.js /** ...
- 深度解密Go语言之 pprof
目录 什么是 pprof pprof 的作用 pprof 如何使用 runtime/pprof net/http/pprof pprof 进阶 Russ Cox 实战 查找内存泄露 总结 参考资料 相 ...
- [考试反思]1018csp-s模拟测试78(lrd day2) :规律
zkt没素质果然考炸了! 但是他考炸了和我一个分 这场的状态是真的不好,T3比较简单但没有做,一直干T2结果还是跪了 T1的哈希写挂了,模数比int大了结果一乘就炸long long了. 调了一个小时 ...
- Lost My Music:倍增实现可持久化单调栈维护凸包
题目就是求树上每个节点的所有祖先中(ci-cj)/(dj-di)的最小值. 那么就是(ci-cj)/(di-dj)的最大值了. 对于每一个点,它的(ci,di)都是二维坐标系里的一个点 要求的就是祖先 ...
- 使用Typescript重构axios(二十六)——添加HTTP授权auth属性
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
- NOIP 模拟赛 23 T4 大逃亡O(二分+广搜)(∩_∩)O
题目描述 给出数字N(1≤N≤10000),X(1≤x≤1000),Y(1≤Y≤1000),代表有N个敌人分布一个X行Y列的矩阵上,矩形的行号从0到X-1,列号从0到Y-1再给出四个数字x1,y1,x ...
- starUML 3.0.2文件 百度云
文件百度云---链接:https://pan.baidu.com/s/1BVX9Ze40bkgd3k_4WFb99A 提取码:t7kj 使用方法:将starUML安装目录(一般为 C:\Program ...
- 设置eclipse的字体大小
window->preferences->general->Appearance->Colors and Fonts->basic->text font->点 ...
- 外行人都能看懂的WebFlux,错过了血亏!
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 本文知识点架构: 如果有关注我公众号文章的同学就会发 ...