Java框架 SpringMVC介绍及入门案例
1、SpringMVC简介
1.1、什么是MVC
1.2、什么是SpringMVC
1.3、SpringMVC的特点
Spring 家族原生产品 ,与 IOC 容器等基础设施无缝对接基于原生的 Servlet ,通过了功能强大的 前端控制器 DispatcherServlet ,对请求和响应进行统一 处理
表述层各细分领域需要解决的问题 全方位覆盖 ,提供 全面解决方案
代码清新简洁 ,大幅度提升开发效率
内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可
性能卓著,尤其适合现代大型、超大型互联网项目要求
2、入门案例
2.1、创建工程
创建Maven工程 --》添加web 模块 --》将打包方式改为 war
引入依赖
<dependencies> <!-- SpringMVC --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.1</version></dependency> <!-- 日志 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency> <!-- ServletAPI --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency> <!-- Spring5和Thymeleaf整合包 --><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>3.0.12.RELEASE</version></dependency></dependencies>
注:由于 Maven 的传递性,我们不必将所有需要的包全部配置依赖,而是配置最顶端的依赖,其他靠传递性导入。
2.2、 配置web.xml
① 默认配置方式
<!-- 配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理 --><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><!--设置springMVC的核心控制器所能处理的请求的请求路径/ 所匹配的请求可以是/login或.html或.js或.css方式的请求路径但是/不能匹配.jsp请求路径的请求--><url-pattern>/</url-pattern></servlet-mapping>
② 扩展配置方式
<!-- 配置SpringMVC的前端控制器,对浏览器发送的请求统一进行处理 --><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 通过初始化参数指定SpringMVC配置文件的位置和名称 --><init-param><!-- contextConfigLocation为固定值 --><param-name>contextConfigLocation</param-name><!-- 使用classpath:表示从类路径查找配置文件,例如maven工程中的 src/main/resources --><param-value>classpath:SpringMVC-servlet.xml</param-value></init-param><!--作为框架的核心组件,在启动过程中有大量的初始化操作要做而这些操作放在第一次请求时才执行会严重影响访问速度因此需要通过此标签将启动控制DispatcherServlet的初始化时间提前到服务器启动时--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><!--设置springMVC的核心控制器所能处理的请求的请求路径/ 所匹配的请求可以是/login或.html或.js或.css方式的请求路径但是/不能匹配.jsp请求路径的请求--><url-pattern>/</url-pattern></servlet-mapping>
③ / 和 /* 的区别
<url-pattern>标签中使用/和 /*的区别:/ 所匹配的请求可以是/login或.html或.js或.css方式的请求路径,但是/不能匹配.jsp请求路径的请求因此就可以避免在访问jsp页面时,该请求被 DispatcherServlet 处理,从而找不到相应的页面/* 则能够匹配所有请求,例如在使用过滤器时,若需要对所有请求进行过滤,就需要使用/*的写法
2.2、创建请求控制器
@Controller
public class HelloController {
}
2.3、创建SpringMVC的配置文件
<!--自动扫描包--><context:component-scan base-package="com.chenyixin.ssm.controller"/><!-- 配置Thymeleaf视图解析器 --><bean id="viewResolver"class="org.thymeleaf.spring5.view.ThymeleafViewResolver"><property name="order" value="1"/><property name="characterEncoding" value="UTF-8"/><property name="templateEngine"><bean class="org.thymeleaf.spring5.SpringTemplateEngine"><property name="templateResolver"><beanclass="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"><!-- 视图前缀 --><property name="prefix" value="/WEB-INF/templates/"/><!-- 视图后缀 --><property name="suffix" value=".html"/><property name="templateMode" value="HTML5"/><property name="characterEncoding" value="UTF-8" /></bean></property></bean></property></bean><!--处理静态资源,例如html、js、css、jpg若只设置该标签,则只能访问静态资源,其他请求则无法访问此时必须设置<mvc:annotation-driven/>解决问题--><mvc:default-servlet-handler/><!-- 开启mvc注解驱动 --><mvc:annotation-driven><mvc:message-converters><!-- 处理响应中文内容乱码 --><bean class="org.springframework.http.converter.StringHttpMessageConverter"><property name="defaultCharset" value="UTF-8" /><property name="supportedMediaTypes"><list><value>text/html</value><value>application/json</value></list></property></bean></mvc:message-converters></mvc:annotation-driven>
2.4、测试HelloWorld
目录格式:
默认配置方式目录:
扩展配置方式目录:
① 实现对首页的访问
@Controller
public class HelloController {// @RequestMapping注解:处理请求和控制器方法之间的映射关系// @RequestMapping注解的value属性可以通过请求地址匹配请求,/ 表示的当前工程的上下文路径// localhost:8080/springMVC/@RequestMapping("/")public String index() {// 设置视图名称return "index";}@RequestMapping("/hello")public String target() {return "target";}
}
② 通过超链接跳转到指定页面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8" xmlns:th="http://www.thymeleaf.org"><title>首页</title>
</head>
<body><h1>首页</h1><a th:href="@{/hello}">Hello World</a>
</body>
</html>
target.html 页面:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Target</title>
</head>
<body><h1>Hello World</h1>
</body>
</html>
2.5、总结
Java框架 SpringMVC介绍及入门案例相关推荐
- 【Spring】Spring Security介绍及其入门案例
文章目录 前言 1. SpringSecurity 框架简介 1.1 概要 1.2 历史 1.3 同款产品对比 1.3.1 Spring Security 1.3.2 Shiro 1.4 模块划分 2 ...
- (转)SpringMVC学习(一)——SpringMVC介绍与入门
http://blog.csdn.net/yerenyuan_pku/article/details/72231272 SpringMVC介绍 SpringMVC是什么? SpringMVC和Stru ...
- SpringMVC(一):SpringMVC简介、入门案例
目录 一.SpringMVC概述 二. SpringMVC入门案例 1.案例实现步骤 2.案例类和注解 三.SpringMVC案例运行流程 1. 启动服务器初始化过程 2.单次请求过程 四.bean加 ...
- java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
目录 前言 1. 学习路线 2. 学习方法 前言 这篇文章主要总结我之前所学过的框架以及学习路线 从实打实的零基础到框架再到项目 之后实习工作 也在这篇博客中记录我的学习笔记 以及在笔记中遇到的配置安 ...
- 流式计算storm核心组件介绍以及入门案例---跟着就能在本地跑起来的storm项目
关于storm的基础,参照我这篇文章:流式计算storm 关于并发和并行,参照我这篇文章:并发和并行 关于storm的并行度解释,参照我这篇文章:storm的并行度解释 关于storm的流分组策略,参 ...
- MyBatisPlus(一)MyBatisPlus介绍和入门案例
文章目录 MyBatis-Plus 简介 特性 框架结构 入门案例 MyBatis-Plus 简介 MyBatis-Plus(简称MP)是一个MyBatis增强工具,在MyBatis的基础上只做增强不 ...
- treegrid 与java交互_EXTJS实现的TREEGRID(后台java,框架SpringMVC)
一.一些废话 近日来,有几个项目用到了EXTJS作为Web前端.也看到了一些童鞋苦苦在网上寻觅树形列表控件,碰巧项目中用到了一种,现在给大家分享一下. 二.前端 前端代码,用的是JS.主要就是指定数据 ...
- 响应式编程框架ReactiveCocoa介绍与入门
ReactiveCocoa是Github团队开发的第三方函数式响应式编程框架,在目前市面上的很多iOS App都大量使用了这个框架.以下我简称这个框架为RAC.我下面会通过几篇博客来和大家一起学习这个 ...
- Java框架-SpringMVC的应用(json数据交互、控制器方法返回值、文件上传)
1. 搭建SpringMVC开发环境 1.1 创建项目,添加依赖 <?xml version="1.0" encoding="UTF-8"?> &l ...
最新文章
- iOS 关于第三方键盘
- python电脑下载网址-python下载文件文件到本地电脑(基于requests)
- 餐饮O2O创业 有用户却难变现
- ios 常用数学函数
- Nginx源代码安装
- Jmeter录制app脚本
- jzoj4669-[NOIP2016提高A组模拟7.19]弄提纲【LCA,KMP,字符串】
- mysql sequence java_MySQL增加Sequence管理功能
- 海奥华预言--第一章 神秘邀请
- 这个保守的 RNA motif是病毒侵染的关键
- 关于 HttpServlet、GenericServlet 和 Servlet 的关系
- CUDA——调试“ImportError: libcudart.so.9.2: cannot open shared object file: No such file or directory”
- twisted python_Python爬虫Scrapy框架之Hello Word
- 移动开发或将被颠覆?
- Vue 单页面应用 把公共组件放在 app.vue 但是我希望某个页面没有这些公共组件怎么办???(比如登陆页面)
- hdfs-大数据Week6-DAY2-2-hdfs
- React-Native 仿喜马拉雅APP项目笔记(多环境配置 项目配置路径 堆栈式导航)
- Codechef April Challenge 2019 游记
- iOS CNContactStore 与AddressBook
- flutter 屏幕截图,超出屏幕部分截图