用jbuilder2005开发spring mvc应用
高科华
作者简介:高科华,南京航空学院计算数学专业硕士,有十年以上的企业信息化工作经验。目前的研究兴趣:j2ee企业应用、erp软件研发、数据仓库系统研发。
作者声明:本文没有最后定稿。
1. 下载spring包,网址如下
http://www.springframework.org/download.html
解压后的目录中包含了dist、lib等子目录
2. 在jbuilder2005中增加spring库,选择菜单tools-configure-libraries,在弹出的对话框中点击new按钮,输入spring库的名称:spring,点击add按钮,将dist目录中的所有jar文件增加到spring库中
3. 新建工程文件,选菜单file-new project,给工程文件取名为myproject
设置工程文件的属性,选菜单project-project properties,选择tomcat作为服务器,将spring库加入path/required libraries。因为例子中用到了log4j,将包含了log4j的库加入path/required libraries,注意到lib目录下有两个子目录log4j和jakarta-commons,它们的用法是不同的,如下面的代码片断所示:
log4j |
import org.apache.log4j.level; import org.apache.log4j.logger; public class springappcontroller implements controller { /** logger for this class and subclasses */ static logger logger = logger.getlogger(springappcontroller.class); |
jakarta-commons |
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()); |
4. 新建web模块,选菜单file-new,给web模块取名为springapp
5. 新建hello.jsp文件如下:
<%@ page contenttype="text/html; charset=big5" %> <html> <head><title>example :: spring application</title></head> <body> <h1>hello - spring application</h1> <p>greetings.</p> </body> </html> |
6. 新建类文件springappcontroller.java如下:
package spring; 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; import org.apache.log4j.level; import org.apache.log4j.logger; public class springappcontroller implements controller { /** logger for this class and subclasses */ // protected final log logger = logfactory.getlog(getclass()); static logger logger = logger.getlogger(springappcontroller.class); public modelandview handlerequest(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { logger.info("springappcontroller - returning hello view"); return new modelandview("hello.jsp"); } } |
7. 修改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> |
8. 在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="spring.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> |
9. 在web-inf目录中新建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=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 |
10. 设置web模块springapp的属性content,加入文件log4j.properties,因为classes目录是自动产生的,这一步是为了把文件log4j.properties加到classes目录。
11. 设置run configuration,选菜单run-configurations,新建一个run configuration,type选server,launch uri设置为:/springapp/hello.htm,给它取名为hello
12. 运行,你会在messages窗口中看到如下信息:
?y??: server startup in 9253 ms 2004-11-05 15:05:00,585 info [spring.springappcontroller] - <springappcontroller - returning hello view> 2004/11/5 下午 03:05:00 org.springframework.web.servlet.view.abstractcachingviewresolver resolveviewname ?y??: cached view 'hello.jsp' |
在myproject/tomcat/springapp.log文件中增加了一行如下所示:
2004-11-05 15:11:32,348 info [spring.springappcontroller] - <springappcontroller - returning hello view> |
这说明你已成功建立了基本的spring应用。
13. 增加对jstl的支持,设置工程文件的属性,选菜单project-project properties,将jstl库加入path/required libraries。
14. 改进前面的例子,改进的文件如下:
增加“header”文件include.jsp,这是一些jsp文件的公用部分,这样可以使得开发和维护更容易。所有jsp文件放在web-inf/jsp目录下,为的是只有controller可以访问view。
springapp/war/web-inf/jsp/include.jsp |
<%@ page session="false"%> <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %><%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %> |
利用jstl,<c:redirect>将页面重定向到controller,这样就建立了index.jsp和应用架构的联系。
springapp/war/index.jsp |
<%@ include file="/web-inf/jsp/include.jsp" %> <%-- redirected because we can't set the welcome page to a virtual url. --%><c:redirect url="/hello.htm"/> |
利用jstl的<c:out>标记,把从model提取的,传递给view的当前日期和时间作为输出。
springapp/war/web-inf/jsp/hello.jsp |
<%@ include file="/w
|
闽公网安备 35060202000074号