1. 程式人生 > >spring_(28)Spring_在 WEB 應用中使用 Spring

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>

執行結果

訪問那個網址
在這裡插入圖片描述