让你五分钟彻底理解Spring MVC

让我来讲解一下“让你五分钟彻底理解Spring MVC”的攻略。

让我来讲解一下“让你五分钟彻底理解Spring MVC”的攻略。

1. 了解Spring MVC的架构

Spring MVC是基于Model-View-Controller(MVC)设计模式的Web框架,它通过Dispatcher Servlet和Handler Mapping来连接Web请求和处理器(Controller)。通过View Resolver将模型数据渲染成视图。其架构图如下:

                     +--------+             +--------+
    HTTP Request --> |        | --> Model -->|        |
                     |        |             |        |
     HTTP Response <--|        | <-- View <--|        |
                     |        |             |        |
        Dispatcher <--|        |  Controller |        |
                     |        |             |        |
               Event | Handler|             | View   |
                     +--------+             +--------+

如上所示,当一个HTTP请求到达Dispatcher Servlet时,在Handler Mapping的帮助下,将被派发到相应的Controller去处理,Controller通过使用Model来处理数据并返回对应的视图。View Resolver寻找和组织视图来呈现结果。最后,Dispatcher Servlet将结果返回给客户端,完成整个请求生命周期。

2. 配置Spring MVC

配置Spring MVC需要在web.xml文件中添加Dispatcher Servlet。这是一个标准的配置例子:

<web-app>
  <servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

在这个例子中,Dispatcher Servlet的名称是“dispatcher”,它的URL Pattern是“/”。我们可以在这里为Dispatcher Servlet添加属性(init-param),并指定相应的属性值,来进行更多的自定义配置。在Spring MVC中,配置文件是通过XML、注释或Java类进行的。

3. 创建Controller和View

首先,创建一个Controller来处理请求:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloWorldController {

  @RequestMapping("/hello")
  public ModelAndView helloWorld() {
    String message = "Hello Spring MVC!";
    return new ModelAndView("hello", "message", message);
  }
}

在上面的示例中,我们使用了“@Controller”注释将HelloWorldController类装载到Spring容器中,使用“@RequestMapping”注释指示URL请求路径是“/hello”。Controller返回一个ModelAndView,包括要呈现的视图名称和用于视图呈现的模型属性。

接下来,创建一个JSP视图hello.jsp作为Controller处理请求时要呈现的视图:

<html>
  <head>
    <title>Hello Spring MVC</title>
  </head>
  <body>
    <h1>${message}</h1>
  </body>
</html>

在上面的示例中,我们使用了EL表达式${message}来显示Controller传递给View的模型属性。

4.与Spring框架进行集成

在Spring框架中,我们使用ApplicationContext XML文件来配置应用程序。下面是一个简单的ApplicationContext XML文件配置示例:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  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-4.3.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-4.3.xsd
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">

  <mvc:annotation-driven />

  <bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">

    <property name="prefix">
      <value>/WEB-INF/views/</value>
    </property>

    <property name="suffix">
      <value>.jsp</value>
    </property>
  </bean>

  <context:component-scan base-package="com.example.controller" />

</beans>

在上面的示例中,我们使用了“”元素来开启基于注释的Spring MVC功能;使用“”元素来注册View Resolver,将JSP视图解析为真正的视图类型。还使用了“”元素启动自动扫描,以找到要使用的Controller类。

5.运行Spring MVC应用程序

现在,我们已经完成了整个配置。我们可以使用Java EE Web容器(如Tomcat)来运行这个Spring MVC应用程序。

假设应用程序部署在Tomcat服务器上,我们可以通过以下URL来访问我们的应用程序:

http://localhost:8080/hello

这将触发Spring MVC框架调用我们创建的HelloWorldController中指定的@RequestMapping注释,并返回HelloWorld视图,显示“Hello Spring MVC!”消息。

示例1:URL传递参数

假设我们想要在URL中传递参数,我们可以修改@RequestMapping注释来响应包含请求参数的URL,例如:

@RequestMapping(value = "/hello/{name}", method = RequestMethod.GET)
public ModelAndView hello(@PathVariable("name") String name) {
  return new ModelAndView("hello", "message", "Hello, " + name + "!");
}

在上面的示例中,我们添加了一个具有路径参数的新@RequestMapping注释,该参数表示传递给Controller的名称变量。@PathVariable注释表示Spring MVC将尝试将路径参数绑定到方法参数“name”上。

我们可以使用以下URL来访问此URL:

http://localhost:8080/hello/John

这将触发Spring MVC框架调用我们创建的HelloWorldController中指定的@RequestMapping注释,并返回HelloWorld视图,显示“Hello, John!”消息。

示例2:处理表单提交

假设我们想要从表单中获取数据,并将其传递给Controller进行处理。首先创建一个表单来收集数据:

<html>
  <head>
    <title>Spring MVC Form</title>
  </head>
  <body>
    <h2>Spring MVC Form</h2>
    <form method="post" action="greeting">
      Name:<br>
      <input type="text" name="name"><br>
      <input type="submit" name="submit" value="Submit">
    </form>
  </body>
</html>

在上面的示例中,我们创建了一个简单的表单来收集文本输入,包括名字和提交按钮。

然后我们创建一个新的RequestMapping注释来处理表单提交:

@RequestMapping(value = "/greeting", method = RequestMethod.POST)
public ModelAndView greeting(@RequestParam("name")String name) {
  return new ModelAndView("hello", "message", "Hello, "+name+"!");
}

在上面的示例中,我们将RequestMapping注释的方法改为POST,然后使用注释@RequestParam将name表单字段绑定到String类型的方法参数name上。

现在我们可以通过以下URL来访问Greeting页面:

http://localhost:8080/greeting

这将触发Greeting表单页面的加载。在表单中输入名字并单击提交按钮,将提交Greeting表单,并触发Spring MVC框架调用我们新创建的@RequestMapping注释中指定的Controller,以返回Hello World视图,显示“Hello, John!”(示例中输入的名字是John)。

这就是“让你五分钟彻底理解Spring MVC”的完整攻略,希望对你有所帮助。

本文标题为:让你五分钟彻底理解Spring MVC

基础教程推荐