spring_(28)Spring_在 WEB 應用中使用 Spring
阿新 • • 發佈:2018-12-24
- 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>
執行結果
訪問那個網址