MVC:

  MVC是一种架构模型,本身没有什么功能,只是让我们的项目结构更加合理,流程控制更加清晰,一般包含三个组件:

​   **Model(模型)**:数据模型,用于提供要展示的数据。一般包含数据和行为(也就是业务),在JavaWEB中,数据和业务往往是分离开的。

​   **View(视图)**:负责对模型数据进行展示,例如我们看到的网页。概念比较广泛,可以是:html、JSP、excel、Word、PDF、json、XML等

​   **Controller(控制器)**:接收用户请求,委托给模型做处理,处理完毕返回数据,再交给视图做渲染,相当于调度员工作

SpringMVC:

  Spring Web MVC是一种基于Java的,实现了Web MVC设计模式的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,采用了松散耦合可插拔组件结构,比其它MVC框架更具扩展性和灵活性。

可以让我们实现:

  • 进行更简洁的Web层的开发;

  • 天生与Spring框架集成(如IoC容器、AOP等);

  • 提供强大的约定大于配置的契约式编程支持;

  • 支持灵活的URL到页面控制器的映射;

  • 非常容易与其他视图技术集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用);

  • 非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API;

  • 支持Restful风格。

SrpingMVC架构了解一下:

DispatcherServlet  前置控制器
HandlerMapping  处理器映射器
HandlerAdapter  处理器适配器
Controller接口  控制器
ViewResolver  视图解析器

流程总结:

流程总结:
. 用户发起请求到DispatcherServlet(前端控制器)
. DispatcherServlet通过HandlerMapping(处理映射器)寻找用户要请求的Handler
. HandlerMapping返回执行链,包含两部分内容:
a) 处理器对象:Handler
b) HandlerInterceptor(拦截器)的集合
. 前端控制器通过HandlerAdapter(处理器适配器)对Handler进行适配包装
. 调用包装后的Handler中的方法,处理业务
. 处理业务完成,返回ModelAndView对象,包含两部分
a) Model:模型数据
b) View:视图名称,不是真正的视图
. DispatcherServlet获取处理得到的ModelAndView对象
. DispatcherServlet将视图名称交给ViewResolver(视图解析器),查找视图
. ViewResolver返回真正的视图对象给DispatcherServlet
. DispatcherServlet把Model(数据模型)交给视图对象进行渲染
. 返回渲染后的视图
. 将最终的视图返回用户,产生响应

快速入门案例:

首先创建一个java web项目,引入需要的包:

<dependencies>
<!--spring mvc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<!--日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<!-- JSP相关 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>

配置tomcat:

<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path>
<port>8080</port>
</configuration>
</plugin>
</plugins>
</build>

编写我们的controller(实现Controller接口)和jsp页面:

package com.zy.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date; public class MyTestController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");//设置对应视图的名字
mv.addObject("msg", "hello springmvc ===" + new Date().toLocaleString());
return mv;
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>${msg}</h1>
</body>
</html>

1,想使用springmvc必须先配置web.xml中的DispatcherServlet:

<?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_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>myspringmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--tomcat启动时就创建-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myspringmvc</servlet-name>
<!--
/* 匹配所有请求路径,不要用
/ 匹配除了.jsp以为的所有请求
*.xxx: 匹配以xxx为后缀的路径
-->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>

2,创建并配置SpringMVC配置文件:

SpringMVC有自己的配置文件,其实就是类似于Spring的applicationContext.xml的一个配置文件,配置SpringMVC需要使用到的bean,例如HandlerMapping,HandlerAdapter等

这个文件默认是去寻找:WEB-INF/{servletName}-servlet.xml(下面图片可以说明):

刚才在DispatcherServlet中配置的ServletName是 myspringmvc,所以默认是去找WEB-INF/myspringmvc-servlet.xml:

创建好这个文件后,我们需要配置一下其中的HandlerMapping,HandlerAdapter,Handler,viewResolver:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--1 配置HandlerMapping 可省略不写-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!--2 配置HandlerAdapter 可省略不写-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!--3 配置业务处理器 handler(我们自己写的controller)-->
<bean name="/hello.do" class="com.zy.controller.HelloController"/> <!--4
配置 viewResolver 视图解析器: 定位视图的准确位置,
问题: 根据视图名称,找到 视图对应的位置
* 例子: prefix="/WEB-INF/jsp/", suffix=".jsp", viewname="hello" -> "/WEB-INF/jsp/hello.jsp"
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--指定前缀-->
<property name="prefix" value="/WEB-INF/views/"/>
<!--指定后缀-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>

运行tomcat即可。

注解版案例:

入门案例中,我们自定义控制器类的方式并不好,存在以下问题:

​ 1) 类必须实现Controller接口,不友好。

​ 2) 每个类中只能有一个默认处理方法,只能处理一个用户请求。

​ 3) 每个类需要在配置文件中进行配置,很麻烦。

为了解决上面这些问题,我们使用注解版来改造一下:

1,首先我们的控制器controller:

//加上Controller注解
@Controller
public class HelloController {
//映射注解
@RequestMapping("/helloSpringMVC")
public ModelAndView helloSpringMVC(){
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");//设置视图名字
mv.addObject("msg", "hello springmvc 注解版 ===" + new Date().toLocaleString());
return mv;
}
}

2,然后我们的myspringmvc-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--下面配置HandlerMapping和HandlerAdapter的两步是可以不写的-->
<!--但是不写的情况下 默认的注解版的是过时的,所以可以写成下面这种推荐版的,也可以写最终这两步结合的简化版--> <!--1 因为 默认注解的handlermaping过时了,所以使用推荐版-->
<!--<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>-->
<!--2 因为 默认注解的HandlerAdapter过时了,所以使用推荐版-->
<!--<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>--> <!--上面注释的两步的结合简化版-->
<mvc:annotation-driven></mvc:annotation-driven> <!--由于是注解版的 所以开启扫描包扫描controller-->
<context:component-scan base-package="com.zy.controller"></context:component-scan> <!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/views/"></property>
<!--后缀-->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>

运行tomcat访问 http://localhost:8080/helloSpringMVC.do 即可。

SpringMVC总结一:快速入门的更多相关文章

  1. [jbdj]SpringMVC框架(1)快速入门

    1)springmvc快速入门(传统版) 步一:创建springmvc_demo一个web应用 步二:导入springioc,springweb , springmvc相关的jar包 步三:在/WEB ...

  2. SpringMVC的HelloWorld快速入门!

    1.加入JAR包: commons-logging-1.1.3.jar spring-aop-4.0.0.RELEASE.jar spring-beans-4.0.0.RELEASE.jar spri ...

  3. SpringMVC:学习笔记(1)——理解MVC及快速入门

    SprigMVC-理解MVC及快速入门 说明: 传统MVC-->JSPModel2-->Front Controller + Application Controller + Page C ...

  4. SpringMVC 快速入门

    SpringMVC 快速入门 SpringMVC 简介 SpringMVC是 Spring为展示层提供的基于Web MVC设计模式的请求驱动类型的轻量级Web框架,它的功能和Struts2一样.但比S ...

  5. springMVC学习总结(一)快速入门

    springMVC学习总结(一)快速入门 一.初步认识 springMVC执行流程 主要组件 DispatcherServlet(中央控制器) 配置在web.xml中的前端控制器,客户端请求的入口,调 ...

  6. JAVA WEB快速入门之从编写一个基于SpringBoot+Mybatis快速创建的REST API项目了解SpringBoot、SpringMVC REST API、Mybatis等相关知识

    JAVA WEB快速入门系列之前的相关文章如下:(文章全部本人[梦在旅途原创],文中内容可能部份图片.代码参照网上资源) 第一篇:JAVA WEB快速入门之环境搭建 第二篇:JAVA WEB快速入门之 ...

  7. JAVA WEB快速入门之从编写一个基于SpringMVC框架的网站了解Maven、SpringMVC、SpringJDBC

    接上篇<JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP.IOC)>,了解了Spring的核心(AOP.IOC)后,我们再来学习与实践Maven.Sp ...

  8. (4)Maven快速入门_4在Spring+SpringMVC+MyBatis+Oracle+Maven框架整合运行在Tomcat8中

    利用Maven 创建Spring+SpringMVC+MyBatis+Oracle 项目 分了三个项目  Dao   (jar)   Service (jar)   Controller (web) ...

  9. SpringMVC快速入门

    导入开发包 前6个是Spring的核心功能包[IOC],第7个是关于web的包,第8个是SpringMVC包 org.springframework.context-3.0.5.RELEASE.jar ...

随机推荐

  1. Java加载jar文件并调用jar文件当中有参数和返回值的方法

    在工作当中经常遇到反编译后的jar文件,并要传入参数了解其中的某些方法的输出,想到Java里面的反射可以实现加载jar文件并调用其中的方法来达到自己的目的.就写了个Demo代码. 以下的类可以编译生成 ...

  2. 在Blender上安装RenderMan插件

    2018/3/27 Download and Install Blender itself Download RenderMan Installer (Need to register an acco ...

  3. (三)canvas绘制样式

    beginPath() 对画线点的一个开始限制 moveTo() 画线的起点,只在开头使用 参数两个x轴,y轴 lineTo() 后续连线 两个参数x轴,y轴 stroke() 连线无填充 fill( ...

  4. (六)java数据类型

      数据类型:决定了变量占据多大的空间,决定了变量存储什么类型的数据 整形: byte     1个字节 short    2个字节 int        4个字节 long     8个字节 浮点型 ...

  5. 解决Chrome关联HTML文件,图标不显示的问题。

    解决Chrome关联HTML文件,图标不显示的问题. 一.方法一 1.win+r,输入regedit,调出注册表信息,按下Ctrl+F,在注册表里搜索.在注册表里新建几个文件就可以了 a.新建Old ...

  6. IntelliJ IDEA下SVN配置及使用

    一.在IDEA中使用SVN,首先需要下载安装 TortoiseSVN 插件. 打开 TortoiseSVN 下载地址,选择适合自己的系统类型下载. 接下来,进行安装即可.选择Modify,默认 com ...

  7. NNI (Neurol Network Intelligence) 是微软开源的自动机器学习工具

    NNI (Neurol Network Intelligence) 是微软开源的自动机器学习工具 https://www.cnblogs.com/ms-uap/p/9719071.html [重磅]微 ...

  8. ASP.NET中服务器控件的生命周期

    服务器控件的生命周期是创建服务器控件最重要的概念.作为开发人员,必须对服务器控件生命周期深刻理解.当然,这不是一朝一夕就可以做到的.对于学习控件开发技术的初学者,可以不必掌握得非常详细深入,只需对服务 ...

  9. 通信对象System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态。

    问题描述:在客户端站点访问WCF服务后,在页面停留时间过长,客户端站点将会报错.报错内容如下: 通信对象System.ServiceModel.Channels.ServiceChannel 无法用于 ...

  10. 【spring源码学习】springMVC之映射,拦截器解析,请求数据注入解析,DispatcherServlet执行过程

    [一]springMVC之url和bean映射原理和源码解析 映射基本过程 (1)springMVC配置映射,需要在xml配置文件中配置<mvc:annotation-driven >  ...