创建视图控制器
现在我们已经配置了 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>