📜  带有 JSP 视图的 Spring MVC

📅  最后修改于: 2022-05-13 01:56:53.038000             🧑  作者: Mango

带有 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 的相关WebApplicationContextWebApplicationContext包含 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”值的视图。