这一次搞懂SpringMVC原理说明

一、 SpringMVC 原理

SpringMVC 是 Spring 框架中的一个模块,是用来实现基于 Java 技术的 Web 应用程序开发的。下面介绍 SpringMVC 的原理。

  1. 请求 dispatcherServlet

当用户请求一个页面时,dispatcherServlet 是 SpringMVC 的入口点。dispatcherServlet 是一个 servlet,其类似于一个大管家,用来协调各种不同组件的请求处理。

  1. 处理器映射器

处理器映射器是用来处理用户请求与具体控制器之间的映射。SpringMVC 采用注解或者配置 XML 的方式来进行映射。

  1. 处理器适配器

处理器适配器根据请求的 URL 找到具体的控制器,并调用控制器中相应的方法。处理器适配器起到了一个适配的作用,具体协调哪个类那个方法进行处理。

  1. 控制器

控制器是处理器适配器找到的类。控制器中的方法会根据传进来的参数进行相应的处理,在这个过程中完成功能实现。

  1. 视图解析器

视图解析器根据方法返回的视图名,解析成相应的视图。视图解析器将逻辑视图名解析成为实际的物理视图地址。

  1. View

View 是视图层对象,主要负责渲染页面以及返回响应给客户端。

二、 示例

下面介绍如何使用 SpringMVC 和搭建一些简单的 Web 应用程序。

第一个示例,展示了如何配置 SpringMVC,使得可以返回一个简单的 String。

  1. 引入依赖

需要通过引入 SpringMVC 的依赖,来使用 SpringMVC。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
</dependency>
  1. 配置 DispatcherServlet

在 web.xml 文件中,配置 DispatcherServlet。

<servlet>
     <servlet-name>mvc-dispatcher</servlet-name>
     <servlet-class>
         org.springframework.web.servlet.DispatcherServlet
     </servlet-class>
     <init-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
 </servlet>

 <servlet-mapping>
     <servlet-name>mvc-dispatcher</servlet-name>
     <url-pattern>/</url-pattern>
 </servlet-mapping>
  1. 配置 Controller
@Controller
@RequestMapping("/")
public class MainController {
      @RequestMapping(method = RequestMethod.GET)
       public String printHello(ModelMap model) {
           model.addAttribute("message", "Hello SpringMVC Framework!");
           return "hello";
       }
}
  1. 配置模板引擎

在 mvc-dispatcher-servlet.xml 中,配置模板引擎。

<bean id="viewResolver"
     class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="prefix">
         <value>/WEB-INF/pages/</value>
     </property>
     <property name="suffix">
         <value>.jsp</value>
     </property>
 </bean>
  1. 配置视图

在 /WEB-INF/pages/ 目录下创建 hello.jsp 文件。文件内容如下:

<html>
   <body>
       <h2>${message}</h2>
   </body>
</html>

运行代码,访问 URL:http://localhost:8080/,即可在页面上看到“Hello SpringMVC Framework!”。

第二个示例,展示了一个简单的表单提交,以及返回结果。

  1. 配置表单

表单页面包含了一个输入框和一个提交按钮。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>表单页</title>
</head>
<body>
    <form action="show" method="post">
        <input type="text" name="name">
        <input type="submit" value="提交">
    </form>
</body>
</html>
  1. 配置 Controller

Controller 包含了一个方法来接受表单提交,并返回结果。

@Controller
public class MainController {
    @RequestMapping("show")
    public ModelAndView show(String name) {
        ModelAndView modelAndView = new ModelAndView("result");
        modelAndView.addObject("name", name);
        return modelAndView;
    }
}
  1. 配置视图

在 /WEB-INF/pages/ 目录下创建 result.jsp 文件。文件内容如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>结果页</title>
</head>
<body>
    <h2>你输入的名字是:${name}</h2>
</body>
</html>

运行代码,访问 URL:http://localhost:8080/index.jsp,即可提交表单并在结果页面得到返回结果。

以上就是 SpringMVC 的基本原理以及简单的示例,希望可以帮到你。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:这一次搞懂SpringMVC原理说明 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • SpringBoot+Mybatis实现登录注册的示例代码

    以下是详细的攻略: Step 1:环境搭建 首先需要安装JDK、Maven以及Spring Boot Step 2:新建Spring Boot项目 新建一个Spring Boot项目,选择Maven项目类型。在pom.xml文件中添加Mybatis和MySQL驱动的依赖即可。 Step 3:配置数据库 在application.properties文件中配置…

    Java 2023年5月20日
    00
  • Springboot通用mapper和mybatis-generator代码示例

    下面是关于“Springboot通用mapper和mybatis-generator代码示例”的完整攻略: 一、什么是Springboot通用mapper和mybatis-generator 1. Springboot通用mapper Springboot通用mapper是一款能够提高数据访问的工具,主要用于深度整合Mybatis和Spring Data J…

    Java 2023年5月20日
    00
  • Spring Data JPA的Audit功能审计数据库的变更

    下面我来详细讲解Spring Data JPA的Audit功能审计数据库的变更的完整攻略。 什么是Spring Data JPA的Audit功能 Spring Data JPA的Audit功能是指将数据的变更操作记录下来,包括数据的新增、删除、修改等操作。通过Audit功能,我们可以了解数据的变更历史,并且可以追溯数据的操作者、操作时间等信息。 如何使用Sp…

    Java 2023年5月20日
    00
  • MyBatis自定义typeHandler的完整实例

    针对“MyBatis自定义typeHandler的完整实例”这个问题,我将会提供一份详细攻略。 什么是 MyBatis TypeHandler? MyBatis 的 TypeHandler 可以实现 Java 数据类型(如 String, Date 等)和 JDBC 对象之间的转换。MyBatis 会自动寻找合适的 TypeHandler 来执行转换,并且你…

    Java 2023年6月15日
    00
  • 快速建立Servlet和JSP的运行、调试和编译环境

    快速建立Servlet和JSP的运行、调试和编译环境的攻略如下: 环境准备 安装JDK 前往Oracle官网下载JDK安装包(根据操作系统和位数选择相应版本):https://www.oracle.com/technetwork/java/javase/downloads/index.html 下载完成后,按照安装提示进行安装并配置环境变量。 安装Tomca…

    Java 2023年5月19日
    00
  • Java实现监控多个线程状态的简单实例

    下面是Java实现监控多个线程状态的简单实例的完整攻略。 监控线程状态概述 Java中提供了一些API可以用来监控线程的状态。线程状态通常包括:NEW(新生)、RUNNABLE(运行)、BLOCKED(阻塞)、WAITING(等待)、TIMED_WAITING(定时等待)和TERMINATED(终止)。 实现步骤 下面是Java实现监控多个线程状态的简单实例…

    Java 2023年5月18日
    00
  • Java获取精确到秒的时间戳方法

    当我们需要获取当前时间的时间戳时,可以使用Java提供的System.currentTimeMillis()方法,该方法返回的是自1970年1月1日零时零分零秒(GMT/UTC)以来的毫秒数,也就是常说的Unix时间戳。但有时候我们需要获取精确到秒的时间戳,可以通过以下两种方式实现。 1. 使用Java 8中的Instant类 Java 8中新增了一个新的日…

    Java 2023年5月20日
    00
  • springmvc项目使用@Valid+BindingResult遇到的问题

    针对“springmvc项目使用@Valid+BindingResult遇到的问题”,我提供以下完整攻略: 1. 理解问题 经过实践和研究,我们发现当使用@Valid和BindingResult配合进行表单数据校验时,有时会遇到一些问题。 问题的根本原因在于BindingResult的处理方式与我们期望的不太一样,它不会使@Valid注解的校验失败,而是将校…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部