(2019.7)能让springMVC跑起来的条件

2024-01-31 23:18

本文主要是介绍(2019.7)能让springMVC跑起来的条件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

   springMVC是用来负责管理页面和后台的交互的。他就像是一个管家一样。什么事先经过我,我我虽然不能处理,但是我能给你找人处理。这里我把springMVC称为是老管家。

    # # 老管家都干了什么事呢?

  首先是将前端的请求页面拦截下来,因为我们在前端URL地址栏输入请求地址,是希望后台给我们处理的。不使用框架的话,就直接处理,但是处理起来过程有点麻烦。

  • 1.  想要让老管家来管这件事,就要找老管家来:(引入springMVC的相关jar包,或者使用Maven的话,就引入相关的依赖)。于是老管家来了。

  老管家干的第一件事是拦截请求,这要怎么做呢?

  •  2. 在web.xml文件中加入配置,这样请求就可以给老管家管理了
 <!-- 配置springmvc的前端控制器 指向spring-mvc.xml 程序在启动的时候就加载springmvc 可以接受所有请求 load-on-startup:表示启动容器时初始化该Servlet; --><servlet><servlet-name>springServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 可以自定义servlet.xml配置文件的位置和名称, 默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml --><!-- 这个就是用来加载springMVC的配置文件的,在配置文件中开启包扫描,扫描可以发现控制器,发现请求映射--><init-param><param-name>contextConfigLocation</param-name><!-- 这个是SSM整合后的配置文件的路径,如果单独只是使用springMVC的话,就单独弄一个配置文件就可以了 --><param-value> classpath:spring/applicationContext.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><!-- 将前端URL请求和后台处理方法controller建立对应关系--><servlet-mapping><servlet-name>springServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
  • 上边的配置文件提到了springMVC的配置文件。这个配置文件是要加载进去的。

 

 <!-- ①:对com.angus包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 --><context:component-scan base-package="com.angus"/><mvc:annotation-driven /><!-- 静态资源访问 --><!--如果webapp下你新建了文件夹,想访问里面的静态资源,那么就要在这配置一下--><mvc:resources location="/images/" mapping="/images/**"/><mvc:resources location="/css/" mapping="/css/**"/><!-- <mvc:resources location="/styles/" mapping="/styles/**"/> --><mvc:resources location="/js/" mapping="/js/**"/><!-- ②:启动Spring MVC的注解功能,完成请求和注解POJO的映射 --><bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"><list><ref bean="mappingJacksonHttpMessageConverter"/></list></property></bean><!-- 编码格式 --><bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="supportedMediaTypes"><list><value>application/json;charset=UTF-8</value></list></property></bean><!-- 配置视图解析器,把控制器的逻辑视频映射为真正的视图 --><!-- /WEB-INF/jsp/start.jsp --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/><!-- 请求前缀 --><property name="prefix" value="/WEB-INF/views/" /><!-- 请求后缀 --><property name="suffix" value=".jsp" /></bean>

  下边再讲 视图解析器是干什么用的。

  

  以上工作做完,老管家能干活了。

  至于怎么干活,我举个栗子

  请求可以当做是上家,老管家是中间人,真正干活的服务器是下家。请求过来,被老管家发现,然后就要替上家找联系人。

  这个过程是通过 控制器完成的:也就是controller类

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;//这个@Controller相当于是暗号,有了这个暗号,才知道这是干什么的。而这个暗号就是说这是
//controller@Controller//下边的是明确自己是干什么活处理什么请求的 首先这是包路径@RequestMapping("user")
public class LoginController {//下边的是明确自己是干什么活处理什么请求的 首先这也会一个路径。
//到这里为止,可以和上边提到的视图解析器对应起来了
//比方说来了一个请求,老管家是怎么精准的找到下家又不犯错误的呢
// 请求是这样的http://localhost:8080/user/login
//@RequestMapping("login")public String login(){System.out.println("000");//这个会被老管家拼装起来,这就是视图解析器的作用了,/WEB-INF/views/success.jsp//要找的就是这个返回页面,经过一些列的操作后,比方说数据的处理呀,完了将这个页面返回去。//上边说的数据的处理是指一些复杂的服务层调用,服务层再调用数据访问层,最后将数据塞给页面return "success";}
}

 

最后再补充一下执行流程把。我觉得这个有帮助我们自己搭环境,也有助于帮助我们理解springMVC,有助于帮助我们排错。

 

OK我根据框来讲解一下,可以看到四个颜色不同的框,这四个框包括了整个springMVC的流程

  首先,绿色代表的是前端页面,前端请求,和这部分相关的就是返回页面。

  然后,红色代表的是控制器,这个是和web.xml配置有关系的,请求能被拦下来,完全是通过web.xml配置来做到的。这部分还和后边的蓝色框有关系,因为在web.xml文件里边加载了和蓝色框相关的配置文件。

  然后,蓝色框通过web.xml加载了自己配置文件,配置文件里边包括开启扫描。蓝色框里边完成的是让请求和处理形成以一个一个的映射。蓝色框处理完了将处理结果返回给前端控制器,也就是红色框,红色框知道请求处理完了。 

  最后,黄色框,里边是返回的页面,蓝色框处理完了以后,会告诉红色框,我处理完了,你去找哪个哪个页面把。这个是由视图解析器来完成的。最后红色框将最终绿色框想要的结果返回,然后由浏览器渲染结果页面。整个结果完成。

 

更加具体的执行流程,基于组件来讲解:

 

 

 

 

这篇关于(2019.7)能让springMVC跑起来的条件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/665374

相关文章

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows