1. 程式人生 > >把系統從Struts2 遷移到 Spring MVC六大步總結

把系統從Struts2 遷移到 Spring MVC六大步總結

Step 1: 替換基本的框架庫。

Firstly while migrating from struts to spring we have to replace our struts related libraries with spring libraries in lib folder.

I have mentioned basic libraries of both struts and spring for your clarification.

Struts basic libraries :

  1. struts.jar
  2. struts-legacy.jar
  3. etc.. 

Spring basic libraries :


  1. standard.jar
  2. org.springframework.asm-4.0.1.RELEASE-A.jar
  3. org.springframework.beans-4.0.1.RELEASE-A.jar
  4. org.springframework.context-4.0.1.RELEASE-A.jar
  5. org.springframework.core-4.0.1.RELEASE-A.jar
  6. org.springframework.expression-4.0.1.RELEASE-A.jar
  7. org.springframework.web.servlet-4.0.1.RELEASE-A.jar
  8. org.springframework.web-4.0.1.RELEASE-A.jar
  9. etc..

Step 2: 修改web.xml配置檔案

In this step we have to remove Action filter dispatcher for the web.xml and add Spring dipatcher servlet as Front controller
Work on new technology  : 

In Strut application web.xml look like as follows

<?xml version="1.0" encoding="UTF-8"?>  
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Struts2MyFirstApp</display-name> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>Login.jsp</welcome-file> </welcome-file-list> </web-app>

In Spring application web.xml look like as follows

<?xml version="1.0" encoding="UTF-8"?>  
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  
  <display-name>springApp</display-name>  
  <servlet>  
    <servlet-name>springApp</servlet-name>  
    <servlet-class>  
            org.springframework.web.servlet.DispatcherServlet  
        </servlet-class>  
    <load-on-startup>1</load-on-startup>  
  </servlet>  
  <servlet-mapping>  
    <servlet-name>springApp</servlet-name>  
    <url-pattern>/</url-pattern>  
  </servlet-mapping>  
</web-app>  

Step 3: 替換Struts本身的配置檔案

Now replace all struts configuration files to spring configuration file as follows

In Struts applivation struts configuration file-

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE struts PUBLIC  
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
    "http://struts.apache.org/dtds/struts-2.0.dtd">  
   
<struts>  
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />  
    <constant name="struts.devMode" value="false" />  
    <constant name="struts.custom.i18n.resources" value="myapp" />  
   
    <package name="default" extends="struts-default" namespace="/">  
        <action name="login" class="com.geekonjavaonjava.struts2.login.LoginAction">  
            <result name="success">Welcome.jsp</result>  
            <result name="error">Login.jsp</result>  
        </action>  
    </package>  
</struts>  

In Spring application spring configuration file as follows

<?xml version="1.0" encoding="UTF-8"?>    
<beans xmlns="http://www.springframework.org/schema/beans"    
     xmlns:context="http://www.springframework.org/schema/context"    
     xmlns:p="http://www.springframework.org/schema/p"      
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
     xsi:schemaLocation="http://www.springframework.org/schema/beans    
    http://www.springframework.org/schema/beans/spring-beans-4.0.xsd    
    http://www.springframework.org/schema/context    
    http://www.springframework.org/schema/context/spring-context-4.0.xsd">    
        
     <context:component-scan base-package="com.geekonjavaonjava.spring.login.controller" />    
        
     <bean id="viewResolver"  class="org.springframework.web.servlet.view.InternalResourceViewResolver">    
        <property name="prefix">    
          <value>/WEB-INF/views/</value>    
        </property>    
        <property name="suffix">    
          <value>.jsp</value>    
        </property>    
      </bean>    
</beans>  <span style="font-family: Times New Roman;"><span style="white-space: normal;">  
</span></span>  
Here, <context:component-scan> tag is used, so that spring will load all the components from given package i.e. "com.geekonjavaonjava.spring.login.controller".

Use this in Struts2 :

We can use different view resolver, here I have used InternalResourceViewResolver. In which prefix and suffix are used to resolve the view by prefixing and suffixing values to the object returned by ModelAndView in action class.

Step 4: 修改JSP檔案

While migration an application from struts to spring we need to change in jsp file as following

Firstly replace all tlds-

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>  
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>  
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>  
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>

Replace these with following spring taglib's :

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>  
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>  

In Struts :

<html:form action="/addLogin" method="post">  

In Spring :

<form:form method="POST" commandName="loginForm" name="loginForm" action="login.do"> 
Here commandName is going to map with corresponding formbean for that jsp. Next we will see, how action is getting called with spring 4 annotations.

Step 5: 修改Action 類檔案

Now following changes need to be done in action classes for struts to spring migration using annotations-

Struts Action:

package com.geekonjavaonjava.struts2.login;  
  
import com.opensymphony.xwork2.ActionSupport;  
  
/** 
 * @author geekonjava 
 * 
 */  
@SuppressWarnings("serial")  
public class LoginAction  extends ActionSupport{  
 private String username;  
    private String password;  
      
 public String execute() {  
     
        if (this.username.equals("geekonjava")   
                && this.password.equals("sweety")) {  
            return "success";  
        } else {  
         addActionError(getText("error.login"));  
            return "error";  
        }  
    }  
  
 public String getUsername() {  
  return username;  
 }  
  
 public void setUsername(String username) {  
  this.username = username;  
 }  
  
 public String getPassword() {  
  return password;  
 }  
  
 public void setPassword(String password) {  
  this.password = password;  
 }  
   
}  

Spring action

package com.geekonjavaonjava.spring.login.controller;  
  
import org.springframework.stereotype.Controller;  
import org.springframework.ui.ModelMap;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RequestMethod;  
  
/** 
 * @author GeekOnJava 
 * 
 */  
@Controller  
public class LoginController {  
   
 @RequestMapping(value="/login.do", method = RequestMethod.GET)  
 public String doLogin(ModelMap model, LoginForm loginForn) {  
 if (this.username.equals("geekonjava")   
                && this.password.equals("sweety")) {  
            model.addAttribute("message", "Login Success");  
        } else {  
            model.addAttribute("message", "Login Failure");  
        }  
         return "home";  
   
 }  
}  

Step 6: 修改前端驗證機制

In struts JSP file validation changes as follows

<%  
 ActionErrors actionErrors = (ActionErrors)request.getAttribute("org.apache.struts.action.ERROR");  
%>

In Spring JSP file as follows-

<form:errors path="*" cssClass="error" /> 

相關推薦

系統Struts2 遷移Spring MVC大步總結

Step 1: 替換基本的框架庫。Firstly while migrating from struts to spring we have to replace our struts related libraries with spring libraries in lib folder.I have m

Struts2Spring MVC 區別 今天面試被問到了

上下 知識庫 quest 程序 body del esp 創建 let 雖然說沒有系統的學習過Spring MVC框架, 但是工作這麽長時間, 基本上在WEB層使用的都是Spring MVC, 自己覺得Struts2也是一個不錯的WEB層框架, 這兩種框架至今自己還未有比較

淺談struts2spring MVC的區別

一、框架機制    1. spring MVC是通過servlet的方式進行攔截,在第一次請求傳送時初始化,並隨著容器關閉而銷燬。     2. struts2是通過filter(攔截器)的方式進行攔截,在容器初始化時載入。晚於servlet銷燬。 二、攔截機制  

Struts2Spring MVCSpring優缺點整理

Struts2的優點 Struts2 是一個相當強大的Java Web開源框架,是一個基於POJO的Action的MVC Web框架。它基於當年的Webwork和XWork框架,繼承其優點,同時做了相當的改進。Struts2現在在Java Web開發界的地位可以說是大紅

我將系統Windows遷移至Linux下的點點滴滴

一、寫在最前   由於本人的技術水平有限,難免會出現錯誤。本文對任何一個人有幫助都是我莫大的榮幸,任何一個大神對我的點撥,我都會感激不盡。 二、技術選型   在2013年8月低的時候,公司中了XXX市場監督局肉品配送車輛監控的專案。整個系統軟體部分需要實現的功能不難,最大的難點就是伺服器的系統要求是Li

日誌系統windows遷移到linux伺服器

使用yum install java      yum install jdk 安裝了java環境。 用文字編輯器寫一個java程式來驗證,儲存在/search/bin目錄,檔名:HelloWorld.java,輸入如下內容:  public class HelloWor

多專案集中許可權管理系統 採用cas +shiro+spring mvc+mbatis+bootstrap單點登入

流程架構圖: 這裡許可權系統也可以理解為cas client專案 系統效果圖: 業務場景:多專案統一認證登入,許可權統一管理,許可權系統管理使用者資料,其他業務系統只維護業務資料,使用者資料一律來自許可權系統 該功能目前經過半個多月的努力 在巨大壓力下終於完成了! 目前國內

struts1、struts2spring mvc的action和HttpServlet、filter是否單例

struts1 package com.struts1.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; impo

43、如何系統不停機遷移到分庫分表的?

1、面試題 現在有一個未分庫分表的系統,未來要分庫分表,如何設計才可以讓系統從未分庫分表動態切換到分庫分表上? 2、面試官心裡分析 你看看,你現在已經明白為啥要分庫分表了,你也知道常用的分庫分表中介軟體了,你也設計好你們如何分庫分表的方案了(水平拆分、垂直拆分、分表),那問題來了,你接下

資料庫MYSQL遷移到POSTGRESQL

終於決定把資料庫從MYSQL轉到postgresql了。如何遷移是個問題。手工遷移太麻煩。終於從POSTGRESQL的網站上找到了一個小的遷移工具名字叫mysql2pgsql.perl,這是一個perl編寫的小程式。用法是先把MYSQL裡的資料DUMP下來儲存為mysql.s

Spring,Spring MVC,MyBatis,Hibernate總結

將之前學習的框架知識進行了UML圖總結,若有錯誤或不當之處,勞煩朋友們指正,會及時作出修改和補充; [toc] Spring Spring MVC MyBatis,Hibernate

Spring MVC常見bug總結----持續更新中

一、   Spring MVC的配置檔案Springmvc-servlet.xml報錯,在新增 <context:component-scan base-package="controller" />  來指定控制器所在的包時,視窗顯示紅叉,報錯內容為: Mu

Spring MVC入門知識總結

not 實現 前端控制器 步驟 將在 tlv 進入 檢查 shm 2.1、Spring Web MVC是什麽 Spring Web MVC是一種基於Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責

[讀後感]spring Mvc 教程框架實例以及系統演示下載

溝通 odi size ffi com xml文件 點贊 事務 共享 [讀後感]spring Mvc 教程框架實例以及系統演示下載太陽火神的漂亮人生 (http://blog.csdn.net/opengl_es)本文遵循“署名-非商業用途-保持一致”創作公用協議轉載請

spring mvc@ResponseBody取到json發現中文亂碼

tab reat builder attr cover proc first hresult acc   問題背景:如題。   問題定位:代碼跟蹤,從源頭入手,一步一步跟進,直到設置中文編碼的地方。   問題代碼: /** * 獲取單個測試樁接口內容

java電子商務系統源碼 Spring MVC+mybatis+spring boot+spring security

電子商務平臺 word 解決方案 功能 截圖 mybatis 互聯 包括 數據監控 鴻鵠雲商大型企業分布式互聯網電子商務平臺,推出PC+微信+APP+雲服務的雲商平臺系統,其中包括B2B、B2C、C2C、O2O、新零售、直播電商等子平臺。 分布式、微服務、雲架構電子商

Spring MVC筆記() springMVC標簽

etc auth del trie spring utils tla print try 記錄下SPRINGMVC常用的標簽,直接代碼,不解釋: package com.bwy.springmvc.tag.textbox; /** * @author Administ

Spring MVC Controller向頁面傳值的方式

用戶 () 傳參數 control let att model enter 設定 Spring MVC 從 Controller向頁面傳值的方式 在實際開發中,Controller取得數據(可以在Controller中處理,當然也可以來源於業務邏輯層),傳給頁面,常用的方

基於Vue+Spring MVC+MyBatis+Shiro+Dubbo開發的分布式後臺管理系統

java dubbo shiro vue 分布式 最近項目中使用了shiro做權限管理,在開發過程中也踩了一些坑,於是便有了開發個應用鞏固一下所學知識的想法,正好在開發的過程裏學習一下Vue開發。技術棧方面,現在前後端分離大行其道,於是也采用了前後端分離的模式,前端基於Vue+Elemen

Struts2如何實現MVC,與Spring MVC有什麽不同?

lte result map span 處理 view app pin resolve    Struts2采用filter充當前端控制器處理請求,filter會根據Struts.xml的配置,將請求分發給不同的業務控制器Action,再由Action處理具體的業務邏輯。A