SpringMVC框架基础知识(01)

简介: SpringMVC框架基础知识(01)

1. SpringMVC框架的作用


MVC = Model(数据模型) + View(视图) + Controller(控制器),MVC思想是建议每个项目中至少有这3种核心的角色,用于处理不同的问题,其中,Model表示的数据处理,例如数据的增删改查等,View表示软件的界面,Controller表示控制器,用于接收客户端提交到服务器端的请求,并在处理完请求后给予客户端响应结果。


在不同的技术领域,这种思想可能也不同,例如在一些客户端软件的开发中,会使用MVP、MVVP等思想。

SpringMVC框架是基于Spring框架的,所以,在SpringMVC中,会使用到Spring框架的作用,例如通过Spring框架来创建对象、管理对象,也会使用到Spring框架中的一些注解。


SpringMVC框架主要解决了V-C交互的问题,即:客户端将请求提交到服务器后,肯定是由服务器端的控制器接收请求,SpringMVC就解决了如何接收请求(包含请求中的参数等)的问题,当服务器端处理完请求之后,应该给予客户端响应结果,SpringMVC也解决了如何响应的问题!事实上,SpringMVC框架与“M”完全没有任何关系,所以,在SpringMVC的学习过程中,完全不考虑数据的增删改查相关数据库技术。


2. 为什么要使用SpringMVC框架


……


3. SpringMVC HelloWorld


【案例目标】


写完项目后,运行项目,打开浏览器,输入http://localhost:8080/项目名称/hello.do即可看到预期显示的内容。


【准备工作】


在Eclipse中找到Servers面板,如果当前没有配置Tomcat,则点击该面板中的链接即可开始添加Tomcat!


如果Eclipse中没有显示Servers面板,则点击Window菜单的ShowView的Other选项,并在弹出的对话框输入Servers进行筛选,即可打开该面板!

在添加Tomcat的对话框中,结合本机中已有的Tomcat版本进行选择,然后,在对话框的第2个界面中浏览到本机的Tomcat文件夹,即可完全配置。


配置完成后,在Servers面板中就会出现刚才配置的Tomcat,同时,在项目列表中还会出现名为Servers的项目,该项目表示Tomcat的配置,在使用Tomcat的过程中,该项目必须是打开的,如果关闭了,Tomcat将无法启动!


【创建项目】


创建新的Maven Project,在创建过程中勾选Create a simple project,Group Id填为cn.tedu,Artifact Id填为springmvc01,Packaging必须选择war。


如果创建的项目是客户端项目,是通过某个类的main()方法启动的项目,应该选择jar;如果创建的项目是服务器端项目,是需要运行在Tomcat上的,就要选择war。

在Eclipse中,创建的war项目默认会报错,因为在项目中缺少web.xml文件,但是,war项目并不一定需要该文件!可以在pom.xml中添加以下配置:


<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
</properties>


当然,以上配置也可以结合关于开发、编译版本的配置为:


<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

并且,继续在pom.xml中添加spring-webmvc的依赖:


<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.5.RELEASE</version>
    </dependency>
</dependencies>

最后,对项目点右键,选择Properties,并在弹出的项目属性对话框中,左侧选择Targeted Runtimes,在右侧勾选Tomcat。


【使用SpringMVC框架处理请求】


首先,在项目中创建cn.tedu.spring包,用于存放相关文件;


然后,自定义某个类(类名可以自定义),继承自AbstractAnnotationConfigDispatcherServletInitializer类:


package cn.tedu.spring;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class SpringMvcInitializer extends
  AbstractAnnotationConfigDispatcherServletInitializer {
  @Override
  protected Class<?>[] getRootConfigClasses() {
  // TODO Auto-generated method stub
  return null;
  }
  @Override
  protected Class<?>[] getServletConfigClasses() {
  // TODO Auto-generated method stub
  return null;
  }
  @Override
  protected String[] getServletMappings() {
  // TODO Auto-generated method stub
  return null;
  }
}


由于AbstractAnnotationConfigDispatcherServletInitializer是抽象类,所以,继承之后,需要重写其中的3个抽象方法:


getRootConfigClasses():获取Spring的配置类,在简单的SpringMVC项目中,也许并不需要编写任何Spring环境的配置,则该方法返回null即可,后续,如果整合MyBatis框架或其它框架时,可能需要编写相关配置;

getServletConfigClasses():获取SpringMVC的配置类,SpringMVC的配置类可以自定义,且必须实现WebMvcConfigurer接口;

getServletMappings():获取框架所处理的请求的路径,假设所有以.do为后缀的请求都需要被SpringMVC框架处理,则可以配置为*.do。

例如,可以将以上方法重写为:

package cn.tedu.spring;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
  @Override
  protected Class<?>[] getRootConfigClasses() {
    return null;
  }
  @Override
  protected Class<?>[] getServletConfigClasses() {
    return new Class[] { SpringMvcConfigurer.class };
  }
  @Override
  protected String[] getServletMappings() {
    return new String[] { "*.do" };
  }
}


以上SpringMvcInitializer类的作用就类似于web.xml的作用!例如,后续,当项目中需要使用到Filter组件时,也可以在这个类中添加配置!

接下来,在SpringMVC的配置类SpringMvcConfigurer的声明之前配置组件扫描:


package cn.tedu.spring;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@ComponentScan("cn.tedu.spring")
public class SpringMvcConfigurer implements WebMvcConfigurer {
}


注意:在SpringMVC项目中,组件扫描必须配置在SpringMVC的配置类之前,不可以只配置在Spring的配置类之前!


在原生的Java EE技术中,控制器类就是一个个自定义的Servlet类,需要继承自HttpServlet的!而在SpringMVC项目中,控制器类不需要继承自某个特定的类,也不需要实现任何接口,仅有的要求是:


必须放在组件扫描的包中;

必须添加@Controller注解。

如果需要SpringMVC框架处理某个路径的请求,需要在控制器类中自定义方法,然后在方法内部编写代码进行处理,关于方法的声明:


在方法的声明之前添加@RequestMapping注解,用于配置处理哪个路径的请求;

应该使用public权限;

返回值类型暂时使用String类型;

方法的名称可以自定义;

方法的参数列表暂时为空。


目录
相关文章
|
21天前
|
设计模式 前端开发 Java
步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理
通过对 `DispatcherServlet`源码的深入剖析,我们了解了SpringMVC请求处理的全流程。`DispatcherServlet`作为前端控制器,负责请求的接收和分发,处理器映射和适配负责将请求分派到具体的处理器方法,视图解析器负责生成和渲染视图。理解这些核心组件及其交互原理,有助于开发者更好地使用和扩展SpringMVC框架。
33 4
|
2月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
150 2
|
3月前
|
JSON 前端开发 Java
SSM:SpringMVC
本文介绍了SpringMVC的依赖配置、请求参数处理、注解开发、JSON处理、拦截器、文件上传下载以及相关注意事项。首先,需要在`pom.xml`中添加必要的依赖,包括Servlet、JSTL、Spring Web MVC等。接着,在`web.xml`中配置DispatcherServlet,并设置Spring MVC的相关配置,如组件扫描、默认Servlet处理器等。然后,通过`@RequestMapping`等注解处理请求参数,使用`@ResponseBody`返回JSON数据。此外,还介绍了如何创建和配置拦截器、文件上传下载的功能,并强调了JSP文件的放置位置,避免404错误。
|
4月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
|
3月前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
67 2
|
3月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
233 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
4月前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向
|
5月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
5月前
|
XML JSON 数据库
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
这篇文章详细介绍了RESTful的概念、实现方式,以及如何在SpringMVC中使用HiddenHttpMethodFilter来处理PUT和DELETE请求,并通过具体代码案例分析了RESTful的使用。
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
|
5月前
|
前端开发 应用服务中间件 数据库
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
这篇文章通过一个具体的项目案例,详细讲解了如何使用SpringMVC、Thymeleaf、Bootstrap以及RESTful风格接口来实现员工信息的增删改查功能。文章提供了项目结构、配置文件、控制器、数据访问对象、实体类和前端页面的完整源码,并展示了实现效果的截图。项目的目的是锻炼使用RESTful风格的接口开发,虽然数据是假数据并未连接数据库,但提供了一个很好的实践机会。文章最后强调了这一章节主要是为了练习RESTful,其他方面暂不考虑。
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查

热门文章

最新文章