struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alberto A. Flores" <aaflo...@gmail.com>
Subject Re: migration from struts 1 to 2
Date Mon, 28 Apr 2008 18:23:55 GMT
Yes it is!

Sandy143 wrote:
> Hello,
> 
> Can't we have the existing struts1 actions and struts2 actions in the same
> application?
> 
> I want to retain my existing web app which is using struts 1.2.8 and tiles
> 1.1
> 
> The new module in the same webapp, I would like to develop using struts2 .
> 
> Please let me know if this is something that is possible or not?
> 
> Thanks,
> Sandy
> 
> 
> sukritthareja wrote:
>> Here are the steps for Migrating from Struts 1 to Struts 2. You are
>> required to make changes in the below mentioned layers”
>>
>>
>> 1.	JARs
>>
>> - Add Struts 2 JARs in WEB-INF/lib
>>
>>
>> 2.	web.xml
>>
>> 	- Add following elements to web.xml
>> <?xml version="1.0" encoding="UTF-8"?>
>> <web-app id="WebApp_ID" version="2.4"
>> 	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
>>
>>     <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>
>>
>>     <listener>
>> 	  <listener-class>
>> 	     org.springframework.web.context.ContextLoaderListener
>>         </listener-class>
>>     </listener>
>>
>>     	
>> </web-app>
>>
>> 3.	struts-config.xml
>>
>> 	- Rename “struts-config.xml” to “struts.xml”. Technically, this file in
>> Struts 2 is 	more streamlined.  
>>
>> 	A typical struts-config.xml file of Struts 1 looks like
>> <?xml version="1.0" encoding="ISO-8859-1" ?>
>> <!DOCTYPE struts-config PUBLIC
>> "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
>> "http://struts.apache.org/dtds/struts-config_1_3.dtd ">
>>
>> <struts-config>
>>     
>>     <form-beans>
>>   <form-bean name="MyClassForm" type="forms.MyClassForm">
>>   </form-bean>
>>     </form-beans>
>>
>>   <action-mappings>
>> <action path="/MyClass" name="MyClassForm"    type="actions.MyClassAction" 
>> validate="false">
>>            <forward name="success" path="/Index.jsp"/>
>>       </action>
>>   </action-mappings>
>>
>>   <message-resources parameter="resources"/>
>>
>> </struts-config>
>>
>> -	Perform the following actions:
>>
>>
>>
>> a)	Replace DTD
>> b)	Replace <struts-config> tag with <struts>
>> c)	Include <include file="struts-default.xml"/>
>> d)	Remove the <form-beans> element
>> e)	Change <action-mappings> to <package name="hello-default"
>> extends="struts-default">
>> f)	Update each <action> element by
>> -	Removing from <action> element, the “name” attribute.
>> -	Changing the <action> “path” attribute to “name”
>> -	Changing the <action> “type” attribute to “class”
>> -	Changing the <forward> element into a <return> element
>>
>>        The new struts.xml now looks like
>>
>> <?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>
>>
>>     <include file="struts-default.xml"/>
>>
>>     <package name="hello-default" extends="struts-default">
>>
>>         <action name="MyClass" class="actions.MyClass">
>>             <result>/Index.jsp</result>
>>         </action>
>>     
>>     </package>
>>
>> </struts>
>>
>> 4.	Action Classes
>>
>> A typical ActionForm class in Struts 1 looks like
>>
>> import org.apache.struts.action.ActionForm;
>>
>> public class MyClassForm extends ValidatorForm {
>>
>> 	private String field1;
>>
>> 	public String getField1() {
>> 		return field1;
>> 	}
>>
>> 	public void setField1(String field1) {
>> 		this.field1 = field1;
>> 	}
>>
>> }
>>
>> A typical Action class in Struts 1 looks like
>>
>> import javax.servlet.http.*;
>> import org.apache.struts.action.*;
>> public class MyClassAction extends Action {
>>
>> 	public ActionForward execute(
>> 		ActionMapping mapping,
>> 		ActionForm form,
>> 		HttpServletRequest request,
>> 		HttpServletResponse response)
>> 		throws Exception {
>>
>> 			MyClassForm input = (MyClassForm) form;
>> 			input.setField1(“Hello”);
>> 			return mapping.findForward(“success”);
>> 	}
>> 	
>> }
>>
>> a) Copy all the properties from the ActionForm class to the Action class,
>> and remove the ActionForm class object completely. There is no ActionForm
>> in Struts-2.
>>
>> b) Make your Action class to extend ActionSupport, instead of Action.
>> While this is not mandatory, it is beneficial to do so because then any
>> POJO can be used as an Action Object. Further we then will have access to
>> predefined tokens such as SUCCESS and ERROR.
>>
>> c) The fileds are now a property of the only ActionSupport class. So the
>> values can be set directly. The way of returning “success” can be modified
>> to return Action.SUCCESS and return Action.ERROR
>>
>> The new Action class now looks like
>>
>>       
>> import com.opensymphony.xwork2.ActionSupport;
>>
>> public class Hello extends ActionSupport {
>>
>> 	public String execute() throws Exception {
>> 		setMessage(“Hello”);
>> 		return Action.SUCCESS;
>> 	}
>>
>> 	private String field1;
>>
>> 	public String getField1() {
>> 		return field1;
>> 	}
>> public void setField1(String field1) {
>> this.field1 = field1;
>> }
>>
>>
>> d). There is a special feature included in Struts 2 that gives the
>> programmer a flexibility of invoking method other than execute(). This can
>> be done by specifying the “method” attribute of <action> element inside
>> file “struts.xml”.
>>
>> <?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>
>>
>>     <include file="struts-default.xml"/>
>>
>>     <package name="hello-default" extends="struts-default">
>>
>>         <action name="MyClass" class="actions.MyClass" 			
>> method="myMethod">
>>             <result>/Index.jsp</result>
>>         </action>
>>     
>>     </package>
>>
>> </struts>
>>
>> 5.	JSPs
>>
>> A simple JSP in Struts 1 looks like 
>>
>> <%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
>> <html>
>>   <head>
>> 	<title>Hello!</title>
>>   </head>
>>   
>>   <form action="submit.action" method="post">	
>>     <body>
>> 	Name: <input type="text" name=" field1" /><br/>
>> 	<bean:write name="MyClassForm" property="field1" />
>> 	<input type="submit" />
>>     </body>
>>   </form>
>> </html>
>>
>> - Actions to be performed in this JSP are:
>>
>> a)	Replace <%@ taglib %> directive
>> b)	Use new set of tags defined by the struts-tags.tld
>>
>> The new JSP in Struts 2 would now look like
>>
>> <%@ taglib prefix="s" uri="/struts-tags" %>
>> <html>
>>   <head>
>> 	<title>Hello!</title>
>>   </head>
>>   <s:form action="submit.action" method="post"> 
>>    <body>
>> 	<s:textfield label="Name" name=" field1" />
>> 	<s:property value="field1"/>
>> 	<s:submit" />
>>     </body>
>>   </s:form>
>> </html>
>>
>>
>> 6.	Validations
>>
>>  Struts 1 developers use the Apache Commons Validator framework to
>> validate data. To enable validation, you must register the Validator
>> plug-in in the struts-config.xml file, and then make sure your own
>> ActionForms extend ValidatorForm instead of ActionForm. You can declare
>> validation rules in a validations.xml file. For example, the
>> validation.xml file you use states that a defect's description is
>> required. The 'validate' method is invoked by the Action before saving a
>> record. When the user does not provide a description, the Struts
>> ActionErrors collection is populated and its contents displayed on the
>> view page with the help of an <html:errors/> tag.
>>
>>  “validation.xml” file that validates a form, is described below:
>>
>> In Struts 2, we define validation in <ActionClassName>-validation.xml
>> file. 
>>
>> For example, validations defined for MyClass-validation.xml are
>>
>> <validators>
>>     <field name="field1">
>>         <field-validator type="requiredstring">
>>     	<message key="requiredstring" />
>>        </field-validator>
>>   </field>
>> </validators>
>>
>> Regards,
>> Sukrit Thareja
>>
>> Nils-Helge Garli wrote:
>>> The section about migration in the documentation [1] would be a good
>>> place to start.
>>>
>>> [1] - http://struts.apache.org/2.0.11.1/docs/migration-guide.html
>>>
>>> Nils-H
>>>
>>> On Tue, Apr 22, 2008 at 1:17 AM, Lalchandra Rampersad
>>> <lrampersaud@ceis.cujae.edu.cu> wrote:
>>>> How do I migrate from struts 1 to 2?
>>>>
>>>>
>>>>
>>>>  Saludos
>>>>
>>>>  Lalchandra Rampersaud
>>>>
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>>> For additional commands, e-mail: user-help@struts.apache.org
>>>
>>>
>>>
>>
> 

-- 

Alberto A. Flores
http://www.linkedin.com/in/aflores



Mime
View raw message