1. Загрузить файл struts2
Реализация загрузки файлов Struts2 очень проста и может быть выполнена всего за несколько простых шагов;
Уведомление:
(1) Тег Struts2 для загрузки файла: <s: file name = "" label = "upload"/>
(2) условием для загрузки файлов является метод атрибута формы = "post" ectype = "Multipart/Form-Data";
(3) Веб-приложение должно включать в себя обыкновенную функцию.
(4) Максимально разрешенный размер файла может быть настроен на struts.xml: <constant name = "struts.multipart.maxsize" value = "......"/>, по умолчанию 2м;
1. Нормальная загрузка файлов <Br /> Правила реализации:
(1) Установите элемент управления формой в JSP <S: File name = "upload" label = "upload"/>
(2) Определите атрибуты в действии:
Загрузка частного файла; // Включает содержимое файла
Private String uploadfilename; // имя загруженного файла;
Private String uploadContentType; // тип MIME файла загрузки;
Эти атрибуты будут автоматически назначены при загрузке файла;
(3) завершить функцию записи диска в execute ();
Пример кода:
Upload01action.java
пакет org.upload.action; Импорт java.io.file; импортировать java.io.fileinputstream; Импорт java.io.fileOutputStream; Импорт org.apache.struts2.servletactionContext; Import Com.OpensyMphony.xwork2.ActionsUpport; открытый класс opload01action расширяет Actionsupport {private file upload; Private String uploadfilename; Private String uploadContentType; Приватное название строки; public String execute () Throws Exception {String path = ServletActionContext.getServletContext (). getRealPath ("/web-inf/upload"); String fileName = path+file.separator+name; FileInputStream in = new FileInputStream (upload); FileOutputStream OUT = new FileOutputStream (FileName); байт [] b = новый байт [1024]; int len = 0; while ((len = in.read (b))> 0) {out.write (b, 0, len); } out.close (); вернуть успех; } public file getUpload () {return upload; } public void setUpload (upload file) {this.upload = upload; } public String getUploadFilename () {return uploadfilename; } public void setUploadFilEname (string uploadfilEname) {this.uploadFilename = uploadfilename; } public String getUploadContentType () {return uploadContentType; } public void setUploadContentType (string uploadContentType) {this.UploadContentType = uploadContentType; } public String getName () {return name; } public void setName (string name) {this.name = name; }} struts.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Struts Public "-// Apache Software Foundation // DTD Конфигурация Struts 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constancant name = "struts". <constant name = "struts.custom.i18n.resources" value = "message"> </constant> <name = "package =" default "namepace ="/"extends =" struts-default "> <name =" upload0*"> <param name =" name "> 1.jpg </result>/{1}. 1. Jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP '1.jsp' Начальная страница </title> </head> <body> <s: form action = "upload01" method = "post" ectype = "multipart/form-data"> <s: имя файла = "upload" label = "upload"> </s: file> <s: отправить Value = "upload"> </s: отправить> </s: form> </body> </ht> </ht> </ht> </ht>
2. Используйте перехватчики для фильтрации
Метод вручную реализации фильтрации очень прост, который состоит в том, чтобы использовать входную проверку для фильтрации, то есть фильтрация в validate ();
Метод перехвата, о котором мы хотим поговорить, - это хороший способ. Его нужно только настроить в файле конфигурации. Он имеет хорошую гибкость и может ограничить тип файла и размер файла. Если загруженный файл не соответствует требованиям, он вернет логическое представление ввода;
Шаги по настройке перехвата:
(1) перехватчик для загрузки файлов является FileUpload;
(2) заданные параметры должны быть разрешены и максимально размером;
(3) После перехватчика FileUpload вам необходимо добавить <receptor-ref name = "defaultstack"/>
Пример кода:
Поскольку фильтрация через перехватчик требует только настройки struts.xml, здесь приведена только конфигурация struts.xml.
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Struts Public "-// Apache Software Foundation // DTD Конфигурация Struts 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constancant name = "struts". <constant name = "struts.custom.i18n.resources" value = "message"> </constant> <name = "package =" default "namepace ="/"extends =" struts-default "> <name =" upload0*"> <interceptor-Ref name =" fileupload "> <paramypes =" aldTypes "> Image/jpeg, image/jpeg, image/jpeg, image/J name = "maximumSize"> 1024*1024 </param> </receptor-ref> <receptor- ref name = "defaultstack"> </receptor-ref> <param name = "name"> 1.jpg </param> <result>/{1} .jsp </result> </action> </struc> <sruption>/{1} .jsp </result> </action> </j Нам также нужно сообщение об ошибке после сбоя загрузки файла конфигурации, и нам нужно настроить его в глобальном международном файле ресурсов:
struts.messages.error.content.type.not.allowed = Тип файла не соответствует struts.messages.error.file.too.large = файл слишком большой
2. Скачать файл Struts2
Когда мы изучаем протоколы сервлета и HTTP, мы уже можем реализовать загрузки файлов, то есть написать заголовок дискуссии контента. Это принцип реализации Struts2, но он обеспечивает лучшую инкапсуляцию;
Тип результата потока Struts2 специально используется для реализации загрузки файлов;
(1) Настройте тип результата потока в struts.xml и настраивайте ContentType, ContentDisposition и Buffersize параметры. Шаблон:
<name = "скачать"> <result type = "stream" name = "success"> <param name = "contentType"> </param> <param name = "contentDisposition"> Attachment; filename = "" </param> <param name = "buffersize"> 4096 </param> </result> </action>
(2) создать public inputstream getInputStream () бросает исключение в действие; Метод, этот метод используется для получения входного потока загруженного файла;
DownloadAction.java
пакет org.download.action; импортировать java.io.inputstream; Импорт org.apache.struts2.servletactionContext; Import Com.OpensyMphony.xwork2.ActionsUpport; public class downloadaction extends actionsupport {public inputStream getInputStream () Throws Exception {return servletactionContext.getServletContext (). getResourCeasStream ("/web-inf/upload/1.jpg"); } public String execute () Throws Exception {return Success; }} struts.xml
<name = "Загрузить"> <result type = "stream" name = "success"> <param name = "contentType"> image/jpeg </param> <param name = "contentDisposition"> Attachment; filename = "1.JPG" </param> <param name = "buffersize"> 4096 </param> </result> </action> </param> <param = "buffersize"> 4096 </param> </result> </action> </param> <param = "
Вы можете завершить загрузку.
Это все для вас, чтобы представить реализацию загрузки и загрузки файлов Struts2 в Java. Спасибо за чтение.