[华为云在线课程][SpringMVC入门][一][简介][学习笔记]

举报
John2021 发表于 2022/07/13 07:21:27 2022/07/13
【摘要】 1.SpringMVC介绍Spring Web MVC是一种基于Java,实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将Web层进行解耦,基于请求驱动指的就是请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。在传统的JSP/Servlet技术体系中,如果要开发接口,一个接口对应一个Ser...

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工程

  1. 新建项目,不要选择从骨架创建

2.2.添加依赖

  1. 在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项目

  1. 在pom.xml中将打包方式改为war
<packaging>war</packaging>
  1. 点击File -> ProjectStructure -> Modules

  2. 将界面中的Language Level改为11

  3. 展开Modules中的项目文件夹点击Web

  4. 点击Deployment Descriptors旁边的+号添加web.xml

  5. 将默认路径改为:项目路径\src\main\webapp\WEB-INF\web.xml

2.4.新建前端处理接口

  1. 新建一个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.创建视图

  1. 在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配置文件

  1. 在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配置文件

  1. 在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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200