01.springMVC初接触

61 阅读2分钟

springMVC框架简介

image-20230316153216243

SpringMVC是spring为展现层提供的基于MVC设计理念的优秀WEB框架,是目前最主流的MVC框架之一

SpringMVC通过一套注解,可以让普通的JAVA类成为contrllor控制器,无需继承Servlet,实现了控制层和Servlet之间的解耦 。

SpringMVC支持Rest风格的URL写法

SpringMVC采用了松耦合,可热插的主键结构,比其他的框架更具扩展性和灵活性

官网地址:spring.io/

MVC含义

  • M : model 模型层
  • V:view 视图层
  • C:controller 控制层

忆苦思甜-传统servlet

本节目的是采用servlet的方式,来实现一个http请求和响应。回忆一下,已经逝去的岁月。

1. 通过骨架创建一个Maven项目

image-20230316155512780

image-20230316155803388

image-20230316160025635

2. 补充项目结构文件夹并标记

image-20230316160348044

创建好目录后,选中目录,右击 mark directory as 选择对应目录类型即可。

3. 修改web.xml

采用4.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">
</web-app>

4. 导入servlet和jsp依赖

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.3</version>
    <scope>provided</scope>
</dependency>

5. 编写servlet

仅仅是跳转到到一个jsp页面

/**
 * 实现Servlet
 *
 * @author 老马
 * @date 2023-03-16 11:23
 */
@WebServlet("/demo")
public class MyServlet extends HttpServlet {
​
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
        req.getRequestDispatcher("first.jsp").forward(req,resp);
    }
}

6.first.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>fistJSP</title>
</head>
<body>
    第一个jsp页面!
</body>
</html>

7. 代码地址

gitee.com/mayuanfei/s…下的springmvc01

忆苦思甜-SpringMVC

本节是把上面用Servlet实现的方式采用SpringMVC再次实现一遍。对比一下。

1. pom文件中引入依赖

<dependencies>
​
    <!--springMVC支持包-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.25</version>
    </dependency>
​
    <!-- servlet jsp -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.3</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

2. 配置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.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--配置DispatcherServlet -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--配置初始化参数,读取springMVC的核心配置文件的位置和名称-->
        <!--
        当然,不使用initparam,springMVC会到一个默认路径下读取默认名称的.xml配置文件
        默认路径为/WEB-INF/
        默认配置文件名为:<servlet-name>-servlet.xml
        我们暂时不推荐这种方式
        -->
        <init-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>classpath:springmvc.xml</param-value>
         </init-param>
        <!--Web容器启动立即初始化servlet-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--配置dispatcherServlet的映射路径为 / 包含全部的servlet,  JSP除外-->
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

3. resource目录下添加springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
​
       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/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
">
    <!--配置spring包扫描-->
    <context:component-scan base-package="com.mayuanfei"/>
    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

4. 编写controller类

@Controller
@RequestMapping("/laoma")
public class MyController {
    @RequestMapping("/first")
    public String first() {
        System.out.println("hello world");
        return "first";
    }
}

5. 代码地址

gitee.com/mayuanfei/s…下的springmvc02

记忆印记

  • 最初的servlet要继承HttpServlet,而且一个类仅仅能实现一个请求
  • springMVC可以在一个类中实现对多个请求的响应。
  • 通过配置视图解析器可以简化返回的页面路径。
  • springMVC这个年代更多还是前后台绑在一起开发的