springMVC的基本介绍与入门
1:MVC是什么?
- MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。
- Model(模型):数据模型,提高要展示的数据 现在一般是分为Value Object(数据Dao)和 服务层(行为Service)
- View(视图):一般负责用户图形界面的展示
- Controller(控制器):用来接受用户的请求 然后委托给Model进行处理 然后处理完毕交给View来展示 所以Controller一般是做为了个调度员
2:spring MVC是什么?
- SpringMVC是基于java实现的MVC设计模型的请求驱动类型的轻量级web框架
- SpringMVC 也是Spring家族的一员
- MVC主要作用是降低视图与业务逻辑的耦合
3:为什么要使用spring MVC?
- MVC对servlet进行了封装
- spring mvc的本质也就是将业务逻辑处理和显示渲染分离开来,通过数据模块进行关联
- 使用人数多,热门
- 简单 , 便捷 , 易学 , 天生和Spring无缝集成
- 支持支持Restful风格 .异常处理 , 本地化 , 国际化 , 数据验证 , 类型转换 , 拦截器 等等
4:spring MVC 的生命周期(流程图):
流程图:
1:客户端发出请求到http里面只要符合web.xml里面的配置就转换到DispatcherServlet(前端控制器)来处理
2:前端控制器请求HandlerMapping(处理器映射器)寻找 Handler
3:处理器向DispatcherServlet(前端控制器)返回Handler(处理器)
4:DispatcherServlet(前端处理器)调用处理器适配器去执行Handler
5:Handler让具体的Controller执行。
6:Handler执行完成给适配器返回 ModelAndView(存储处理完后的结果数据,以及显示该数据的视图包括:Model和view)
7:ModelAndView将解析后的信息传递给DispatcherServlet(前端控制器),如解析控制器映射等
8:DispatcherServlet调用视图解析器(ViewResolver)来解析ModelAndView传递的逻辑视图名。
9:视图解析器将解析的逻辑视图名传给DispatcherServlet。
10:DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图
11:最终视图呈现给用户(响应结果)
第一个程序:
准备工作:先准备导入maven依赖 :
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<!--J2EE-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<!--springframework-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>com.github.stefanbirkner</groupId>
<artifactId>system-rules</artifactId>
<version>1.16.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency>
<!--其他需要的包-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
然后创建一个web项目
把tomcat给配置好 可以参考:
tomcat从http://tomcat.apache.org/下载直接解压即可
然后到idea里面配置tomcat环境可参考:https://blog.csdn.net/Grsu_M/article/details/109175915来配置
第一步先配置web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--通过初始化参数指定SpringMVC配置文件的位置,进行关联-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!-- 启动顺序,数字越小,启动越早 -->
<load-on-startup>1</load-on-startup>
</servlet> <!--所有请求都会被springmvc拦截 -->
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
二:在资源目录下创建springmvc-servlet.xml(名字随意):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 这里的包名
写什么就代表要扫描哪个包里面的注解-->
<context:component-scan base-package="com.kuang.mvc"/>
<!-- 让Spring MVC不处理静态资源 -->
<mvc:default-servlet-handler />
<mvc:annotation-driven />
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>
</beans>
第三步:创建包里面的类:
//@Controller表示在tomcat启动的时候,把这个类作为一个控制器加载到Spring的Bean工厂
@Controller
public class HelloServlet {
//@RequestMapping除了可以使用请求URL映射外 还可以使用请求方法 请求参数和请求头映射请求
@RequestMapping("/hello")
public String sayHello(Model model){
//向模型中添加属性msg与值,可以在JSP页面中取出并渲染
model.addAttribute("msg","hello,SpringMVC");//表示向前台传送数据 用的是可以键值对的方式
//web-inf/jsp/hello.jsp
return "hello";
}
//下面这种是Restful风格
@RequestMapping("/test/{a}/{b}")
public String test1(@PathVariable int a, @PathVariable int b, Model model){
int sum=a+b;
//添加数据
model.addAttribute("msg","这数据为:"+sum);
return "test";
}
}
第四步:在web下面创建一个jsp包包里创建一个hello.jsp文件
因为我们在视图解析器里面加入了前缀和后缀 如果不想这样可以自己改:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<!------ controller层控制跳转到showResume后,便可以直接通过el表达式 ${}获取到该值如下----->
${msg}
</body>
</html>
第五步 开启tomcat:进入http://localhost:8080/r/hello
或用Restful风格:http://localhost:8080/r/1/2
完成!!!
小白学习MVC的第二天 写的一遍小笔记 以后会努力改进的!!!!
点个赞吧!!!!!!!
springMVC的基本介绍与入门的更多相关文章
- .NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一)
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下FluentValidation验证组件.那里只是概述了一下,并没有对其使用和强大功能做深入研究 ...
- Springmvc整合tiles框架简单入门示例(maven)
Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...
- freemarker语法介绍及其入门教程实例
# freemarker语法介绍及其入门教程实例 # ## FreeMarker标签使用 #####一.FreeMarker模板文件主要有4个部分组成</br>#### 1.文本,直接输 ...
- (转)私有代码存放仓库 BitBucket介绍及入门操作
转自:http://blog.csdn.net/lhb_0531/article/details/8602139 私有代码存放仓库 BitBucket介绍及入门操作 分类: 研发管理2013-02-2 ...
- SpringMVC系列(一)SpringMVC概述和搭建SpringMVC的第一个helloWord入门程序
一.SpringMVC 概述 • Spring为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一 • Spring3.0 后全面超越 Struts2,成为最优秀的 MVC ...
- NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(转载)
原文地址:http://www.cnblogs.com/asxinyu/p/dotnet_Opensource_project_FluentValidation_1.html 阅读目录 1.基本介绍 ...
- 读写Word的组件DocX介绍与入门
本文为转载内容: 文章原地址:http://www.cnblogs.com/asxinyu/archive/2013/02/22/2921861.html 开源Word读写组件DocX介绍与入门 阅读 ...
- [转帖]Druid介绍及入门
Druid介绍及入门 2018-09-19 19:38:36 拿着核武器的程序员 阅读数 22552更多 分类专栏: Druid 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议 ...
- Redis介绍及入门安装及使用
Redis介绍及入门安装及使用 什么是Redis Redis is an open source (BSD licensed), in-memory data structure store, use ...
- Mysql数据库的简单介绍与入门
Mysql数据库的简单介绍与入门 前言 一.下载与安装 1.下载 官网下载MYSQL5.7.21版本,链接地址https://www.mysql.com/downloads/.下载流程图如下: 找到M ...
随机推荐
- PXC集群脑裂导致节点是无法加入无主的集群
一套2节点的MySQL PXC集群,第1节点作为主用节点长时间的dml操作,导致大量的事务阻塞,出现异常,此时查看第2节点显示是primary状态,但无事务阻塞情况. 此时第1节点无法正常提供服务,于 ...
- torch.nn.ReLU(inplace=True)的具体含义:
首先根据源文档中的ReLU(x)=max(0,x),得出结论.大于0的数值不变,小于0的数据变成0. 补充:这里需要注意的是 ReLU并没有限制数据的大小. 这是对应的文档链接:https://pyt ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-19-处理鼠标拖拽-中篇
1.简介 上一篇中,主要是介绍了拖拽的各种方法的理论知识以及实践,今天宏哥讲解和分享一下划取字段操作.例如:需要在一堆log字符中随机划取一段文字,然后右键选择摘取功能. 2.划取字段操作 划取字段操 ...
- 基于.Net 的 AvaloniUI 多媒体播放器方案汇总
基于.Net 的 AvaloniUI 多媒体播放器方案汇总 摘要 随着国产化的推进,相信.Net的桌面端的小伙伴的可能已经有感受到了. 为了让.Net的桌面框架能够跨桌面平台,首选的就是Avalona ...
- 用xshell连接vmware虚拟机
主要是为了方便写命令,我的vmware不管怎样都没办法粘贴命令,写建表sql更是折磨. 开启虚拟机用ifconfig查看内网ip地址. 然后在用户身份验证填用户名和密码. 连接成功. 这样就可以开多个 ...
- 20.1 OpenSSL 字符BASE64压缩算法
OpenSSL 是一种开源的加密库,提供了一组用于加密和解密数据.验证数字证书以及实现各种安全协议的函数和工具.它可以用于创建和管理公钥和私钥.数字证书和其他安全凭据,还支持SSL/TLS.SSH.S ...
- C# 反序列化JSON
try { u = await WebAPIOperator.PostAsync("/v2.0/auth/user/user/login", new LoginRequestMod ...
- 一文读懂计算机底层网络原理,包括TCP、UDP、header,什么是包、帧、段等关键问题
说到计算机网络原理,大家可能马上联想到,七层协议,传输层,链路层,三次握手四次挥手:前端的同学,还会想到我们用Crome F12的network里面的headers,状态码等.后端同学可能会联想到,抓 ...
- JS逆向实战26——某店ua模拟登陆
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标 目标网站 aHR0c ...
- go基础-依赖管理
有些不可思议,简洁.优雅的go语言依赖管理如此混乱,发布多年也没有可靠的依赖管理机制,官方先后推出了多种依赖管理机制gopath.vendor.dep等,没有一个顺手,直到在Go 1.11推出go m ...