1. 程式人生 > >最簡單的spring入門示例

最簡單的spring入門示例

應群裡一位朋友的要求,寫一個最簡單的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 
 
*/

publicclass 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);
        
        
returnnew ModelAndView(this.getGotoUrl());
    }

    
    
privatevoid getUserInfo(HttpServletRequest request,String userName){
        String userInfo 
= loginService.getUserInfo(userName);
        request.setAttribute(
"userInfo", userInfo);
    }

    
    
public String getGotoUrl() {
        
return gotoUrl;
    }

    
publicvoid setGotoUrl(String gotoUrl) {
        
this.gotoUrl = gotoUrl;
    }

    
public LoginService getLoginService() {
        
return loginService;
    }

    
publicvoid setLoginService(LoginService loginService) {
        
this.loginService = loginService;
    }

    
}

還有service層的介面以及實現,較簡單, package ntx.service;
publicinterface LoginService {

    
public String getUserInfo(String userName);
}
package ntx.service.serviceimpl;

import ntx.service.LoginService;

publicclass 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的理解