Archive for the ‘STRUTS’ Category

How to have 2 or more Struts config file

Some times we have different modules of a single project and each module has its own struts config file…
Now when you want to combine all the modules to make a complete project then sometimes we face problem to merge multiple struts config file into one.

So here is the Code how to have multiple struts config file in a project

In order to tell the framework about your different modules(different struts config file), we specify multiple ‘config’ initialization parameters in our Web.xml. we’ll still use ‘config’ to tell the ActionServlet about our “default” module, however, for each additional module, we will list an initialization parameter named “config /module “, where /module is the prefix for our module. For eg:-


<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/conf/struts-config1.xml</param-value>
</init-param>
<init-param>
<param-name>config/module1</param-name>
<param-value>/WEB-INF/conf/struts-config2.xml</param-value>
</init-param>

Here we have two modules. One happens to be the “default” module, identified by the param-name of “config”, and the other will be using the module prefix “/module1” based on the param-name it was given (“config/module1”).

Similarly we can write code for more than 2 Struts config file.

That’s it!!!

How to upload & download a file in Struts framework

Hello friends, I worked on a project to create a website for jobs seeker & jobs provider using Struts framework which required file uploading & downloading of Resume.

Before I explain you the code, let me give u brief introduction of struts framework first:-

Struts is a free open-source framework for creating Servlet/JSP based web applications based on Model-View-Controller (MVC) architecture. The Model represents the business or database code, the View represents the page design code, and the Controller represents the navigational code. The Struts framework is designed to help developers create web applications that utilize a MVC architecture.

you can use any IDE to develop your struts application like NetBeans, Eclipse or Weblogic.

First of all create a jsp named FileUpload

<html:html>
<head>
<title>Struts File Upload</title>
<html:base/>
</head>
<body>
<html:form action=”/fileupload” method=”post” enctype=”multipart/form-data”>
<font size=”5″>File Upload on Server</font>
<font color=”red”><html:errors/></font>
File Name
<html:file property=”theFile”/>
<center>
<html:submit>Upload File</html:submit>
</center>
</html:form>
</body>
</html:html>

Now since we have used html tag library so you will have to add
taglib uri of html in case of Netbeans.

This jsp will have file type property from where u can browse the file on clicking submit the action fileupload will be called.

Now create a Bean package named beans & then create a class bean named StrutsUploadAndSaveForm which will extend ActionForm class

package beans;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
public class StrutsUploadAndSaveForm extends ActionForm
{
private FormFile theFile;

public FormFile getTheFile() {
return theFile;
}

public void setTheFile(FormFile theFile) {
this.theFile = theFile;
}
}

in the above code getTheFile function Returns the File &
setTheFile function set the file whose parameters are passes.

Now create action package named action and create a action class named StrutsUploadAndSaveAction which extends Action class

package action;
import bean.StrutsUploadAndSaveForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import java.io.*;
public class StrutsUploadAndSaveAction extends Action
{
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Exception
{
StrutsUploadAndSaveForm myForm = (StrutsUploadAndSaveForm)form;
// Process the FormFile
FormFile myFile = myForm.getTheFile();
String contentType = myFile.getContentType();
//Get the file name
String fileName = myFile.getFileName();
byte[] fileData = myFile.getFileData();
//Get the servers upload directory real path name
String filePath = getServlet().getServletContext().getRealPath(“/”) +”upload”;
/* Save file on the server */
if(!fileName.equals(“”))
{
System.out.println(“Server path:” +filePath);
//Create file
File fileToCreate = new File(filePath, fileName);
//If file does not exists create file
if(!fileToCreate.exists())
{
FileOutputStream fileOutStream = new FileOutputStream(fileToCreate);
fileOutStream.write(myFile.getFileData());
fileOutStream.flush();
fileOutStream.close();
}

 

}
//Set file name to the request object
request.setAttribute(“fileName”,fileName);

return mapping.findForward(“success”);
}
}

 

/* This action class first takes the file which is set in the bean. then its actual path is stored in the variable filepath.
then if the filepath is not empty, a new file with same name is created inside realpath of servlet or jsp/upload
if the filepath is empty than fileOutStream is flushed.
& in the end name of the file is set in the request scope such that the same file can be downloaded latter.

Now enter the Code in Struts Config such that their is right mapping of the code.

<struts-config>
<form-beans>
<form-bean name=”FileUpload” type=”beans.StrutsUploadAndSaveForm”/>


</form-beans>

<action-mappings>

<action path=”/fileUpload” type=”action.StrutsUploadAndSaveAction” name=”FileUpload” scope=”request” validate=”true” input=”/FileUploadAndSave.jsp”>

<forward name=”success” path=”/downloadfile.jsp”/>

</action>

</action-mappings>

</struts-config>

Now create a jsp named downloadfile.jsp

<html>
<head>
<title>
Success</title>
</head>
<body>
<%
String fileName=(String)request.getAttribute(“fileName”);
%>

 

<p align=”center”><font size=”5″ color=”#000080″>File Successfully Received</font></p>
<p align=”center”><a href=”upload/<%=fileName%>”>Click here to download</a></p>
</body>

</html>