spring_(28)Spring_在 WEB 应用中使用 Spring

  1. Spring 如何在 WEB 应用中使用 ?

1). 需要额外加入的 jar 包:

	spring-web-4.0.0.RELEASE.jar
	spring-webmvc-4.0.0.RELEASE.jar

2). Spring 的配置文件, 没有什么不同

3). 如何创建 IOC 容器 ?

	①. 非 WEB 应用在 main 方法中直接创建
	②. 应该在 WEB 应用被服务器加载时就创建 IOC 容器: 

	在 ServletContextListener#contextInitialized(ServletContextEvent sce) 方法中创建 IOC 容器.
	
	③. 在 WEB 应用的其他组件中如何来访问 IOC 容器呢 ?
	
	在 ServletContextListener#contextInitialized(ServletContextEvent sce) 方法中创建 IOC 容器后, 可以把其放在
	ServletContext(即 application 域)的一个属性中. 
	
	④. 实际上, Spring 配置文件的名字和位置应该也是可配置的! 将其配置到当前 WEB 应用的初始化参数中较为合适. 

4). 在 WEB 环境下使用 Spring

①. 需要额外加入的 jar 包:

	spring-web-4.0.0.RELEASE.jar
	spring-webmvc-4.0.0.RELEASE.jar

②. Spring 的配置文件, 和非 WEB 环境没有什么不同

③. 需要在 web.xml 文件中加入如下配置:

<!--配置 Spring 配置文件的名称和位置-->
<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value>
</context-param>

<!--启动 IOC 容器的 ServletContextListene-->
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

例子程序

基本结构

在这里插入图片描述

Person.java

package com.spring.structs2.beans;

import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class Person {

    private String name;

    public void setName(String name) {
        this.name = name;
    }
    public void hello(){
        System.out.println("My name is "+name);
    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!--配置Spring配置文件的名称和位置-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <!--启动IOC容器的ServletContextListener-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>

applicationContext.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">

    <bean id="person"
          class="com.spring.structs2.beans.Person">
        <property name="name" value="Spring"></property>
    </bean>
</beans>

test.jsp

<%@ page import="org.springframework.context.ApplicationContext" %>
<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils" %>
<%@ page import="com.spring.structs2.beans.Person" %><%--
  Created by IntelliJ IDEA.
  User: 14741
  Date: 2018/12/9
  Time: 17:26
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        //1.从application域对象中得到IOC容器的实例
        ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(application);

        //2.从IOC容器中得到bean
        Person person = ctx.getBean(Person.class);
        //3.使用bean
        person.hello();
    %>
</body>
</html>

运行结果

访问那个网址
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42036647/article/details/84930020