
Quick Contact
Java Tutorial
- What is Java?
- History of Java
- Hello Java Program
- Features of Java
- Basic Syntax
- Java Setup
- Data Types in Java
- Java Variables
- Operators in Java
- JVM
- Java If-else Statement
- Switch Case Statement
- Java Loops
- Do-While Loop
- Java While Loop
- Continue Statement
- Break Statement in Java
- Constructors in Java
- Oops Concept in Java
- Features of OOPs
- Inheritance
- Exeception handeling
- Aggregation (HAS-A relationship) in Java
- Method Overriding in Java
- Method Overloading
- Java Static Keyword
- Java This Keyword
- Java Final Keyword
- Polymorphism
- Static Binding and Dynamic Binding
- Abstract class in Java
- Access Modifiers in Java
- Difference between abstract class and interface
- Interface in Java
- Garbage Collection in Java
- Java Package
- Encapsulation
- Serialization and Deserialization in Java
- Java Inner Classes
- Java Applets
- Multithreading in Java
- Thread Priorities in Java
- Thread Creation
- Inter Thread Communication
- Wrapper Classes in Java
- Java Input Output
- Java AWT Introduction
- Java Layout Manager
- Java Layout Policy
- Java AWT Events
- Collection Framework
- Collection Framework List Interface
- Swing in Java
- Swing Utility Classes
- Swing Layout Managers
- Java JDBC
- Hibernate Framework Overview – Architecture and Basics
Springboot
- Spring Environment Setup
- Spring Boot CRUD REST API Project using IntelliJ IDEA | Postman | MySQL
- Dockerizing Spring Boot Application | Spring Boot Docker Tutorial
- spring-boot-restapidocumentation with swagger
- Spring Boot HttpClient Overview
- Apache HttpClient POST HTTP Request Example
- Apache HttpClient PUT HTTP Request Example
- Apache HttpClient DELETE HTTP Request Example
- Apache HttpClient HTML Form POST Request Example
- Spring Boot JSP Exampl
- Deploying Spring Boot WAR file with JSP to Tomcat
- Spring Boot Annotations
- Spring Core Annotations
- Spring MVC Annotations with Examples
- Spring Scheduling Annotations
- Spring - Java-based Container Configuration
- Spring Java Based Configuration Example
Hibernate
- Hibernate 5 hello world
- Hibernate- One to One Unidirectional Mapping Annotation Example
- Hibernate - Batch Processing
- Hibernate - Interceptors
- Hibernate 5 - Create, Read, Update and Delete (CRUD) Operations Example
- Hibernate Transaction Management
- Hibernate One to Many Unidirectional Mapping Example
- Hibernate One to Many Bidirectional Mapping Example
- Hibernate Many to Many Annotation Mapping Example
- Hibernate Primary KeyJoin Column
- Hibernate First Level Cache with Example
- Hibernate XML Configuration Example with Maven + Eclipse + MySQL Database
- Hibernate Java Configuration Example
- JPA 2 with Hibernate 5 Bootstrapping Example
- JPA and Hibernate Cascade Types
- Hibernate/JPA - Primary Key Generation
- Hibernate 5 - Enum Type Mapping Example
- Hibernate Component Mapping
- Hibernate Object States – Transient,Persistent and Detached
- Hibernate 5 - Save an Entity Example
- Hibernate 5 - Persist an Entity Example
- Hibernate 5 - saveOrUpdate() Method Example
- Hibernate 5 - get(), load() and byId() Method Examples
- Hibernate 5 - merge() Example
- Hibernate 5 - Delete or Remove an Entity Example
- Hibernate 5 - load() Method Example
- Hibernate Session Interface Methods
- Hibernate Session.clear() Method Example
- Introduction Of Java strutes to Architecture
- Struts 2 - Architecture
- Struts 2 - Configuration Files
- Struts 2 - Actions
- Struts 2 - Interceptors
- Struts 2 - Results & Result Types
- Struts 2 - Value Stack/OGNL
- Struts 2 - File Uploading
- Struts 2 - Database Access
- Struts 2 - Validations Framework
JAVA FX
- JavaFX Tutorial
- Introduction to JavaFX Pane
- JavaFX Popup
- JavaFX group
- JavaFX Controller
- JavaFX Gradient Color
- JavaFXAnchorPane
- JavaFXTabPane
- JavaFX Scene
- JavaFX Stage
- JavaFXWebView
- JavaFX Timeline
- JavaFX Timer
- JavaFX Image
- JavaFX Background
- JavaFX dialog
- JavaFX Font
- JavaFXTextArea
- JavaFXObservableList
- JavaFX GUI
- JavaFX FXML
- JavaFXEventHandler
- JavaFXGradle
- JavafxScrollpane
- JavaFXAPI
Struts 2 – File Uploading
The Struts 2 framework provides built-in support for processing file upload using “Form-based File Upload in HTML”. When a file is uploaded, it will typically be stored in a temporary directory and they should be processed or moved by your Action class to a permanent directory to ensure the data is not lost.
Note –
Servers may have a security policy in place that prohibits you from writing to directories other than the temporary directory and the directories that belong to your web application.
File uploading in Struts is possible through a pre-defined interceptor called FileUpload interceptor which is available through the org.apache.struts2.interceptor.FileUploadInterceptor class and included as part of thedefaultStack. Still you can use that in your struts.xml to set various paramters as we will see below.
Create View Files
Let us start with creating our view which will be required to browse and upload a selected file. So let us create an index.jsp with plain HTML upload form that allows the user to upload a file −
<%@ page language ="java"contentType="text/html; charset = ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@taglib prefix ="s"uri="/struts-tags"%> < !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> < html> < head> < title>File Upload< /title> < /head> < body> < formaction="upload"method="post"enctype="multipart/form-data"> < labelfor="myFile">Upload your file< /label> < inputtype="file"name="myFile"/> < inputtype="submit"value="Upload"/> < /form> < /body> < /html>
There is couple of points worth noting in the above example. First, the form’s enctype is set to multipart/form-data. This should be set so that file uploads are handled successfully by the file upload interceptor. The next point noting is the form’s action method upload and the name of the file upload field – which is myFile. We need this information to create the action method and the struts configuration.
Next, let us create a simple jsp file success.jsp to display the outcome of our file upload in case it becomes success.
<%@ page contentType="text/html; charset = UTF-8" %> <%@taglib prefix ="s"uri="/struts-tags" %> < html> < head> < title>File Upload Success< /title> < /head> < body> You have successfully uploaded < s:propertyvalue="myFileFileName"/> < /body> < /html>
Following will be the result file error.jsp in case there is some error in uploading the file −
<%@ page contentType="text/html; charset = UTF-8" %> <%@taglib prefix ="s"uri="/struts-tags" %> < html> < head> < title>File Upload Error< /title> < /head> < body> There has been an error in uploading the file. < /body> < /html>
Create Action Class
Next, let us create a Java class called uploadFile.java which will take care of uploading file and storing that file at a secure location −
package com.ducatindia.struts2; importjava.io.File; importorg.apache.commons.io.FileUtils; importjava.io.IOException; import com.opensymphony.xwork2.ActionSupport; publicclassuploadFileextendsActionSupport{ privateFilemyFile; privateStringmyFileContentType; privateStringmyFileFileName; privateStringdestPath; publicString execute(){ /* Copy file to a safe location */ destPath="C:/apache-tomcat-6.0.33/work/"; try{ System.out.println("Src File name: "+myFile); System.out.println("Dst File name: "+myFileFileName); FiledestFile=newFile(destPath,myFileFileName); FileUtils.copyFile(myFile,destFile); }catch(IOException e){ e.printStackTrace(); return ERROR; } return SUCCESS; } publicFilegetMyFile(){ returnmyFile; } publicvoidsetMyFile(FilemyFile){ this.myFile=myFile; } publicStringgetMyFileContentType(){ returnmyFileContentType; } publicvoidsetMyFileContentType(StringmyFileContentType){ this.myFileContentType=myFileContentType; } publicStringgetMyFileFileName(){ returnmyFileFileName; } publicvoidsetMyFileFileName(StringmyFileFileName){ this.myFileFileName=myFileFileName; } }
The uploadFile.java is a very simple class. The important thing to note is that the FileUpload interceptor along with the Parameters Interceptor does all the heavy lifting for us.
The FileUpload interceptor makes three parameters available for you by default. They are named in the following pattern −
-
[your file name parameter] −
This is the actual file that the user has uploaded. In this example it will be “myFile”
-
[your file name parameter]ContentType −
This is the content type of the file that was uploaded. In this example it will be “myFileContentType”
-
[your file name parameter]FileName −
This is the name of the file that was uploaded. In this example it will be “myFileFileName”
The three parameters are available for us, thanks to the Struts Interceptors. All we have to do is to create three parameters with the correct names in our Action class and automatically these variables are auto wired for us. So, in the above example, we have three parameters and an action method that simply returns “success” if everything goes fine otherwise it returns “error”.
Configuration Files
Following are the Struts2 configuration properties that control file uploading process −
Sr.No | Properties & Description |
---|---|
1 |
struts.multipart.maxSizeThe maximum size (in bytes) of a file to be accepted as a file upload. Default is 250M. |
2 |
struts.multipart.parserThe library used to upload the multipart form. By default is jakarta |
3 |
struts.multipart.saveDirThe location to store the temporary file. By default is javax.servlet.context.tempdir. |
In order to change any of these settings, you can use constant tag in your applications struts.xml file, as I did to change the maximum size of a file to be uploaded.
Let us have our struts.xml as follows −
< ?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> < constantname="struts.devMode"value="true"/> < constantname="struts.multipart.maxSize"value="1000000"/> < packagename="helloworld"extends="struts-default"> < actionname="upload"class="com.ducatindia.struts2.uploadFile"> < resultname="success">/success.jsp< /result> < resultname="error">/error.jsp< /result> < /action> < /package> < /struts>
Since, FileUpload interceptor is a part of the default Stack of interceptors, we do not need to configure it explicity. But, you can add
The maximumSize parameter sets the maximum file size allowed (the default is approximately 2MB). The allowedTypes parameter is a comma-separated list of accepted content (MIME) types as shown below −
< actionname="upload"class="com.tutorialspoint.struts2.uploadFile"> < interceptor-refname="basicStack"> < interceptor-refname="fileUpload"> < paramname="allowedTypes">image/jpeg,image/gif< /param> < /interceptor-ref> < resultname="success">/success.jsp< /result> < resultname="error">/error.jsp< /result> < /action>
Following is the content of web.xml file −
< ?xml version ="1.0"Encoding="UTF-8"?> < web-appxmlns: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>Struts 2< /display-name> < welcome-file-list> < welcome-file>index.jsp< /welcome-file> < /welcome-file-list> < 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> < /web-app>
Error Messages
The fileUplaod interceptor uses several default error message keys −
Sr.No | Error Message Key & Description |
---|---|
1 |
struts.messages.error.uploadingA general error that occurs when the file could not be uploaded. |
2 |
struts.messages.error.file.too.largeOccurs when the uploaded file is too large as specified by maximumSize. |
3 |
struts.messages.error.content.type.not.allowedOccurs when the uploaded file does not match the expected content types specified. |
Apply now for Advanced Java Training Course