SpringMVC的视图控制器(二)

2023-05-13 15:35:53 浏览数 (1)

创建视图控制器

现在我们已经配置了 SimpleUrlHandlerMapping 和 InternalResourceViewResolver,可以使用它们来创建视图控制器了。要创建视图控制器,需要创建一个带有 @Controller 注解的类,并在这个类中添加用于处理 URL 的方法。这些方法将使用 InternalResourceViewResolver 来将视图名称解析为实际的视图,并将这些视图呈现给用户。下面是一个创建视图控制器的示例:

代码语言:javascript复制
@Controller
public class ViewController {
    
    @RequestMapping("/home")
    public String home() {
        return "home";
    }
    
    @RequestMapping("/about")
    public String about() {
        return "about";
    }
}

在上面的代码中,我们创建了一个带有 @Controller 注解的 ViewController 类,并添加了两个处理 URL 的方法,分别用于处理 /home 和 /about URL。这些方法返回视图名称,而不是实际的视图。SpringMVC 将使用 InternalResourceViewResolver 将这些视图名称解析为实际的视图,并将这些视图呈现给用户。

将视图控制器添加到 DispatcherServlet

现在我们已经创建了视图控制器,需要将它们添加到 SpringMVC 的 DispatcherServlet 中。要将视图控制器添加到 DispatcherServlet,需要在 SpringMVC 的配置文件中添加以下内容:

代码语言:javascript复制
<context:component-scan base-package="com.example.controller" />
<mvc:annotation-driven />

在上面的代码中,我们首先使用 component-scan 元素扫描带有 @Controller 注解的类。然后,我们使用 annotation-driven 元素启用 SpringMVC 的注解驱动。这将告诉 SpringMVC 使用带有 @RequestMapping 注解的方法来处理 URL。

示例代码

为了演示视图控制器的使用,我们可以创建一个简单的 SpringMVC 应用程序,该应用程序包含一个 HomeController 和一个 AboutController,它们分别用于处理 /home 和 /about URL。我们将使用 InternalResourceViewResolver 将视图名称解析为 JSP 视图,并将这些视图呈现给用户。

首先,我们需要创建一个名为 web.xml 的 Web 应用程序部署描述符文件,该文件将 DispatcherServlet 映射到应用程序的根 URL:

代码语言:javascript复制
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
 
    <display-name>SpringMVC Example</display-name>
 
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
 
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
 
</web-app>

0 人点赞