SpringMVC总结一:快速入门
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总结一:快速入门的更多相关文章
- [jbdj]SpringMVC框架(1)快速入门
1)springmvc快速入门(传统版) 步一:创建springmvc_demo一个web应用 步二:导入springioc,springweb , springmvc相关的jar包 步三:在/WEB ...
- 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 ...
- SpringMVC:学习笔记(1)——理解MVC及快速入门
SprigMVC-理解MVC及快速入门 说明: 传统MVC-->JSPModel2-->Front Controller + Application Controller + Page C ...
- SpringMVC 快速入门
SpringMVC 快速入门 SpringMVC 简介 SpringMVC是 Spring为展示层提供的基于Web MVC设计模式的请求驱动类型的轻量级Web框架,它的功能和Struts2一样.但比S ...
- springMVC学习总结(一)快速入门
springMVC学习总结(一)快速入门 一.初步认识 springMVC执行流程 主要组件 DispatcherServlet(中央控制器) 配置在web.xml中的前端控制器,客户端请求的入口,调 ...
- JAVA WEB快速入门之从编写一个基于SpringBoot+Mybatis快速创建的REST API项目了解SpringBoot、SpringMVC REST API、Mybatis等相关知识
JAVA WEB快速入门系列之前的相关文章如下:(文章全部本人[梦在旅途原创],文中内容可能部份图片.代码参照网上资源) 第一篇:JAVA WEB快速入门之环境搭建 第二篇:JAVA WEB快速入门之 ...
- JAVA WEB快速入门之从编写一个基于SpringMVC框架的网站了解Maven、SpringMVC、SpringJDBC
接上篇<JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP.IOC)>,了解了Spring的核心(AOP.IOC)后,我们再来学习与实践Maven.Sp ...
- (4)Maven快速入门_4在Spring+SpringMVC+MyBatis+Oracle+Maven框架整合运行在Tomcat8中
利用Maven 创建Spring+SpringMVC+MyBatis+Oracle 项目 分了三个项目 Dao (jar) Service (jar) Controller (web) ...
- SpringMVC快速入门
导入开发包 前6个是Spring的核心功能包[IOC],第7个是关于web的包,第8个是SpringMVC包 org.springframework.context-3.0.5.RELEASE.jar ...
随机推荐
- Java加载jar文件并调用jar文件当中有参数和返回值的方法
在工作当中经常遇到反编译后的jar文件,并要传入参数了解其中的某些方法的输出,想到Java里面的反射可以实现加载jar文件并调用其中的方法来达到自己的目的.就写了个Demo代码. 以下的类可以编译生成 ...
- 在Blender上安装RenderMan插件
2018/3/27 Download and Install Blender itself Download RenderMan Installer (Need to register an acco ...
- (三)canvas绘制样式
beginPath() 对画线点的一个开始限制 moveTo() 画线的起点,只在开头使用 参数两个x轴,y轴 lineTo() 后续连线 两个参数x轴,y轴 stroke() 连线无填充 fill( ...
- (六)java数据类型
数据类型:决定了变量占据多大的空间,决定了变量存储什么类型的数据 整形: byte 1个字节 short 2个字节 int 4个字节 long 8个字节 浮点型 ...
- 解决Chrome关联HTML文件,图标不显示的问题。
解决Chrome关联HTML文件,图标不显示的问题. 一.方法一 1.win+r,输入regedit,调出注册表信息,按下Ctrl+F,在注册表里搜索.在注册表里新建几个文件就可以了 a.新建Old ...
- IntelliJ IDEA下SVN配置及使用
一.在IDEA中使用SVN,首先需要下载安装 TortoiseSVN 插件. 打开 TortoiseSVN 下载地址,选择适合自己的系统类型下载. 接下来,进行安装即可.选择Modify,默认 com ...
- NNI (Neurol Network Intelligence) 是微软开源的自动机器学习工具
NNI (Neurol Network Intelligence) 是微软开源的自动机器学习工具 https://www.cnblogs.com/ms-uap/p/9719071.html [重磅]微 ...
- ASP.NET中服务器控件的生命周期
服务器控件的生命周期是创建服务器控件最重要的概念.作为开发人员,必须对服务器控件生命周期深刻理解.当然,这不是一朝一夕就可以做到的.对于学习控件开发技术的初学者,可以不必掌握得非常详细深入,只需对服务 ...
- 通信对象System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态。
问题描述:在客户端站点访问WCF服务后,在页面停留时间过长,客户端站点将会报错.报错内容如下: 通信对象System.ServiceModel.Channels.ServiceChannel 无法用于 ...
- 【spring源码学习】springMVC之映射,拦截器解析,请求数据注入解析,DispatcherServlet执行过程
[一]springMVC之url和bean映射原理和源码解析 映射基本过程 (1)springMVC配置映射,需要在xml配置文件中配置<mvc:annotation-driven > ...