手把手教你优雅的编写第一个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 ...
随机推荐
- (三)django--带Template的网站
我们接着(二),在new下新建一个templates(注意必须是这个名字,不然要进行配置),然后在该目录下新建一个test.html 2.我们在pycharm中新建的html文件里面不会有内容,我们输 ...
- chrome安装json美化软件 JSONView
安装效果如下: 安装步骤: 1.下载地址: github地址:https://github.com/gildas-lormeau/JSONView-for-Chrome 2.解压文件 3.打开谷歌浏览 ...
- Linux下安装db2V9.7
vi /etc/hosts(127.0.0.1 localhost192.168.1.53 linux-wmv8) vi /etc/services db2inst1 50000/tcp(加在最后) ...
- ElasticSearch head插件安装与配置
下载 下载地址:https://github.com/mobz/elasticsearch-head 安装 1. 下载到本地 git clone 2. 安装 grunt npm install -g ...
- pytest -- 中文文档
pytest-chinese-doc pytest官方文档(5.1.3版本)的中文翻译,但不仅仅是简单的翻译: 更多的例子,尽量做到每一知识点都有例子: 更多的拓展阅读,部分章节添加了作者学习时,所查 ...
- Mysql用户管理及权限分配
早上到公司,在服务器上Mysql的数据库里新建了个database,然后本地的系统里用原来连接Mysql账号admin连这个数据库.结果报错了,大概是这样子的: Access denied for u ...
- 前端组件用 Scope 发布 npm 包的方法
1.引言 多人.多组织或多组件发布 npm 包到同一个仓库时,可能出现命名冲突问题. 为了解决这个问题,npm 引入了“scope”(范围)概念. 在 Angular 项目中,我们通常可以看到“@an ...
- NOIP模拟 3
序列 以为自己很对然后光荣T20 (路丽姐姐原谅我吧)果然是把等比数列的定义记错了,一直没发现等比数列里的项是互成倍数的 正解首先就跟据上点初步判断两项能否成为子段的开头 然后处理出可能的最小公比(用 ...
- egret编译速度慢解决方法
egret编译速度慢解决方法 直接用增量更新egret run -a 每次改完代码 保存都会自动编译
- egret清除缓存的方法
1 图片加版本号2 js加版本号3 default.res.json 加版本号 3个缺一不可 ps: egret 里面default.res.json 资源和代码一定要保持一致