[华为云在线课程][SpringMVC入门][一][简介][学习笔记]
1.SpringMVC介绍
Spring Web MVC是一种基于Java,实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将Web层进行解耦,基于请求驱动指的就是请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。在传统的JSP/Servlet技术体系中,如果要开发接口,一个接口对应一个Servlet,会导致我们开发出许多Servlet,使用SpringMVC可以有效的简化这一步骤。
Spring Web MVC也是服务到工作者模式的实现,但可以进行优化。前端控制器是DispatcherServlet;应用控制器可以拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request,response)方法,也称作Handler)的实现(也可以是任何POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。
1.1.Spring Web MVC能帮我们做什么?
- 让我们能非常简单的设计出干净的Web层和薄薄的Web层。
- 进行更简洁的Web层的开发。
- 天生与Spring框架集成(IoC容器、AOP等等)。
- 提供强大的约定大于配置的契约式编程支持。
- 能简单的进行Web层的单元测试。
- 支持灵活的URL到页面控制器的映射。
- 非常容易与其他视图技术集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里面,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用)。
- 非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API。
- 提供一套强大的JSP标签库,简化JSP开发。
- 支持灵活的本地化、主题等解析。
- 更加简单的异常处理。
- 对静态资源的支持。
- 支持RESTful风格。
2.SpringMVC之HelloWorld
2.1.创建Maven工程
- 新建项目,不要选择从骨架创建
2.2.添加依赖
- 在pom.xml文件中添加spring-webmvc的依赖:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.20</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
</dependencies>
在Maven选项卡里可以看到添加了spring-webmvc依赖之后,就会导入spring-aop、spring-beans、spring-context、spring-core、spring-expression、spring-web。
2.3.改造成Web项目
- 在pom.xml中将打包方式改为war
<packaging>war</packaging>
-
点击File -> ProjectStructure -> Modules
-
将界面中的Language Level改为11
-
展开Modules中的项目文件夹点击Web
-
点击Deployment Descriptors旁边的+号添加web.xml
-
将默认路径改为:项目路径\src\main\webapp\WEB-INF\web.xml
2.4.新建前端处理接口
- 新建一个Controller类,用来处理浏览器请求的接口,也就是前端请求处理接口
package org.example.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyController implements Controller {
/**
* 这就一个请求处理接口
* @param request 前端发送来的请求
* @param response 服务端给前端的响应
* @return 返回一个ModelAndView,Model是数据模型,View是视图
* @throws Exception
* */
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView modelAndView = new ModelAndView("hello");
modelAndView.addObject("name", "helloworld");
return modelAndView;
}
}
2.5.创建视图
- 在webapp目录下创建/jsp/hello.jsp文件:
<%--
Created by IntelliJ IDEA.
User: John
Date: 2022/7/13/0013
Time: 6:59
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>hello ${name}!</h1>
</body>
</html>
2.6.创建springmvc配置文件
- 在resources目录下,创建一个名为spring-servlet.xml的springmvc配置文件
<?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">
<bean class="org.example.controller.MyController" name="/hello"/>
<!--这个是处理器映射器,请求地址其实就是一个Bean的名字,然后根据这个bean的名字查找对应的处理器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" id="handlerMapping">
<property name="beanName" value="/hello"/>
</bean>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" id="handlerAdapter"/>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="viewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
2.7.配置web.xml加载springmvc配置文件
- 在web项目启动时,加载spring-servlet.xml配置文件,是在web.xml中完成的。
<?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.og/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-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
这个配置文件的意思是所有请求都被拦截下来后,请求会交给DispatcherServlet去处理,在加载DispatcherServlet时,还需要指定配置文件路径。这里有一个默认规则,如果配置文件放在webapp/WEB-INF/目录下,并且配置文件名字等于DispatcherServlet名字-servlet(webapp/WEB-INF/springmvc-servlet.xml),如果是这样的话可以不用添加init-param参数,即不用手动配置springmvc的配置文件,框架会自动加载。
2.8.配置tomcat服务器
在IDEA里的Run/Debug Configuration配置tomcat服务器
2.9.启动项目HelloWorld
- 点赞
- 收藏
- 关注作者
评论(0)