Configuring Netbeans to work with Struts2 framework
In this article I provide a workaround to let configure Netbeans Web Project, supporting Struts2 framework. Searching on the web, with Google and not only, I found an official plugin for Netbeans IDE, in developing status; but, sadly, last update was on 2008.
There is a blog , whose author provides an updated version of official plugin (it is modified for netbeans 6.7 and Struts 2.1.6) and this could be useful enough for my purpose…but maybe for curiosity or obduracy, I have created this workaround for installing and configuring a development environment, always updated to latest versions of both IDE and framework.
Very quick overview on Struts2 for those who already know Struts
Most revolutionary innovation provided by Struts2 is related, beyond a shadow of a doubt, with most important method in every Action: execute() method.
Unlike first version of Struts, in Struts2 this method is implemented without parameters to be passed;
and so anyone should ask: how to get the object which we need to work with?
With Struts, this is possible through Form beans, ActionForm. With Struts2, this becomes possible thanks to a specific pattern, known as inversion control or dependency injection.
I don’t pretend to dwell on a theoric explanation about this pattern, but for most curious of you, I warmly suggest to read this interesting article, written by Martin Fowler.
Every way, this is the pattern which Spring framework is known for.
Actions play a difference role, they pass from Controller to Model and View’s layers are now able to pull data directly from the actions, there is no more need of an extra object of model layer. The framework is based on 5 main components:
Creation of a Web Project supporting Struts2, with Netbeans
The first step is to create e new empty WebProject:
File –> New –> Project
From Categories choose Java Web and, on the left, Web Application. Then Next.
In the next view, give a name to the project, now select an Application Server and in the last page leave unchecked the Struts2 support . Then Finish.
xwork.jar
ognl.jar
freemarker.jar
commons-logging.jar
——————–
commons-fileupload.jar
It seems that adding all of those it is not a good idea, because they can generate conflicts. Last two libraries listed above became essential since version 2.1 of struts, I’ll investigate on that.
Next step is writing web.xml file.
In filter name field type: Struts2In filter class field, we should enter the FilterDispatcher class, who handles requests filtering. But the API of this class indicates:
“Since Struts 2.1.3, use StrutsPrepareAndExecuteFilter instead or StrutsPrepareFilter and StrutsExecuteFilter if needing using the ActionContextCleanUp filter in addition to this one”
The reason of this is still a mystery for me, until the official documentation on
versions subsequent to 2.1.3 will not be updated.
Inside Filter Mapping, apply to URL: /*
Final xml will be something like this:
<web-app version="2.5" 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_2_5.xsd"> <filter> <filter-name>Struts2</filter-name> <filter-class>apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>Struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
Creation of struts.xml file.
Struts.xml file, in version 2 of Struts, replace struts-config.xml. Here it is the template, very basic, for every project.
</div> <div style="margin-bottom: 0; margin-top: 0;"> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="default" extends="struts-default"> </package> </struts>
Now It is all ready to run you first application, It would be very interesting to delve into other configuring issues of Struts2, for example the properties files. But in this context, they can be left empty.
official site.