Spring-MVC快速入门实例

Spring-MVC快速入门实例 实例代码:D:\IdeaWorkspaces\Spring-MVC web请求流程图: 原文链接:https://blog.csdn.net/jiadajing267/article/details/81010741 Spring-MVC快速入门实例 执行流程   1、用户发送请求到前端控制器DispatcherServlet 2、DispatcherServlet收到请求调用处理映射器HandlerMapping 3、处理映射器根据请求url找到具体的处理器,生成处理器执行链HandlerExecutionChain(包含处理器对象和处理器拦截器)返回给DispatcherServlet 4、DispatcherServlet根据处理器Handler获取对应的适配器 5、HandlerAdapter调用处理器Handler 6、Handler(Controller)执行完成后返回ModelAndView 7、HandlerAdapter返回ModelAndView 8、DispatcherServlet统一将返回的ModelAndView派送到ViewResolve(视图解析器)解析 9,视图解析器解析之后返回View 10、对View进行渲染 11、响应用户 调用流程 Spring-MVC快速入门实例   DispatcherServlet中使用的Bean DispatcherServlet默认使用WebApplicationContext作为上下文,因此我们来看一下该上下文中有哪些特殊的Bean: 1、Controller:处理器/页面控制器,做的是MVC中的C的事情,但控制逻辑转移到前端控制器了,用于对请求进行处理; 2、HandlerMapping:请求到处理器的映射,如果映射成功返回一个HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象;如BeanNameUrlHandlerMapping将URL与Bean名字映射,映射成功的Bean就是此处的处理器; 3、HandlerAdapter:HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;如SimpleControllerHandlerAdapter将对实现了Controller接口的Bean进行适配,并且掉处理器的handleRequest方法进行功能处理; 4、ViewResolver:ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;如InternalResourceViewResolver将逻辑视图名映射为jsp视图; 5、LocalResover:本地化解析,因为Spring支持国际化,因此LocalResover解析客户端的Locale信息从而方便进行国际化; 6、ThemeResovler:主题解析,通过它来实现一个页面多套风格,即常见的类似于软件皮肤效果; 7、MultipartResolver:文件上传解析,用于支持文件上传; 8、HandlerExceptionResolver:处理器异常解析,可以将异常映射到相应的统一错误界面,从而显示用户友好的界面(而不是给用户看到具体的错误信息); 9、RequestToViewNameTranslator:当处理器没有返回逻辑视图名等相关信息时,自动将请求URL映射为逻辑视图名; 10、FlashMapManager:用于管理FlashMap的策略接口,FlashMap用于存储一个请求的输出,当进入另一个请求时作为该请求的输入,通常用于重定向场景,后边会细述。       Spring-MVC快速入门实例     Spring-MVC快速入门实例     2、实例开发步骤 本项目详细执行流程: 1、启动tomcat服务器 2、服务器访问默认项目目录http://localhost:8088/Spring_MVC_war_exploded/ 到web.xml找到welcome file 如果没有 就默认访问index.jsp 3、点击连接hello 4、地址url变为Request URL: http://localhost:8088/Spring_MVC_war_exploded/hello 5、地址传递到web.xml的dispatcherServlet前置控制器( MVC C层核心控制器)该控制器拦截了所有访问本项目的url地址。 6、待补充 没搞懂!!!! 1)准备maven -webapp项目 2)pom.xml导入依赖spring-webmvc
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.2.10.RELEASE</version>
</dependency>

  

3)创建controller包 创建一个HelloController.java @Controller 注解方式在IOC容器创建bean @RequestMapping("/hello")注解映射请求路径 RequestMapping注解使用参考文章https://blog.csdn.net/zalan01408980/article/details/82904126
package com.zb.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {
    @RequestMapping("/hello")
    public String haha(){
        System.out.println("Controller");
        //指定到WEB-INF/jsp下的success.jsp文件
        return "success";
    }
}

  

4)创建resource包创建一个spring-mvc.xml配置文件 配置组件扫描 指定要扫描的包 包里的所有已经注解的类和方法都会被在IOC容器内创建bean对象 视图解析器 参考文章:https://blog.csdn.net/weixin_40277684/article/details/100596257  
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--    组件扫描  扫描注解-->
    <context:component-scan base-package="com.zb.controller"/>
    <!-- 视图解析器 resourceView  在Controller注解的类的方法中收到返回值
        再将返回值与前缀prefix的值WEB-INF/jsp/拼接
        与suffix的值.jsp拼接
    -->
    <bean id="resourceView" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <mvc:annotation-driven/>
</beans>

 

5)配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <!--dispatcherServlet前置控制器  MVC C层核心控制器-->
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <!-- dipatcherServlet加载springIOC容器-->
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <!--1指在web容器加载时 就加载dispatcherServlet-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <!--/ 表示dispatcherServlet拦截所有用户请求url 除了后缀为.jsp的文件url-->
        <!-- /*  表示拦截所有文件url-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
</web-app>

 

6)创建View视图层(即jsp) 创建 WEB-INF/jsp/success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>success</title>
</head>
<body>
<h1>hello world!!!!haha</h1>
</body>
</html>
index.jsp
<html>
<body>
<a href="hello"> <h2>Hello World!</h2></a>
</body>
</html>

 

  7)部署tomcat服务器 测试  
上一篇:SpringMVC工作原理图解


下一篇:SpringMVC日常笔记记录02--springmvc请求处理过程