springMVC 01 ------- springMVC入门及环境搭建

一、springMVC入门

  1. SpringMVC简介
    MVC 是把 Web 应用程序分为三层,分别是:

    • 控制器(Controller):负责接收并处理请求,响应客户端;
    • 模型(Model):模型数据,业务逻辑;
    • 视图(View):呈现模型,与用户进行交互;

    SpringMVC相当于spring的一个子框架,所以SpringMVC与spring能够天然的结合使用,无需整合。

    访问的流程:
    访问流程

  2. SpringMVC核心组件

组件 名称 作用
DispatcherServlet 前置控制器 用来控制其他组件的执行,进行统一的调度,降低各个组件的耦合性
Handler 处理器 完成具体业务逻辑
HandlerMapping 将请求映射到Handler
HandlerInterceptor 处理器拦截器 是一个拦截处理的接口
HandlerExecutionChain 处理器执行链 包括一个Handler和一个except
HandlerAdapter 处理器适配器 DispatcherServlet通过HandlerAdapter执行不同的Handler
ModelAndView 装载模型数据和视图(逻辑视图)信息作为Handler的处理结果返回给 DispatcherServlet
ViewResolver 视图解析器 将逻辑视图解析为物理视图,之后将结果返回给客户端
  1. SpringMVC工作流程
    • 客户端请求提交到DispatcherServlet
    • 由DispatcherServlet控制器寻找一个或多个HandlerMapping,找到处理请求的Controller
    • DispatcherServlet将请求提交到Controller
    • Controller调用业务逻辑处理后返回ModelAndView
    • DispatcherServlet寻找一个或多个ViewResolver视图解析器,找到ModelAndView指定的视图
    • 视图负责将结果显示到客户端
      SpringMVC工作流程

二、实现一个springMVC

  1. 基于xml方式实现springMVC

    1. 创建一个Maven项目

    2. 导入springMVC所需要的依赖

      <dependencies>
      	<dependency>
      		<groupId>junit</groupId>
      		<artifactId>junit</artifactId>
      		<version>4.11</version>
      		<scope>test</scope>
      	</dependency>
      
      	<dependency>
      		<groupId>org.springframework</groupId>
      		<artifactId>spring-webmvc</artifactId>
      		<version>5.1.6.RELEASE</version>
      	</dependency>
      </dependencies>
      
    3. web.xml中配置DispatcherServlet

      <!--配置springMVC的servlet:DispatcherServlet-->
      <servlet>
      	<servlet-name>springMVC</servlet-name>
      	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      	
      	<!--指定springMVC文件的路径-->
      	<init-param>
      		<param-name>contextConfigLocation</param-name>
      		<param-value>classpath:springMVC.xml</param-value>
      	</init-param>
      </servlet>
      
      <!--拦截所有的请求-->
      <servlet-mapping>
      		<servlet-name>springMVC</servlet-name>
      		<url-pattern>/</url-pattern>
      </servlet-mapping>
      
    4. 实现一个Handler

      /**
      * 自己去实现Handler
      * 要继承 Controller 类
      */
      public class MyHandler implements Controller {
      	@Override
      	public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
      
      		//装载模型数据和逻辑视图
      		ModelAndView modelAndView = new ModelAndView();
      
      		//添加模型数据
      		modelAndView.addObject("name","tom");
      
      		//添加逻辑视图,这里由视图解析器将逻辑视图进行解析,所以不需要加前后缀
      		modelAndView.setViewName("show");
      		return modelAndView;
      	}
      }
      
    5. 配置SpringMVC.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
      	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
      
      	<!--配置一个HandlerMapping,将URL请求映射到-->
      	<bean id="HandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
      		<property name="mappings">
          		<props>
              		<!--配置 /test 请求对应的Handler-->
              		<prop key="/test">testHandler</prop>
          		</props>
      		</property>
      	</bean>
      
      	<!--配置Handler-->
      	<bean id="testHandler" class="MyHandler"></bean>
      
      	<!--配置视图解析器-->
      	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      		<property name="prefix" value="/"></property>
      		<property name="suffix" value=".jsp"></property>
      	</bean>
      </beans>
      
    6. 实现视图show.jsp

    7. 运行项目,访问 /test

  2. 基于注解的方式实现一个springMVC

    1. 在springMVC.xml中添加一个自动扫描

      <!--将AnnotationHandler自动扫描到IOC容器中-->
      <context:component-scan base-package="com.springdemo.controller"></context:component-scan>
      
    2. 实现Handler

      @Controller
      public class AnotationHandler {
      
      	@RequestMapping("/test")
      	public ModelAndView test(){
      	
      		//装载模型数据和逻辑视图
      		ModelAndView modelAndView = new ModelAndView();
      
      		//添加模型数据
      		modelAndView.addObject("name","tom");
      
      		//添加逻辑视图,这里由视图解析器将逻辑视图进行解析,所以不需要加前后缀
      		modelAndView.setViewName("show");
      		return modelAndView;
      	}
      }
      

      业务方法还可以使用其他两种方法实现:

      1. 使用Model传值,String解析视图
        @Controller
        public class AnotationHandler {
        
        	@RequestMapping("/test")
        	public String  test(Model model){
        	
        		model.addAttribute("name", "Tom");
        		return "show";
        		
        	}
        }
        
      2. 使用Map传值,String解析视图
        @Controller
        public class AnotationHandler {
        
        	@RequestMapping("/test")
        	public String  test(Map<String,String> map){
        		map.put("name", "Tom");
        		return "show";
        	}
        }
        

原文地址:SpringMVC框架01--------使用IDEA搭建SpringMVC环境   潘亚的博客

猜你喜欢

转载自blog.csdn.net/f2764052703/article/details/90477290