SpringMVC简介
MVC:
- MVC是模型(Model)是视图(Views)控制层(Controller)的缩写,是一种软件设计规范;
- 是将业务逻辑、数据、显示分离的方法来组织代码;
- MVC主要作用是降低了视图于业务逻辑键的双向耦合;
- MVC不是一种设计模式,MVC是一种架构模式。
Model(模型):数据模型,提供要展示的数据,因此包含数据和行为。就是Dao层和Service层
View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责显示。
SpringMVC的特点:
- 轻量级、简单易学
- 高效、基于请求响应的MVC框架
- 与Spring兼容性好,无缝结合
- 约定由于配置
- 功能强大
Spring的web框架围绕DispatcherServlet[调度Servlet]设计。
中心控制器
Spring的web框架围绕DispatcherServlet设计。DispatcherServlet的作用是将请求分发到不同的处理器。我们可以采用基于注解的controller声明开发,十分简洁;
Spring MVC框架像许多其他MVC框架一样,**以请求为驱动,围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet(继承自HttpServlet基类)
SpringMVC的原理如下图所使:
当发起请求时被前置的控制器拦截到请求,根据请求参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应給中心控制器,控制器使用模型与视图渲染视图结果,将结果返回给中心控制器,再将结果返回给请求者。
SpringMVC第一个程序
创建maven项目
1、导入依赖
导入webmvc,idea会自动导入相应的依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.1.RELEASE</version>
</dependency>
</dependencies>
对应的依赖:
2、编写web.xml
<!--主注册DispatcherServlet-->
<servlet>
<servlet-name>DispatcherServlet</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>
<!--
/ 匹配所有的请求 不包括.jsp
/* 匹配所有的请求 包括.jsp
-->
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3、编写springmvc的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!--扫描包配置,控制层,和前端交互 controller-->
<context:component-scan base-package="com.star.controller"/>
<!--开启注解扫描-->
<mvc:annotation-driven/>
<!--在web开发中,我们一般存在静态资源css,js,img。。。-->
<mvc:default-servlet-handler/>
<!--视图解析器-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/views/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
4、编写前端页面
在WEB-INF下创建views目录,创建hello.jsp页面;
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Hello</title>
</head>
<body>
<%--使用el表达式获取传入的参数--%>
<h1>${msg}</h1>
</body>
</html>
5、测试前后端交互
package com.star.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller //控制层
public class HelloController {
@RequestMapping("/hello") //请求的映射路径
public String hello(Model model){
model.addAttribute("msg","Hello,SpringMVC");//使用model给前端传入参数
//拼接成:/WEB-INF/views/hello.jsp
return "hello";
}
}
配置tomcat,启动项目,输入路径:
注意:要在IDEA的项目发布中,添加lib依赖!