spring 配置
引用:http://www.ideawu.net/person/spring_hibernate_web_dev/ch01.html
Table of Contents
本章讲 Spring 的环境配置和 Spring Web 应用的一般结构和开发方法.
1.1. 配置 JSP 运行环境
1.1.1. 网站所需的库文件
Tomcat安装目录下的webapps目录是放置网站的目录, 在该目录里建立一个 ideashopx 目录, 这就是我们的博客网站的目录, 它的访问地址是 http://localhost:8080/ideashopx/
到 Spring 的官方网站下载 Spring Framework 2.0(一定要下载 with-dependencies 的包, 因为里面包含了所需要的依赖文件, 例如你可以下载 spring-framework-2.0.6-with-dependencies.zip).
我们要开发的网站的目录结构如下:
Figure 1.1. 网站的目录结构
然后按照下面的路径建立以下5个文件:
<Tomcat Home>/webapps/ideashopx/ index.jsp WEB-INF/ applicationContext.xml ideashopx-servlet.xml web.xml
然后解压缩Spring Framework的压缩文件, 分别从dist和lib目录下找到并将下面jar文件拷贝到网站目录下的WEB-INF/lib目录下, 这些文件是一般网站开发都要用到的:
antlr-2.7.6.jar cglib-nodep-2.1_3.jar commons-collections.jar commons-dbcp.jar commons-fileupload.jar commons-io.jar commons-logging.jar commons-pool.jar dom4j-1.6.1.jar ehcache-1.2.jar hibernate3.jar jstl.jar jta.jar log4j-1.2.13.jar spring.jar standard.jar
解压缩standard.jar文件, 从里面的META-INF文件夹中拷贝 c.tld, fmt.tld 两个文件拷贝到 WEB-INF/tld 目录下.
1.1.2. 编辑网站的配置文件
编辑WEB-INF/目录下的以下配置文件:
Example 1.1. web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <context-param> <param-name>webAppRootKey</param-name> <param-value>ideashopx.root</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.properties</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/applicationContext.xml </param-value> </context-param> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> <servlet> <servlet-name>ideashopx</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ideashopx</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
ideashopx-servlet.xml
文件没有实质的内容, 因为我们目前还用不上它:
Example 1.2. ideashopx-servlet.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <value> </value> </property> </bean> </beans>
applicationContext.xml
也只是个空壳文件:
Example 1.3. applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> </beans>
log4j.properties
配置日志输出. 日志在开发和运行过程中是非常重要的.
Example 1.4. log4j.properties
log4j.rootLogger=INFO, stdout, logfile log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.appender.logfile=org.apache.log4j.RollingFileAppender log4j.appender.logfile.File=${ideashopx.root}/WEB-INF/logs/ideashopx.log log4j.appender.logfile.MaxFileSize=1024KB # Keep three backup files. log4j.appender.logfile.MaxBackupIndex=3 # Pattern to output: date priority [category] - message log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.properties
配置日志输出. 日志在开发和运行过程中是非常重要的.
1.1.3. 用 JSP Hello World 页面验证环境是否配置成功
我们先运行JSP的Hello World例子, 确保我们的环境设置正确. 编辑 ideashopx/index.jsp文件, 让它输出Hello World!.
ideashopx/index.jsp文件内容为:
Example 1.5. index.jsp
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Hello World from JSP!</title> <style type="text/css"> body{ font-size: 12px; font-family: arial; } </style> </head> <body> <h1>Hello World from JSP!</h1> ${param.name} </body> </html>
启动 Tomcat. 如果是从命令行启动, 你会看到类似的启动信息:
E:\Tomcat5.5\bin>tomcat5.exe 2007-7-4 19:32:02 org.apache.catalina.core.AprLifecycleListener lifecycleEvent 2007-7-4 19:32:02 org.apache.coyote.http11.Http11BaseProtocol init 信息: Initializing Coyote HTTP/1.1 on http-8080 2007-7-4 19:32:02 org.apache.catalina.startup.Catalina load 信息: Initialization processed in 937 ms 2007-7-4 19:32:02 org.apache.catalina.core.StandardService start 信息: Starting service Catalina 2007-7-4 19:32:02 org.apache.catalina.core.StandardEngine start 信息: Starting Servlet Engine: Apache Tomcat/5.5.23 2007-7-4 19:32:02 org.apache.catalina.core.StandardHost start 信息: XML validation disabled ... FrameworkServlet 'ideashopx': initialization completed in 234 ms Servlet 'ideashopx' configured successfully 2007-7-15 20:53:07 org.apache.coyote.http11.Http11BaseProtocol start 信息: Starting Coyote HTTP/1.1 on http-8080 2007-7-15 20:53:07 org.apache.jk.common.ChannelSocket init 信息: JK: ajp13 listening on /0.0.0.0:8009 2007-7-15 20:53:07 org.apache.jk.server.JkMain start 信息: Jk running ID=0 time=0/31 config=null 2007-7-15 20:53:07 org.apache.catalina.storeconfig.StoreLoader load 信息: Find registry server-registry.xml at classpath resource 2007-7-15 20:53:07 org.apache.catalina.startup.Catalina start 信息: Server startup in 3172 ms
建议你总是使用命令行方式启动Tomcat, 这样, 在以后的开发中你能通过控制台立即查看出错信息, 了解网站的运行情况, 特别是调试Hibernate时, 可以查看生成的SQL语句.
如果启动正常, 在浏览器地址栏中输入http://localhost:8080/ideashopx/, 你应该能看到index.jsp的运行结果:
Figure 1.2. 测试实例运行效果
在浏览器地址栏中输入http://localhost:8080/ideashopx/?name=myshop, 你看到了什么? 你应该看到显示的文本增加了小号的 myshop 字样. 这就是index.jsp文件中${param.name}的效果. ${param.name}是JSTL语句, 用来输出变量, param.name是网页请求中的name参数. JSTL在后面的章节中有详细介绍.
目前为止, 我们还没有应用到Spring框架. 接下来, 我们要编写Spring的Hello World例子. 通过这个例子, 你将看到基于Spring的网站的一般结构.