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. mysql数据库( 基础篇加破解)

    1.数据库(Database,DB)是按照数据结构来组织.存储和管理数据的,并且是建立在计算机存储设备上的仓库 2.什么是数据库:(用来存储数据的仓库) 数据库:(cs架构套接字) 数据库管理软件分类 ...

  2. MbrFix 问题

    删除Windows/Linux双系统下的Linux系统 参考博客 注意:官网上的 MbrFix.exe 下载或许太慢. CSDN下载 问题 1.看到博客下面的评论写道: 为什么我的到第四步的时候会提示 ...

  3. poj 1159 最长回文

    方法  LCS #include<iostream> #include<cstring> #include<algorithm> #include<stdio ...

  4. BZOJ - 3224 Tyvj 1728 普通平衡树 (treap/树状数组)

    题目链接 treap及树状数组模板题. treap版: #include<bits/stdc++.h> using namespace std; typedef long long ll; ...

  5. springboot 不同环境不同的配置

    前言 我们在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发.测试.生产等.其中每个环境的数据库地址.服务器端口等等配置都会不同,如果在为不同环境打包时都要频 ...

  6. sqlalchemy的缓存和刷新

    其实只是第一次查询了数据库,其他的时候都使用的是缓存,所以有时候,因为这个特性会出错,所以需要刷新对象或者使对象过期 参考链接:http://www.cnblogs.com/fengyc/p/5369 ...

  7. elasticsearch snapshot快照备份和恢复

    环境:mac   使用brew 安装elasticsearch   1.在 /usr/local/etc/elasticsearch/elasticsearch.yml 文件中配置快照地址     p ...

  8. 谷歌(google)世界各国网址大全

    谷歌(google)世界各国网址大全世界各国google网址 国家    网址         国家主要语言 亚洲:中国  google.cn 汉语蒙古 google.mn蒙古语韩国 google.c ...

  9. Java文件压缩优化工具(ProGuard) 软件介绍 Soft content

    ProGuard是一款免费的Java类文件的压缩.优化.混肴器.它可以帮你删除没用的类,字段,方法与属性,使字节码最大程度地优化,使用简短且无意义的名字来重命名类.字段和方法 .目前eclipse已经 ...

  10. Linux 驱动层实现阻塞和非阻塞

    linux应用层的函数默认是阻塞型的,但是要想真正实现阻塞,还需要驱动的支持才行. 例:open().scanf().fgets().read().accept() 等 1.默认情形,驱动层不实现阻塞 ...