首页 > 技术文章 > 初识SpringMVC

Tiandaochouqin1 2019-03-14 20:46 原文

Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。

spring的优势:

1、清晰的角色划分:前端控制器(DispatcherServlet)、请求到处理器映射(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、处理器或页面控制器(Controller)、验证器( Validator)、表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。

2、由于命令对象就是一个POJO,无需继承框架特定API,可以使用命令对象直接作为业务对象;

3、和Spring 其他框架无缝集成,是其它Web框架所不具备的;

4、可适配,通过HandlerAdapter可以支持任意的类作为处理器;

5、可定制性,HandlerMapping、ViewResolver等能够非常简单的定制;

6、功能强大的数据验证、格式化、绑定机制;

7、利用Spring提供的Mock对象能够非常简单的进行Web层单元测试;

8、本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。

9、RESTful风格的支持、简单的文件上传、约定优于配置的契约式编程支持、基于注解的零配置支持等等。

下边先搭一个小例子

1.导入pom节点

 1 <dependency>
 2   <groupId>org.springframework</groupId>
 3   <artifactId>spring-webmvc</artifactId>
 4   <version>4.2.0.RELEASE</version>
 5 </dependency>
 6 
 7 <dependency>
 8   <groupId>org.springframework</groupId>
 9   <artifactId>spring-web</artifactId>
10   <version>4.2.0.RELEASE</version>
11 </dependency>

2.编写spring-mvc的xml文件,为了区别与spring的核心文件我们取名就叫spring-mvc.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xmlns:context="http://www.springframework.org/schema/context"
 5        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">
 6     <!--开启ioc注解-->
 7     <context:annotation-config/>
 8 
 9     <!--配置视图解析器-->
10     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
11         <!--配置前后缀,这个是访问资源的前缀和后缀-->
12         <property name="prefix" value="/"></property>
13         <property name="suffix" value=".jsp"></property>
14     </bean>
15 </beans>
View Code

 3.编写web.xml文件,版本使用3.0以上

<?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>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

4.在java目录下编写第一个控制器,我将他取名为TestController

 1 package controller;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5 
 6 @Controller//该注解表示这是一个控制器类,并在spring容器中声明一个Bean对象
 7 @RequestMapping("/test")//设置请求地址,用在类上,表示请求到该控制器上的url
 8 public class TestController {
 9     @RequestMapping("/index")//该注解用到方法上,表示请求该方法的url
10     public String toIndex(){
11         //返回值可以是String、Object、Model对象、ModelAndView对象
12         //返回值是String时,即返回的是视图名,前后缀再配置文件中配置了,所以,控制器会自动加上,
13         // 我们不必画蛇添足,自写一个视图的名称即可
14         return "index";
15     }
16 }
View Code

5.在webapp目录下编写第一个jsp页面,取名为index.jsp

 1 <%--
 2   Created by IntelliJ IDEA.
 3   User: zgye
 4   Date: 2019/3/14
 5   Time: 19:06
 6   To change this template use File | Settings | File Templates.
 7 --%>
 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 9 <html>
10 <head>
11     <title>index页面</title>
12 </head>
13 <body>
14 SpringMVC的第一个项目
15 </body>
16 </html>
View Code

6.配置tomcat并启动,请求设置好的路径比如我本机请求:localhost:8080/test/index,就能看到页面了

 mvc配置详解

1.Dispatcherservlet

  DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截  匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依 据相应的规则分发到目标Controller来处理,是配置MVC的第一步。

2.InternalResourceViewResolver

  视图名称解析器

3.以上出现的注解

@Controller 负责注册一个bean 到spring 上下文中

@RequestMapping 注解为控制器指定可以处理哪些 URL 请求

推荐阅读