📅  最后修改于: 2023-12-03 15:35:03.502000             🧑  作者: Mango
Spring MVC 是一种基于 Java 的 MVC 框架,用于构建 Web 应用程序。它的灵活性和强大性使它成为现今最受欢迎的 Web 框架之一。
要开始使用 Spring MVC,需要将以下三个核心组件包含在你的 classpath 中:
除此之外,还需要在 web.xml 文件中配置 DispatcherServlet 和 Spring MVC 的配置文件。
<web-app>
<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/springmvc-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>
Spring MVC 使用 MVC(Model-View-Controller)架构模式,其中每个组件各自履行分离的职责:
控制器(Controller)是 Spring MVC 的核心组件之一,它处理用户请求,调用业务逻辑和数据持久化层,并将数据传递到视图层进行显示。
@Controller
@RequestMapping("/demo")
public class DemoController {
@RequestMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "Spring MVC Tutorial");
return "hello";
}
}
视图(View)是 Spring MVC 架构中的一个组件,它用于表示所渲染的 HTML 页面。Spring MVC 支持多种视图技术,如 JSP、Freemarker、Tiles 等。
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h2>${message}</h2>
</body>
</html>
Spring MVC 的拦截器拦截并预处理请求,它们的作用类似于过滤器。拦截器可以用于跨越不同的控制器和处理程序,同时通常用于记录日志和限制访问。
public class SimpleInterceptor implements HandlerInterceptor {
private static final Logger logger = LoggerFactory.getLogger(SimpleInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
logger.info("Before handling the request");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
logger.info("After handling the request");
}
}
Spring MVC 提供了丰富的表单处理功能,包括数据绑定、表单验证、表单视图渲染等。
@RequestMapping(value = "/user", method = RequestMethod.POST)
public ModelAndView submitUser(@Valid @ModelAttribute("user") User user, BindingResult result) {
if (result.hasErrors()) {
ModelAndView modelAndView = new ModelAndView("user");
modelAndView.addObject("user", user);
return modelAndView;
}
ModelAndView modelAndView = new ModelAndView("success");
return modelAndView;
}
Spring MVC 提供了简单易懂的异常处理机制。开发者可以定义自己的异常和对应的处理器来实现自定义异常处理逻辑。
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ModelAndView handleException(Exception ex) {
ModelAndView modelAndView = new ModelAndView("error");
modelAndView.addObject("message", ex.getMessage());
return modelAndView;
}
}
Spring MVC 是一种强大而灵活的 Web 框架,它提供了丰富的功能和易于使用的 API,方便开发人员快速构建高质量的 Web 应用程序。