(三)SpringMVC實現

 

一、在web.xml中配置DispatcherServlet
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 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"
version="2.4" >
<servlet>                                                      
<servlet-name> Dispatcher </servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name> contextConfigLocation </param-name>
<param-value> /WEB-INF/Config.xml </param-value>
</init-param>
</servlet>
<servlet-mapping>                                             
<servlet-name> Dispatcher </servlet-name>
<url-pattern> *.do </url-pattern>
</servlet-mapping>
</web-app>
    Servlet定義
這裏定義了請求分發Servlet,即:org.springframework.web.servlet.DispatcherServletDispatcherServlet 是Spring MVC 中負責請求調度的核心引擎,全部的請求將由此Servlet 根據配置分發至各個邏輯處理單元。其內部同時也維護了一個ApplicationContext實例。咱們在<init-param>節點中配置了名爲「contextConfigLocation」的Servlet參數,此參數指定了Spring配置文件的位置「/WEB-INF/Config.xml」。若是忽略此設定,則默認爲「/WEB-INF/<servlet name>-servlet.xml」,其中<servlet name>以Servlet 名替換(在當前環境下,默認值也就是「/WEB-INF/Dispatcher-servlet.xml)。
    請求映射
將全部以.do結尾的請求交給Spring MVC進行處理。固然,也能夠設爲其餘值如.action、.action等。
 
二、在config.xml中配置Spring MVC所需的核心模塊。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
SpringFrameWork Developer’s Guide Version 0.6
September 2, 2004 So many open source projects. Why not Open your Documents?
<beans>
<!--Definition of View Resolver -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResou
rceViewResolver" >
<property name="viewClass" >
<value>
org.springframework.web.servlet.view.JstlView
</value>
</property>
<property name="prefix" >
<value>
/WEB-INF/view/
</value>
</property>
<property name="suffix" >
<value> .jsp </value>
</ property>
</bean>
<!--Request Mapping -->
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUr
lHandlerMapping" >
<property name="mappings" >
<props>
<prop key="/login.do" > LoginAction </prop>
</props>
</property>
</bean>
<!---Action Definition-->
<bean id="LoginAction"
class="com.travelsky.springMVC.action.LoginAction" >
<property name="commandClass" >
<value> com.travelsky.springMVC.action.LoginInfo </value>
</property>
<property name="fail_view" >
<value> loginfail </value>
</property>
<property name="success_view" >
<value> main </value>
</property>
</bean>
</beans>
    Resolver設定
Resolver將把輸出結果與輸出界面相融合,爲表現層提供呈現資源。
    View Resolver的viewClass參數
這裏使用JSP頁面做爲輸出,所以,設定爲:org.springframework.web.servlet.view.JstlView
其他可選的viewClass還有:
Ø org.springframework.web.servlet.view.freemarker.FreeMarkerView(用於基於FreeMarker模板的表現層實現)
Ø org.springframework.web.servlet.view.velocity.VelocityView(用於基於velocity模板的表現層實現)等。
   ⑷ View Resolver的prefix和suffix參數
指定了表現層資源的前綴和後綴,運行時,Spring 將爲指定的表現層資源自動追加前綴和後綴,以造成一個完整的資源路徑。另參見⑻
⑸ 「請求/處理單元」關係映射
能夠看到,這裏咱們將「/login.do」請求映射處處理單元LoginAction。<props>節點下能夠有多個映射關係存在,目前咱們只定義了一個。
⑹ LoginAction定義
這裏定義了邏輯處理單元LoginAction 的具體實現,這裏,LoginAction 的實現類爲com.travelsky.springMVC.action.LoginAction。
⑺ LoginAction的請求數據對象
commandClass 參數源於LoginAction 的基類BaseCommandController,BaseCommandControlle 包含了請求數據封裝和驗證方法( BaseCommandController.bindAndValidate ) , 它將根據傳入的HttpServletRequest構造請求數據對象。這裏咱們指定commandClass 爲com.travelsky.springMVC.action.LoginInfo,這是一個很是簡單的Java Bean,它封裝了登陸請求所需的數據內容:
public class LoginInfo {
    private String username;
    private String password;
    public String getPassword() {
       return password;
    }
    public void setPassword(String password) {
       this.password = password;
    }
    public String getUsername() {
       return username;
    }
    public void setUsername(String username) {
       this.username = username;
    }
}
返回視圖定義
對於這裏的LoginAction 而言,有兩種返回結果,即登陸失敗時返回錯誤界面,登
錄成功時進入系統主界面。
對應咱們配置了fail_view、success_view兩個自定義參數。
參數值將由Resolver進行處理,爲其加上前綴後綴,如對於fail_view而言,實
際的視圖路徑爲/WEB-INF/view/loginfail.jsp。
以後,Resolver 會將LoginAction的返回數據與視圖相融合,返回最終的顯示界
面。
三、控制器LoginAction實現
public class LoginAction extends SimpleFormController {
    private String fail_view;
    private String success_view;
   
……
//處理業務操做
    @SuppressWarnings("unchecked")
    protected ModelAndView onSubmit(HttpServletRequest request,HttpServletResponse response,Object cmd, BindException ex)
           throws Exception {
       LoginInfo loginInfo = (LoginInfo) cmd;
       if (login(loginInfo) == 0) {
           HashMap result_map = new HashMap();
           result_map.put("logininfo", loginInfo);
           List msgList = new LinkedList();
           msgList.add("msg1");
           msgList.add("msg2");
           msgList.add("msg3");
           result_map.put("messages", msgList);
           //返回模型視圖對象,提供解析器處理
           return new ModelAndView( this.getSuccess_view(), result_map);
       } else {
           return new ModelAndView( this.getFail_view());
       }
    }
……
}
四、視圖
Index.jsp
<body>
       <form action="login.do" method="post" >
           <p align="center">
              登陸
           </p>
           <div align="center">
           <br>
           用戶名:
           <input type="text" name="username">
           <br><br>
           密 碼 :
           <input type="password" name="password">
           <br>
           <p>
              <input type="submit" value=" 提交 " name="B1">
              <input type="reset" value=" 重置 " name="B2">
           </p>
           </div>
       </form>
    </body>
 
Main.jsp
<body>
        <p>
           Login Success!!!
       </p>
       <p>
           Current User:
           <c:out value="${logininfo.username}" />
           <br>
       </p>
       <p>
           Your current messages:
       </p>
       <c:forEach items="${messages}" var="item" begin="0" end="9" step="1"
           varStatus="var">
           <c:if test="${var.index % 2 == 0}">
*
</c:if>
${item}<br>
       </c:forEach>
    </body>

Spring MVC提供了WEB MVC的開發框架,與輕量級Spring結合,實現了一套MVC的開發機制,同時擁有本身的不少特性。其在架構實現方面,與Struts很類似,但其沒有實現struts的徹底的功能,去除了StrutsOGNLStruts標籤,在web的應用性能上有明顯提高,展現了一個較爲輕捷的MVC開發框架。在本文中,僅對Spring MVC的基本使用及原理作了分析和介紹,至於Spring MVC的其餘功能配置有待研究。 java

相關文章
相關標籤/搜索