应一位朋友的要求,写一个最简单的spring示例,使用spring的mvc,并应用了spring的依赖注入,实现简单应用,索性放在这里供还没入门的spring爱好者参考,初步感受一下spring应用(spring高手就不必看了,这里并没有涉及高级特性,比如与orm框架的整合,事务管理,远程调用,代理等这些功能)
spring至关重要的一环就是装配,即配置文件的编写,接下来我按刚才实际过程中一步步简单讲解。
首先,要在web.xml中配置dispatcherservlet,它是作为spring mvc的前端控制器.必须在web.xml中配置好,如下
| <servlet> <servlet-name>ntx</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> |
实际上,spring的配置文件可以分切到多个xml文件,我们这个简单的示例就把它配置到ntx.xml中
| <?xml version="1.0" encoding="utf-8"?> <!doctype beans public "-//spring//dtd bean//en" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans default-autowire="no" default-lazy-init="false" default-dependency-check="none" > <bean id="loginservice" class="ntx.service.serviceimpl.loginserviceimpl"/> <bean id="logincontroller" class="ntx.controller.logincontroller"> <property name="loginservice"> <ref bean="loginservice"/> </property> <property name="gotourl"> <value>/showresult.jsp</value> </property> </bean> <bean id="simpleurlhandlermapping" class="org.springframework.web.servlet.handler.simpleurlhandlermapping"> <property name="mappings"> <props> <prop key="/userlogin.do">logincontroller</prop> </props> </property> </bean> </beans> |
配置好上面的这些后,要在web-inf下要建立ntx-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="viewclass"><value>org.springframework.web.servlet.view.jstlview</value></property> <property name="prefix"><value></value></property> <property name="suffix"><value></value></property> </bean> </beans> |
接下来,要指明哪些请求将交给spring的dispatcherservlet来处理,所以在web.xml中添加<servlet-mapping>
| <servlet-mapping> <servlet-name>ntx</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> |
为了能正确载入dispatcherservlet等配置文件,我们要在web.xml中配置一个上下文载入器contextloaderlistener或者contextloaderservlet,我们这里为了兼容版本较低的serlvet容器(实际上我采用的2.4),采用第二种:
| <servlet> <servlet-name>context</servlet-name> <servlet-class>org.springframework.web.context.contextloaderservlet</servlet-class> <load-on-startup>100</load-on-startup> </servlet> |
这样就全部配置完毕了,当然,上面的ntx.xml是我在项目完成以后才配置完成的,这里不再多讲,有bean元素的配置大家可以参考有关资料理解,很容易理解的,下面再给出完整的web.xml配置以及java<?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>contextconfiglocation</param-name> <param-value>/web-inf/ntx.xml</param-value> </context-param> <servlet> <servlet-name>ntx</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>context</servlet-name> <servlet-class>org.springframework.web.context.contextloaderservlet</servlet-class> <load-on-startup>100</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ntx</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> |
根据ntx.xml知道,总共有三个java文件,logincontroller.java是控制器,继承了最简单的controller(实际上spring有很多控制器供我们选择),接下来是一个简单控制器的源码:
| /** *//** * program ntxspring * date 2006-9-27 * @author 张逸轩 */ package ntx.controller; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import org.springframework.web.servlet.modelandview; import org.springframework.web.servlet.mvc.controller; import ntx.service.loginservice; /** *//**@spring.bean id="logincontroller" * @spring.property name="gotourl" value="/showresult.jsp" * @spring.property name="loginservice" ref="loginservice" */ /** *//** * 作用描述:spring示例 * * 说明:spring示例,以上的spring标签方便使用xdoclet生成spring配置文件 * * @author 张逸轩 * copyright(c)2006 cleverfox */ public class logincontroller implements controller...{ private loginservice loginservice ; private string gotourl; public modelandview handlerequest(httpservletrequest request,httpservletresponse response) throws exception ...{ string username = request.getparameter("username"); this.getuserinfo(request, username); return new modelandview(this.getgotourl()); } private void getuserinfo(httpservletrequest request,string username)...{ string userinfo = loginservice.getuserinfo(username); request.setattribute("userinfo", userinfo); } public string getgotourl() ...{ return gotourl; } public void setgotourl(string gotourl) ...{ this.gotourl = gotourl; } public loginservice getloginservice() ...{ return loginservice; } public void setloginservice(loginservice loginservice) ...{ this.loginservice = loginservice; } } |
还有service层的接口以及实现,较简单。
| package ntx.service; public interface loginservice ...{ public string getuserinfo(string username); }package ntx.service.serviceimpl; import ntx.service.loginservice; public class loginserviceimpl implements loginservice ...{ public string getuserinfo(string username)...{ return "你的名字是:" + username; } } |
好了,最后是两个jsp文件,一个index.jsp用来显示一个表单,输入名字,一个showresult.jsp用来显示结果,只贴出相关的代码:
| <body> this is my test spring page. <div> <form method="post" action="/userlogin.do"> <input type="text" name="username" size="30"/> <input type="submit" value="提交"/> </form> </div> </body> <body> this is the result: <c:out value="${userinfo}" default="没有结果"/> </body> |
发布到tomcat或者其它servlet容器可以正常使用,提交以后将显示:
this is the result:
你的名字是:gavin
![]() |
这是一个简单的入门示例,希望有助于刚接触spring的人加深对spring的理解。

闽公网安备 35060202000074号