📜  使用基于Java的配置的Spring MVC

📅  最后修改于: 2021-04-17 01:53:31             🧑  作者: Mango

先决条件: MVC设计模式,带有JSP View的Spring MVC

Spring MVC框架可实现模块(模型视图控制器)的分离,并无缝处理应用程序集成。这使开发人员还可以使用普通的Java类来创建复杂的应用程序。可以使用地图在视图和控制器之间传递模型对象。在本文中,我们将看到如何在Eclipse IDE中设置Spring MVC应用程序,并了解如何制作应用程序。

Spring MVC框架由以下组件组成:

  • 模型:模型可以是基本包含应用程序数据的对象或对象集合。
  • 视图:视图用于以特定格式向用户显示信息。 Spring支持freemarkervelocitythymeleaf等各种技术。
  • 控制器:它包含应用程序的逻辑部分。 @Controller批注用于将该类标记为控制器。
  • 前端控制器:它仍然负责管理Web应用程序的流程。 DispatcherServelet在Spring MVC中充当前端控制器。

要求 :

  • Eclipse(EE版本)。
  • Tomcat Apache最新版本。

在Eclipse IDE中设置Spring MVC应用程序的步骤:

  • 步骤1:转到“文件”菜单,然后单击“新建” ->“ Maven项目”。
  • 步骤2:然后在搜索栏中,键入maven 。单击Maven项目,然后单击下一步
  • 步骤3:默认设置应保持不变。单击下一步。
  • 步骤4:为Web应用程序选择maven-archetype-webapp ,然后单击Next(下一步)
  • 步骤5:给出一些组ID以及工件ID
  • 第6步:右键单击该项目,然后转到属性
  • 步骤7:点击目标运行时。在系统中选择已安装的apache tomcat 。单击应用->应用并关闭。
  • 步骤8: Java文件应位于src / main / Java文件夹中,以构建spring MVC项目。转到项目中的src文件夹。右键单击main ,然后单击New- > Folder。
  • 步骤9:Java编写为文件夹名称。
  • 步骤10:src / main / Java文件夹下的com.geesforgeeks.springmvc内创建一个Java类。目录结构应如下所示。

    使用基于Java的配置来实现Spring Web MVC应用程序的步骤:

    • 步骤1:最初,我们需要创建一个POM.XML文件。该文件包含spring框架的maven依赖关系,以便在项目中使用它们。
      XML
      
        4.0.0
        com.geeksforgeeks
        SpringMVCjava
        war
        0.0.1-SNAPSHOT
        SpringMVCjava Maven Webapp
        http://maven.apache.org
        
          
          
            junit
            junit
            3.8.1
            test
          
            
          
            org.springframework
            spring-webmvc
            4.3.12.RELEASE
          
            
        
        
          SpringMVCjava
        
      


      Java
      package com.geeksforgeeks.web;
        
      import org.springframework.web
          .servlet.support
          .AbstractAnnotationConfigDispatcherServletInitializer;
        
      public class WebInitializer
          extends AbstractAnnotationConfigDispatcherServletInitializer {
        
          @Override
          protected Class[] getRootConfigClasses()
          {
              // TODO Auto-generated method stub
              return null;
          }
        
          @Override
          protected Class[] getServletConfigClasses()
          {
              // TODO Auto-generated method stub
              return new Class[] { MVCconfig.class };
          }
        
          @Override
          protected String[] getServletMappings()
          {
              // TODO Auto-generated method stub
              return new String[] { "/" };
          }
      }


      Java
      package com.geeksforgeeks.web;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;@Configuration@ComponentScan({ "com.geeksforgeeks.web" })public class MVCconfigextends WebMvcConfigurerAdapter {}


      Java
      package com.geeksforgeeks.web;
      import org.springframework
          .stereotype.Controller;
      import org.springframework.web
          .bind.annotation.RequestMapping;
      import org.springframework.web
          .servlet.ModelAndView;
        
      @Controller
      public class GreetController {
        
          @RequestMapping("/greet")
          public ModelAndView showview()
          {
        
              ModelAndView mv = new ModelAndView();
              mv.setViewName("result.jsp");
              mv.addObject("result",
                           "GeeksForGeeks Welcomes "
                               + "you to Spring!");
              return mv;
          }
      }


      HTML
      
      
      

      Hello World!

          
                   


      HTML
      <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
          pageEncoding="ISO-8859-1" isELIgnored="false"%>
      
      
          
              
              Insert title here
          
          
            
              

      ${result}

                       


    • 步骤2:项目包含一个web.xml文件,该文件接收来自客户端的所有请求。我们将使用WebInitializer。 Java代替web.xml。 getServletMappings()函数接收与“ /” URL映射相对应的所有请求。函数getServletConfigClasses()配置分派器servlet,并将处理程序转移到分派器servlet Java文件MVCconfig.class。 MVCconfig。 Java文件用于代替基于Java的配置的分派器servlet。此类应扩展AbstractAnnotationConfigDispatcherServletInitializer类,以达到基于Java的配置中web.xml文件的目的。该文件定义为:

      Java

      package com.geeksforgeeks.web;
        
      import org.springframework.web
          .servlet.support
          .AbstractAnnotationConfigDispatcherServletInitializer;
        
      public class WebInitializer
          extends AbstractAnnotationConfigDispatcherServletInitializer {
        
          @Override
          protected Class[] getRootConfigClasses()
          {
              // TODO Auto-generated method stub
              return null;
          }
        
          @Override
          protected Class[] getServletConfigClasses()
          {
              // TODO Auto-generated method stub
              return new Class[] { MVCconfig.class };
          }
        
          @Override
          protected String[] getServletMappings()
          {
              // TODO Auto-generated method stub
              return new String[] { "/" };
          }
      }
      
    • 步骤3:现在,我们需要创建一个MVCconfig。 Java文件。该文件代替调度程序servlet文件。用@Configuration注释一个类表示该类可以被Spring IoC容器用作Bean定义的源。为了能够自动检测带注释的控制器,需要将组件扫描添加到配置中。它还给出了基本软件包(即com.geeksforgeeks.web)的路径,其中需要搜索控制器文件。此类应扩展WebMvcConfigurerAdapter类以实现调度程序Servlet的目的。

      Java

      包com.geeksforgeeks.web;

      导入org.springframework.context
      .annotation.ComponentScan;
      导入org.springframework.context
      .annotation.Configuration;
      导入org.springframework.web.servlet
      .config。注释
      .WebMvcConfigurerAdapter;

      @配置
      @ComponentScan({“ com.geeksforgeeks.web”})

      公共类MVCconfig
      扩展WebMvcConfigurerAdapter {
      }

    • 步骤4:现在,我们需要定义一个控制器。控制器解释用户输入,并将其转换为由视图表示给用户的模型。 @RequestMapping批注用于将URL(例如“ / greet”)映射到整个类或特定的处理程序方法上。我们创建一个ModelAndView类的对象。 setViewName()指示要调用的视图,而addObject()指示要添加到该对象的动态内容。

      Java

      package com.geeksforgeeks.web;
      import org.springframework
          .stereotype.Controller;
      import org.springframework.web
          .bind.annotation.RequestMapping;
      import org.springframework.web
          .servlet.ModelAndView;
        
      @Controller
      public class GreetController {
        
          @RequestMapping("/greet")
          public ModelAndView showview()
          {
        
              ModelAndView mv = new ModelAndView();
              mv.setViewName("result.jsp");
              mv.addObject("result",
                           "GeeksForGeeks Welcomes "
                               + "you to Spring!");
              return mv;
          }
      }
      
    • 步骤5:现在,我们需要为应用程序创建一个索引页。命中给定URL时显示的页面。因此,我们如下创建index.jsp文件:

      的HTML

      
      
      

      Hello World!

          
                   
    • 步骤6:按下上述定义的index.jsp中的“按招呼”按钮时,将打开Result.jsp页面。因此,我们需要定义Result.jsp文件:

      的HTML

      <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
          pageEncoding="ISO-8859-1" isELIgnored="false"%>
      
      
          
              
              Insert title here
          
          
            
              

      ${result}

                       

      输出:

      • 打开index.jsp时:

      • 当按下按钮时: