應一位朋友的要求,寫一個最簡單的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. <br> <div> <form method="post" action="/userLogin.do"> <input type="text" name="userName" size="30"/><br/> <input type="submit" value="提交"/> </form> </div> </body> <body> This is the Result: <br> <c:out value="${userInfo}" default="沒有結果"/> </body> |
發佈到tomcat或者其它Servlet容器可以正常使用,提交以後將顯示:
This is the Result:
你的名字是:gavin
這是一個簡單的入門示例,希望有助於剛接觸spring的人加深對spring的理解。
轉自:http://dev.yesky.com/238/2599738.shtml