带有 JSP 视图的 Spring MVC
Spring MVC 架构使用“FrontController”设计模式,这是任何 MVC 设计实现的基础。 DispatcherServlet 是此设计的核心,其中 HTTP 请求被委托给控制器,视图被解析为底层视图技术,此外还提供对上传文件的支持。与任何常规 servlet 一样,DispatcherServlet 可以与自定义处理程序映射一起配置。
Spring MVC 框架支持模型、视图和控制等模块的分离,并无缝处理应用程序集成。这使开发人员也可以使用普通的Java类来创建复杂的应用程序。模型对象可以使用 Maps 在视图和控制器之间传递。此外,还提供了对类型不匹配的验证和用户界面中的双向数据绑定支持。使用 spring 表单标签、模型对象和注释可以在用户界面中轻松提交表单和绑定数据。
本文讨论了开发 Spring Web MVC 应用程序所涉及的步骤,解释了 Spring 中 MVC 应用程序的初始项目设置。 JSP(Java Server Pages)被用作一种视图技术。
以下是 Spring Web MVC 的依赖项。虽然 spring-web MVC jar 足以满足开发 MVC 应用程序的所有容器要求,但 JSP 包含 JSTL-jar:
pom.xml 中的依赖关系
org.springframework
spring-webmvc
4.3.7
jstl
jstl
1.2
javax.servlet
javax.servlet-api
3.0.1
provided
DispatcherServlet 将在 web.xml 中配置如下。侦听器类ContextLoaderListener将加载根应用程序上下文并将句柄传输到 servlet-mapping 元素中提到的调度程序 servlet。与“/”URL 映射对应的所有请求都将由该调度程序 servlet 处理。
web.xml
SampleMVC
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
/WEB-INF/mvc-dispatcher-servlet.xml
mvc-dispatcher
org.springframework.web.servlet.DispatcherServlet
1
mvc-dispatcher
/
/index.html
可以使用 context-param contextConfigLocation在默认位置 'servletName'-servlet.xml 中找到调度程序 servlet 的相关WebApplicationContext 。 WebApplicationContext包含 MVC 特定的配置,包括视图解析器、数据源、消息源、多部分解析器(文件上传)等。
WEB-INF/mvc-dispatcher-servlet.xml
在上面的 XML 中,带有上下文命名空间的元素 component-scan 将扫描所有组件类以查找基础包中的注释(@Component 、@Configuration、@Service、@Repository、@Autowired ),并初始化 bean。 MVC 命名空间中的元素注解驱动将扫描和初始化@Controller注解的组件。
MVC 命名空间中的元素 default-servlet-handler 扩展了默认的 HTTP 调度程序 servlet,以还为位于 web-root 中的静态资源的请求提供服务。
我们还初始化了一个 id 为“viewProvider”的 bean,用于渲染 .jsp 页面。 InternalResourceViewResolver类将接受前缀和后缀参数来构造查看页面的路径。例如,如果控制器类返回一个名为“greet”的视图,那么视图解析器类将通过附加给定的后缀和前缀字符串将相对于 web-root 的路径标识为“/greet.jsp”。
最后,将成为视图的 .jsp 文件。我们将一个属性从控制器类发送到视图,该属性将在点击匹配的 URL 时显示。
问候.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" isELIgnored="false" %>
Start Spring MVC
Start here
${greeting}
控制器类代码如下。
@GetMapping(value = "/")
public ModelAndView firstView()
{
ModelAndView mav = new ModelAndView("greet");
// must match the jsp page name which is being requested.
mav.addObject("greeting", "GeeksForGeeks Welcomes you to Spring!");
return mav;
}
请检查下面显示控制器中提供的字符串“greeting”值的视图。