簡單的Spring入門例子

來源:互聯網
上載者:User
應一位朋友的要求,寫一個最簡單的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的理解。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.