開發環境:? Java?SDK?(I?am?currently?using?version?1.4.1)? Ant?(using?version?1.5.3) Apache?Tomcat?(using?version?4.1.24) 您可以用功能相同的任何容器或者java運行環境? 第1步:開發路徑? 為了保留我們的開發中每一步的流程,我們將保存所有的源碼和文件。? 首先,我們創建一個springapp的目錄(你可以將這個目錄建在任何地方),然后,在springapp目錄下創建子目錄src,用來保存java資源文件。然后我們建立另一個子目錄war,這個目錄將保存生成的war文件。? 建立WEB-INF子目錄,和它的classes,lib子目錄。? OK,你的目錄應該這個樣子:? 代碼:? -spirngapp? ??-WEB-INF? ??????-classes? ??????-lib? ??-src? ??-war? 第2步:創建jsp? 我們創建一個jsp文件-index.jsp在springapp目錄下,這將是我們應用程序的入口.? 代碼:? springapp/index.jsp? <html>? <head><title>Example?::?Spring?Application</title></head>? <body>? <h1>Example?-?Spring?Application</h1>? <p>This?is?my?test.</p>? </body>? </html>?????? 現在,我們來完成這個web應用,在WEB-INF下建立web.xml文件? 代碼:? springapp/WEB-INF/web.xml? <?xml?version="1.0"?encoding="UTF-8"?>? <!DOCTYPE?web-app?PUBLIC?'-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN'?'http://java.sun.com/dtd/web-app_2_3.dtd'>? <web-app>? ??<welcome-file-list>? ????<welcome-file>? ??????index.jsp? ????</welcome-file>? ??</welcome-file-list>? </web-app>? 第3步:部署這個應用到Tomcat? 現在我們來寫Ant腳本文件,用于建立,部署,控制這個應用.? 代碼:? springapp/build.xml? <?xml?version="1.0"?encoding="gb2312"?>? <project?name="springapp"?basedir="."?default="usage">? ????<property?file="build.properties"/>? ????<property?name="src.dir"?value="src"/>? ????<property?name="web.dir"?value="war"/>? ????<property?name="build.dir"?value="${web.dir}/WEB-INF/classes"/>? ????<property?name="name"?value="springapp"/>? ????<path?id="master-classpath">? ????????<fileset?dir="${web.dir}/WEB-INF/lib">? ????????????<include?name="*.jar"/>? ????????</fileset>? ????????<fileset?dir="${tomcat.home}/common/lib">? ????????????<include?name="servlet.jar"/>? ????????</fileset>? ????</path>? ????<target?name="usage">? ????????<echo?message=""/>? ????????<echo?message="${name}?build?file"/>? ????????<echo?message="-----------------------------------"/>? ????????<echo?message=""/>? ????????<echo?message="Available?targets?are:"/>? ????????<echo?message=""/>? ????????<echo?message="build???????-->?建立應用"/>? ????????<echo?message="deploy?????-->?部署應用"/>? ????????<echo?message="deploywar?-->?部署war文件"/>? ????????<echo?message="install???-->?安裝應用"/>? ????????<echo?message="reload???-->?重載應用"/>? ????????<echo?message="start??????-->?啟動Tomcat?application"/>? ????????<echo?message="stop??????-->?停止?Tomcat?application"/>? ????????<echo?message="list????????-->??列表?Tomcat?applications"/>? ????????<echo?message=""/>? ????</target>? <!--?===========================================================?-->? <!--?spring?tasks?by?yanger?2003-11?-->? <!--?===========================================================?-->? ????<target?name="build"?description="Compile?main?source?tree?java?files">? ????????<mkdir?dir="${build.dir}"/>? ????????<javac?destdir="${build.dir}"?target="1.3"?debug="true"? ???????????????deprecation="false"?optimize="false"?failonerror="true">? ????????????<src?path="${src.dir}"/>? ????????????<classpath?refid="master-classpath"/>? ????????</javac>? ????</target>? ????<target?name="deploy"?depends="build"?description="Deploy?application">? ????????<copy?todir="${tomcat.home}/webapps/${name}"?preservelastmodified="true">? ????????????<fileset?dir="${web.dir}">? ????????????????<include?name="**/*.*"/>? ????????????</fileset>? ????????</copy>? ????</target>? ????<target?name="deploywar"?depends="build"?description="Deploy?application?as?a?WAR?file">? ????????<war?destfile="${name}.war"? ?????????????webxml="${web.dir}/WEB-INF/web.xml">? ????????????<fileset?dir="${web.dir}">? ????????????????<include?name="**/*.*"/>? ????????????</fileset>? ????????</war>? ????????<copy?todir="${deploy.path}"?preservelastmodified="true">? ????????????<fileset?dir=".">? ????????????????<include?name="*.war"/>? ????????????</fileset>? ????????</copy>? ????</target>? <!--?============================================================?-->? <!--?Tomcat?tasks?-?remove?these?if?you?don't?have?Tomcat?installed?-->? <!--?============================================================?-->? ????<taskdef?name="install"?classname="org.apache.catalina.ant.InstallTask">? ????????<classpath>? ????????????<path?location="${tomcat.home}/server/lib/catalina-ant.jar"/>? ????????</classpath>? ????</taskdef>? ????<taskdef?name="reload"?classname="org.apache.catalina.ant.ReloadTask">? ????????<classpath>? ????????????<path?location="${tomcat.home}/server/lib/catalina-ant.jar"/>? ????????</classpath>? ????</taskdef>? ????<taskdef?name="list"?classname="org.apache.catalina.ant.ListTask">? ????????<classpath>? ????????????<path?location="${tomcat.home}/server/lib/catalina-ant.jar"/>? ????????</classpath>? ????</taskdef>? ????<taskdef?name="start"?classname="org.apache.catalina.ant.StartTask">? ????????<classpath>? ????????????<path?location="${tomcat.home}/server/lib/catalina-ant.jar"/>? ????????</classpath>? ????</taskdef>? ????<taskdef?name="stop"?classname="org.apache.catalina.ant.StopTask">? ????????<classpath>? ????????????<path?location="${tomcat.home}/server/lib/catalina-ant.jar"/>? ????????</classpath>? ????</taskdef>? ????<target?name="install"?description="Install?application?in?Tomcat">? ????????<install?url="${tomcat.manager.url}"? ?????????????????username="${tomcat.manager.username}"? ?????????????????password="${tomcat.manager.password}"? ?????????????????path="/${name}"? ?????????????????war="${name}"/>? ????</target>? ????<target?name="reload"?description="Reload?application?in?Tomcat">? ????????<reload?url="${tomcat.manager.url}"? ?????????????????username="${tomcat.manager.username}"? ?????????????????password="${tomcat.manager.password}"? ?????????????????path="/${name}"/>? ????</target>? <target?name="start"?description="Start?Tomcat?application">? ????????<start?url="${tomcat.manager.url}"? ?????????????????username="${tomcat.manager.username}"? ?????????????????password="${tomcat.manager.password}"? ?????????????????path="/${name}"/>? ????</target>? ????<target?name="stop"?description="Stop?Tomcat?application">? ????????<stop?url="${tomcat.manager.url}"? ?????????????????username="${tomcat.manager.username}"? ?????????????????password="${tomcat.manager.password}"? ?????????????????path="/${name}"/>? ????</target>? ????<target?name="list"?description="List?Tomcat?applications">? ????????<list?url="${tomcat.manager.url}"? ?????????????????username="${tomcat.manager.username}"? ?????????????????password="${tomcat.manager.password}"/>? ????</target>? <!--?End?Tomcat?tasks?-->? </project>? 這個Ant腳本包含了建立應用主要的工具命令,但是,這個腳本要配合build.properties使用.? 代碼:? springapp/build.properties? #?Ant?properties?for?building?the?springapp? deploy.path=/home/trisberg/jakarta-tomcat-4.1.24/webapps? #deploy.path=c:/Tomcat?4.1/webapps? #deploy.path=c:/bea/user_projects/domains/mydomain/applications? tomcat.home=/home/trisberg/jakarta-tomcat-4.1.24? #tomcat.home=?c:/Tomcat?4.1? tomcat.manager.url=http://localhost:8080/manager? tomcat.manager.username=admin? tomcat.manager.password=tomcat? deploy.path?是tomcat的應用目錄? tomcat.path?是tomcat的主目錄? tomcat.manager.url是管理訪問路徑,注意你的端口是否正確? tomcat.manager.username,tomcat.manager.password?我就不用說了吧? 如果你執行install命令,將在tomcat?webapps目錄下建立springapp目錄。? 如果你用其他的web應用服務器,那么你可以刪除tomcat指定的命令集,你可以用server提供的熱部署進行啟動和停止你的應用.? 現在我們來看一下ant提供的每個命令,在你的springapp目錄下執行ant? 代碼:? C:\projects\springapp>ant? Buildfile:?build.xml? usage:? ?????[echo]?springapp?build?file? ?????[echo]?-----------------------------------? ?????[echo]?Available?targets?are:? ?????[echo]?build?????????????????-->?建立應用? ?????[echo]?deploy???????????????-->?部署應用? ?????[echo]?deploywar?????????-->?部署war文件? ?????[echo]?install????????????????-->?安裝應用? ?????[echo]?reload????????????????-->?重載應用? ?????[echo]?start???????????????????-->?啟動?springapp? ?????[echo]?stop???????????????????-->?停止?springapp? ?????[echo]?list?????????????????????-->?列表?Tomcat?applications? BUILD?SUCCESSFUL? Total?time:?5?seconds? 現在,我們來部署應用,執行ant?deploy? 代碼:? Ant?deploy? e:\projects\springapp>ant?deploy? Buildfile:?build.xml? ?? deploy:? ?????[copy]?Copying?1?file?to?C:\Tomcat?4.1\webapps\springapp? ?? BUILD?SUCCESSFUL? Total?time:?1?seconds? 第4步:測試應用? 先看一下我們是否把應用部署成功? 代碼:? Ant?list? E:\projects\springapp>ant?list? Buildfile:?build.xml? list:? ?????[list]?OK?-?Listed?applications?for?virtual?host?localhost? ?????[list]?/admin:running:0:../server/webapps/admin? ?????[list]?/webdav:running:0:C:\Tomcat?4.1\webapps\webdav? ?????[list]?/springapp:running:1:C:\Tomcat?4.1\webapps\springapp? ?????[list]?/examples:running:0:examples? ?????[list]?/ofproject:running:0:C:\Tomcat?4.1\webapps\ofproject? ?????[list]?/tomcat-docs:running:0:C:\Tomcat?4.1\webapps\tomcat-docs? ?????[list]?/:running:0:C:\Tomcat?4.1\webapps\ROOT? ?????[list]?/manager:running:0:../server/webapps/manager? BUILD?SUCCESSFUL? Total?time:?5?seconds? 如果你還沒有安裝,請執行ant?install? 代碼:? Ant?install? E:\projects\springapp>ant?install? Buildfile:?build.xml? ?? install:? ??[install]?OK?-?Installed?application?at?context?path?/springapp? ?? ?? BUILD?SUCCESSFUL? Total?time:?2?seconds? 現在,讓我們打開瀏覽器看一下結果http://localhost:8080/springapp/index.jsp? 第5步:下載spring?framework?package? 如果你還沒有下在spring,請到www.springframework.org/download.html.?尋找最新版本.? 下面我們將完成利用spring?framework?進行開發MVC?應用程序.? 第6步:修改web.xml? 進入WEB-INF目錄編輯web.xml? 代碼:? WEB-INF/web.xml? <?xml?version="1.0"?encoding="UTF-8"?>? <!DOCTYPE?web-app?PUBLIC?'-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN'?'http://java.sun.com/dtd/web-app_2_3.dtd'>? <web-app>? ?<servlet>? ????<servlet-name>springapp</servlet-name>? ????<servlet-class>? ???????org.springframework.web.servlet.DispatcherServlet? ????</servlet-class>? ????<load-on-startup>1</load-on-startup>? ??</servlet>? ??<servlet-mapping>? ????<servlet-name>springapp</servlet-name>? ????<url-pattern>*.htm</url-pattern>? ??</servlet-mapping>? ??<welcome-file-list>? ????<welcome-file>? ??????index.jsp? ????</welcome-file>? ??</welcome-file-list>? </web-app>? 在WEB-INF目錄下創建一個springapp-servlet.xml文件,它的命名規則是web.xml中的servlet-name?加上'-servlet'后綴,這是在springframework中的標準命名法則.? 現在,我們聲明一個bean?:springappController?他對應的類是SpringappController.class? 這個定義用于我們控制業務邏輯。我們還需要定義一個url?mapping作為http調用的路徑.? 代碼:? springapp/WEB-INF/springapp-servlet.xml? <?xml?version="1.0"?encoding="UTF-8"?>? <!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd">? <!--? ??-?Application?context?definition?for?"springapp"?DispatcherServlet.? ??-->? <beans>? ????<bean?id="springappController"?class="SpringappController"/>? ????<bean?id="urlMapping"?class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">? ????????<property?name="mappings">? ????????????<props>? ????????????????<prop?key="/hello.htm">springappController</prop>? ????????????</props>? ????????</property>? ????</bean>? </beans>? 第7步:添加支持包? 從spring的下載文件包中找到,spring.jar?(spring-framework-1.0-m1/dist/spring.jar)?拷貝到WEB-INF/lib下面。? 拷貝spring-framework-1.0-m1/lib/log4j/log4j-1.2.8.jar?和?spring-framework-1.0-m1/lib/jakarta-commons/commons-logging.jar到WEB-INF/lib下面。? 第8步:創建springappController? 代碼:? springapp/src/SpringappController.java? import?org.springframework.web.servlet.mvc.Controller;? import?org.springframework.web.servlet.ModelAndView;? import?javax.servlet.ServletException;? import?javax.servlet.http.HttpServletRequest;? import?javax.servlet.http.HttpServletResponse;? import?java.io.IOException;? public?class?SpringappController?implements?Controller?{? ????public?ModelAndView?handleRequest(HttpServletRequest?request,?HttpServletResponse?response)? ????????????throws?ServletException,?IOException?{? ????????return?new?ModelAndView("");? ????}? }? 這只是一個基礎控制框架,稍候我們完成它.? 第9步:建立應用? 代碼:? Ant?build? E:\projects\springapp>ant?build? Buildfile:?build.xml? build:? ????[javac]?Compiling?1?source?file?to?E:\projects\springapp\WEB-INF\classes? BUILD?SUCCESSFUL? Total?time:?2?seconds? 第10步:建立日志系統? spring利用log4j來管理日志,在classes目錄下建立log4j.properties? 代碼:? springapp/war/WEB-INF/classes/log4j.properties? log4j.rootCategory=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=e:/projects/springapp/springapp.log? log4j.appender.logfile.MaxFileSize=512KB? #?Keep?three?backup?files? log4j.appender.logfile.MaxBackupIndex=3? log4j.appender.logfile.layout=org.apache.log4j.PatternLayout? #Pattern?to?output?:?date?priority?[category]?-?<message>line_separator? log4j.appender.logfile.layout.ConversionPattern=%d?%p?[%c]?-?<%m>%n? 第11步:部署應用? 運行ant?deploy? 第12步:創建視圖? 代碼:? springapp/war/hello.jsp? <html>? <head><title>Example?::?Spring?Application</title></head>? <body>? <h1>Hello?-?Spring?Application</h1>? <p>Greetings.</p>? </body>? </html>? 下面我們修改SpringappController.java? 代碼:? springapp/src/SpringappController.java? import?org.springframework.web.servlet.mvc.Controller;? import?org.springframework.web.servlet.ModelAndView;? import?javax.servlet.ServletException;? import?javax.servlet.http.HttpServletRequest;? import?javax.servlet.http.HttpServletResponse;? import?java.io.IOException;? import?org.apache.commons.logging.Log;? import?org.apache.commons.logging.LogFactory;? public?class?SpringappController?implements?Controller?{? ???/**?Logger?for?this?class?and?subclasses?*/? ????protected?final?Log?logger?=?LogFactory.getLog(getClass());? ????public?ModelAndView?handleRequest(HttpServletRequest?request,?HttpServletResponse?response)? ????????????throws?ServletException,?IOException?{? ???????logger.info("SpringappController?-?returning?hello?view");? ????????return?new?ModelAndView("hello.jsp");? ????}? }? 現在我們運行build,?deploy,?stop,?start?命令.? 這樣我們就成功地建立了一個mvc應用,訪問http://loaclhost:8080/springapp/hello.htm? 小結? 以上,我們快速地利用spring?framework建立了MVC應用程序,? 1、建立index.jsp,測試管理工具和開發環境? 2、編寫springapp-servlet.xml配置文件。? 3、編寫控制器代碼,SpringappController.java結合springapp-servlet中的定義進行工作.? 4、編寫、展示hello.jsp,完成MVC的應用程序.? |