Spring与Web集成

先加入Servlet、jsp的依赖

  • Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
  • 使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
  • JSP(全称JavaServer Pages),部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。
  • JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
<!-- servlet依赖 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
            <scope>provided</scope>
        </dependency>
        <!-- jsp依赖 -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
            <scope>provided</scope>
        </dependency>

引言一

在 Web 项目中使用 Spring 框架,首先要解决在 web 层(这里指 Servlet)中获取到 Spring容器的问题。
只要在 web 层获取到了 Spring 容器,便可从容器中获取到 Service 对象。

Servlet 是一个业务一个 Servlet 实例,即 LoginServlet 只有一个,但还会有别的xxServlet。每个业务都会有一个 Servlet,都会执行自己的 init()方法,也就都会创建一个 Spring 容器了。这样一来,Spring 容器就又不唯一了。

解决Spring容器不唯一问题

一个 Web 应用,只有一个ServletContext 对象,该对象是在 Web 应用装载时初始化的。若将 Spring 容器的创建时机,放在 ServletContext 初始化时,就可以保证 Spring 容器的创建只会执行一次,也就保证了Spring 容器在整个应用中的唯一性。

引言二

ApplicationContext应用上下文获取方式

应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写它。

这样的弊端是配置文件加载多次,应用上下文对象创建多次。

Spring提供获取应用上下文的工具

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

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

步骤

  1. 在 pom.xml中导入spring-web依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
  1. 在web.xml中配置
  <!--    配置监听器-->
   <listener>
       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>
    <!--    全局初始化参数-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
  1. 使用WebApplicationContextUtils获得应用上下文对象ApplicationContext(Spring 容器对象)
    在这里插入图片描述

了解

一、ServletContextEvent和ServletContext

ServletContextEvent:将Web应用程序部署在服务器上时,将触发ServletContextEvent事件。

如果要在部署Web应用程序时执行某些操作,例如创建数据库连接,创建项目的所有表等,则需要实现ServletContextListener接口并提供其方法的实现。

ServletContext的对象由Web容器在部署项目时创建。该对象可用于从web.xml文件获取配置信息。每个Web应用程序只有一个ServletContext对象

在这里插入图片描述

二、web.xml中指定 Spring 配置文件的位置< context-param >

web-app的< context-param >标签用于在Web应用程序范围内定义初始化参数

为什么要用< context-param >?

如果所有Servlet都需要用到这个参数,则最好使用< context-param >元素在web.xml文件定义该参数。因为< context-param >参数是全局的。

如果一些数据需要共享给所有Servlet使用,希望易于维护,那么最好将它们在web.xml文件中使用< context-param>来定义。而< context-param>的参数只能被ServletContext对象读取。这样的好处是,< context-param>参数如果更改了,则无需修改Servlet,维护起来方便许多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值