spring 笔记三 Spring与Web环境集成

news2024/11/16 19:06:06

文章目录

  • Spring与Web环境集成
    • ApplicationContext应用上下文获取方式
    • 导入Spring集成web的坐标
    • 置ContextLoaderListener监听器
    • 通过工具获得应用上下文对象
    • SpringMVC概述
    • SpringMVC快速入门

Spring与Web环境集成

ApplicationContext应用上下文获取方式

应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) ,这样的弊端是配置文件加载多次,应用上下文对象创建多次。

在Web项目中,可以使用ServletContextListener监听Web应用的启动,我们可以在Web应用启动时,就加载Spring的配置文件,创建应用上下文对象ApplicationContext,在将其存储到最大的域servletContext域中,这样就可以在任意位置从域中获得应用上下文ApplicationContext对象了

Spring提供了一个监听器ContextLoaderListener就是对上述功能的封装,该监听器内部加载Spring配置文件,创建应用上下文对象,并存储到ServletContext域中,提供了一个客户端工具WebApplicationContextUtils供使用者获得应用上下文对象。
所以我们需要做的只有两件事:

① 在web.xml中配置ContextLoaderListener监听器(导入spring-web坐标)
② 使用WebApplicationContextUtils获得应用上下文对象ApplicationContext

导入Spring集成web的坐标

  <!--Spring MVC的相关依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.2.8.RELEASE</version>
    </dependency>

置ContextLoaderListener监听器

<!--全局参数-->
 <context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:applicationContext.xml</param-value>
 </context-param>
 <!--Spring的监听器-->
 <listener>
 <listener-class>
 org.springframework.web.context.ContextLoaderListener
 </listener-class>
 </listener>

通过工具获得应用上下文对象

ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
 Object obj = applicationContext.getBean("id");

SpringMVC概述

SpringMVC 是一种基于Java 的实现MVC 设计模型的请求驱动类型的轻量级Web 框架,属于
SpringFrameWork 的后续产品,已经融合在Spring Web Flow 中。
SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring3.0 的发布,全面超越Struts2,成为最优秀的MVC 框架。它通过一套注解,让一个简单的Java 类成为处理请求的控制器,而无须实现任何接口。同时它还支持RESTful编程风格的请求。

SpringMVC快速入门

需求:客户端发起请求,服务器端接收请求,执行逻辑并进行视图跳转。
开发步骤:
① 导入SpringMVC相关坐标
② 配置SpringMVC核心控制器DispathcerServlet
③ 创建Controller类和视图页面
④ 使用注解配置Controller类中业务方法的映射地址
⑤ 配置SpringMVC核心文件spring-mvc.xml
⑥ 客户端发起请求测试

SpringMVC流程图示
在这里插入图片描述

  • 导入Spring和SpringMVC的坐标
<!--Spring坐标-->
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context</artifactId>
 <version>5.2.8.RELEASE</version>
 </dependency>
 <!--SpringMVC坐标-->
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-webmvc</artifactId>
 <version>5.2.8.RELEASE</version>
 </dependency>
  • 导入Servlet和Jsp的坐标
  <!--ServletAPI:引入servlet的功能-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
 <!--Jsp坐标-->
 <dependency>
    <!--ServletAPI: jsp页面的功能包 -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
      <scope>provided</scope>
    </dependency>
  • 在web.xml配置SpringMVC的核心控制器
<servlet>
 <servlet-name>DispatcherServlet</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <init-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:spring-mvc.xml</param-value>
 </init-param>
 <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
 <servlet-name>DispatcherServlet</servlet-name>
 <url-pattern>/</url-pattern>
 </servlet-mapping>
  • 创建Controller和业务方法
public class QuickController {
 public String quickMethod(){
 System.out.println("quickMethod running.....");
 return "index";
 }
 }
  • 创建视图页面index.jsp
<html>
 <body>
 <h2>Hello SpringMVC!</h2>
 </body>
 </html>
  • 配置注解
@Controller
 public class QuickController {
 @RequestMapping("/quick")
 public String quickMethod(){
 System.out.println("quickMethod running.....");
 return "index";
 }
 }
  • 创建spring-mvc.xml
 <beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:mvc="http://www.springframework.org/schema/mvc"
 xmlns:context="http://www.springframework.org/schema/context"
 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
 http://www.springframework.org/schema/mvc
 http://www.springframework.org/schema/mvc/spring-mvc.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context.xsd">
 <!--配置注解扫描-->
 <context:component-scan base-package="com.itheima"/>
 </beans>
  • 访问测试地址
http://localhost:8080/itheima_springmvc1/quick 

页面显示
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1309612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT-CAD-3D显示操作工具

QT-CAD-3D显示操作工具 一、效果展示二、核心程序三、程序链接 一、效果展示 二、核心程序 TDF_LabelSequence DxfReader::transfer(DocumentPtr doc, TaskProgress* progress) {TDF_LabelSequence seqLabel;Handle_XCAFDoc_ShapeTool shapeTool doc->xcaf().shapeTool();…

ProcessOn在线绘制部分项目流程图

目录 一、ProcessOn 1.1 简介 1.2 官方网站 二、Axure自定义元件库 2.1 新建元件库 2.2 自定义元件 2.3 添加元件库 三、HIS系统门诊流程图 四、HIS系统住院流程图 五、HIS系统药品采购入库流程图 六、OA会议流程图 一、ProcessOn 1.1 简介 ProcessOn是一款在线的流…

快递鸟「物流导盲犬」助力鞋服头部企业客户全链路物流数字化升级

数字化时代&#xff0c;企业全域经营已成为数字商业新浪潮&#xff0c;多店铺多平台多仓库同步发货成为经营常态&#xff0c;消费者对物流服务体验的要求越来越高&#xff0c;企业对物流精细化管理的需求也越来越强烈。快递鸟基于对物流数字化领域的深耕和对行业及客户需求的深…

域名备案通过啦

整体来看还算比较顺利&#xff1a;遇到的问题&#xff1a; 1.香港服务器没有免费的备案码&#xff0c;就单独购买一个备案码用于备案。 2.备案的时候小程序审核优先通过&#xff0c;导致阿里云备案域名不能使用初次备案&#xff0c;不能通过初审&#xff0c;就放弃重新申请备…

css画饼图

<template slot-scope"scope"> <div class"pie" :style"{--p: scope.row.rate}" style"--p:10;--b:10px;--c:#FFAB79;"> <!-- --p&#xff1a;这个变量应该包含百分比值作为一个数字&#xff08;不带%符号&#xff09;…

智能防雷监测系统+智能SPD在线监测系统解决方案

雷电是一种自然现象&#xff0c;也是一种灾害。雷电对人类的生命财产安全造成巨大的威胁&#xff0c;尤其是对于电子设备、通信网络、电力系统等敏感设备&#xff0c;雷电浪涌会导致设备损坏、数据丢失、系统故障等严重后果。因此&#xff0c;防雷措施是必不可少的。 传统的防雷…

Narak

靶场下载 https://download.vulnhub.com/ha/narak.ova 信息收集 # nmap -sn 192.168.1.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2023-12-09 22:18 CST Nmap scan report for 192.168.1.1 (192.168.1.1) Host is up (0.…

class080 状压dp-上【算法】

class080 状压dp-上【算法】 算法讲解080【必备】状压dp-上 Code1 464. 我能赢吗 // 我能赢吗 // 给定两个整数n和m // 两个玩家可以轮流从公共整数池中抽取从1到n的整数&#xff08;不放回&#xff09; // 抽取的整数会累加起来&#xff08;两个玩家都算&#xff09; // 谁在…

【Python】人工智能-机器学习——不调库手撕深度网络分类问题

1. 作业内容描述 1.1 背景 数据集大小150该数据有4个属性&#xff0c;分别如下 Sepal.Length&#xff1a;花萼长度(cm)Sepal.Width&#xff1a;花萼宽度单位(cm)Petal.Length&#xff1a;花瓣长度(cm)Petal.Width&#xff1a;花瓣宽度(cm)category&#xff1a;类别&#xff0…

flutter调试器查看不了副页面(非主页面/子页面)

刚接触flutter&#xff0c;写了两个页面&#xff0c;通过按钮&#xff0c;可以从主页面跳转到副页面&#xff0c;副页面我自己写的一个独立的dart文件&#xff0c;在主页面的代码中导入使用。但是当我运行代码后&#xff0c;点击跳转的时候&#xff0c;却发现查看不到对应的副页…

用CHAT了解生活中的化学

问CHAT&#xff1a;生活中有哪些常见的氢氧化合物&#xff1f; CHAT回复&#xff1a;生活中常见的氢氧化合物有以下几种&#xff1a; 1. 氢氧化钠(NaOH)&#xff1a;也叫苛性钠&#xff0c;是一种强碱性物质&#xff0c;主要用于造纸、肥皂制作、人造纤维和棉纺等工业中。 2.…

php实现截取姓名中的第一个字作为头像的实战记录

php 截取中文字符串第一个字 substr 函数 在 PHP 中&#xff0c;使用 substr 函数来截取中文字符串的第一个字。由于 PHP 默认的字符编码是 UTF-8&#xff0c;它可以正确处理中文字符。 $chineseString "你好世界"; $firstChar substr($chineseString, 0, 1); e…

TCP对数据的拆分

应用程序的数据一般都比较大&#xff0c;因此TCP会按照网络包的大小对数据进行拆分。 当发送缓冲区中的数据超过MSS的长度&#xff0c;数据会被以MSS长度为单位进行拆分&#xff0c;拆分出来的数据块被放进单独的网路包中。 根据发送缓冲区中的数据拆分情况&#xff0c;当判断…

ERP主要是干什么的

在信息技术快速发展的背景下&#xff0c;很多企业为了应对这些技术带来的机遇和挑战&#xff0c;也为了提高企业的竞争力和效率&#xff0c;提高企业管理水平&#xff0c;选择使用ERP系统来帮助企业进一步的发展。但是也有部分企业没明白ERP到底是干什么的&#xff0c;所以有些…

数据结构:图的存储和遍历

文章目录 图的存储结构邻接矩阵邻接矩阵的存储模拟实现 邻接表邻接表的模拟实现 图的遍历DFS和BFS遍历 图的存储结构和遍历的实现 图也是一种数据结构&#xff0c;在实际生活中有广泛运用&#xff0c;因此本篇总结的就是图的存储等 图的存储结构 在图中既有节点&#xff0c;也…

【docker 】Dockerfile指令学习

学习文档地址 上篇文章&#xff1a;【docker 】基于Dockerfile创建镜像 Dockerfile指令文档地址 .dockerignore 文件 Dockerfile指令 常见的指令 Dockerfile 指令说明FROM指定基础镜像&#xff0c;用于后续的指令构建。MAINTAINER指定Dockerfile的作者/维护者。&#xff…

代码审计零基础入门之思路篇

0x01 前言 ThinkPHP 是一款开源的 PHP 框架&#xff0c;用于快速、简单地开发 PHP 应用程序。它提供了一套丰富的功能和工具&#xff0c;使开发者能够更容易地构建各种规模的 Web 应用。ThinkPHP 的目标是提高开发效率&#xff0c;同时保持代码的可读性和可维护性。thinkphp的…

mysql:在字符串类型的列上创建索引,建议指定索引前缀长度

https://dev.mysql.com/doc/refman/8.2/en/create-index.html#create-index-column-prefixes 在字符串类型的列上创建索引&#xff0c;建议指定索引前缀长度&#xff0c;而没有必要用整个列来创建索引。因为用前面的字符创建索引&#xff0c;查询时并不会比在整列上创建索引慢很…

绿盟 SAS堡垒机 local_user.php 权限绕过漏洞复现

0x01 产品简介 SAS 安全审计系统是绿盟科技开发的一款堡垒机。 0x02 漏洞概述 绿盟 SAS堡垒机 local_user.php接口处存在权限绕过漏洞,未经身份认证的攻击者可以访问他们通常无权访问的敏感资源,最终导致系统处于极度不安全状态。 0x03 复现环境 FOFA: body="/ne…

土壤科学灌溉CG-36 土壤水势传感器

土壤科学灌溉CG-36 土壤水势传感器产品概述 土壤水势传感器可以很方便地插入到土壤剖面坑中&#xff0c;在其周围包裹上湿土即可。测定和记录非常简单。免维护、无需校准即可测量较大范围的土壤水势&#xff1b;无需灌水&#xff0c;大量程使得它成为测量自然系统水势的理想传…