1. Faça o upload do arquivo Struts2
A implementação de upload de arquivos do STRUTS2 é muito simples e pode ser concluída em apenas algumas etapas simples;
Perceber:
(1) A tag STRUTS2 para upload de arquivo é: <s: nome do arquivo = "" Label = "Upload"/>
(2) o pré-requisito para upload de arquivo é o método do atributo de formulário = "post" ENCTYPE = "Multipart/Form-Data";
(3) o aplicativo da web deve incluir o Common-FileUpload.jar e o Common-io.jar, porque o analisador de upload padrão do Struts2 usa o Jacarta;
(4) O tamanho máximo permitido do arquivo pode ser configurado em struts.xml: <nome constante = "struts.multipart.maxsize" value = "......"/>, o padrão é 2m;
1. Regras normais de upload de arquivo <br />:
(1) Defina o controle do formulário em JSP <S: Nome do arquivo = "Upload" Label = "Upload"/>
(2) Defina atributos em ação:
upload de arquivo privado; // inclui conteúdo de arquivo
private string uploadfilename; // o nome do arquivo carregado;
Private String uploadContentType; // o tipo MIME do arquivo de upload;
Esses atributos serão atribuídos automaticamente à medida que o arquivo é carregado;
(3) Preencha a função de gravação de disco em Execute ();
Exemplo de código:
Upload01Action.java
pacote org.upload.action; importar java.io.file; importar java.io.fileInputStream; importar java.io.fileOutputStream; importar org.apache.struts2.ServletActionContext; importação com.opensymphony.xwork2.actionsupport; classe pública upload01Action estende o Actionsupport {Private File Upload; private string uploadfilename; Private String uploadContentType; nome de string privado; public String Execute () lança Exceção {String Path = ServletActionContext.getServletContext (). getRealPath ("/web-inf/upload"); String filename = path+file.separator+nome; FileInputStream in = new FileInputStream (upload); FileOutputStream Out = new FileOutputStream (nome do arquivo); byte [] b = novo byte [1024]; int len = 0; while ((len = in.read (b))> 0) {out.write (b, 0, len); } out.close (); sucesso de sucesso; } public file getUpload () {return upload; } public void setupLoad (upload de arquivo) {this.upload = upload; } public String getUploadFilEName () {return uPLOPLeFilename; } public void setupLoadFilename (String uPLOPLeName) {this.uploadfilename = uPLOPLFILENAME; } public string getUploadContentType () {return uPLOPLONTENTTYPE; } public void setupLoadContentType (String uPLOPLONTENTTYPE) {this.uploadContentType = uPLOPLONTENTTYPE; } public string getName () {return name; } public void setName (nome da string) {this.name = name; }} struts.xml
<? xml versão = "1.0" coding = "utf-8"?> <! Doctype suporta public "-// Apache Software Foundation // DTD Struts Configuration 2.0 // pt" "http://struts.apache.org/dtds/stuts-2.0.ddddddds> <constante name = "struts.custom.i18n.resources" value = "message"> </constant> <package name = "padrão" namespace = "/" estends = "struts-default"> <ação name = "upload0*"> <param = "name"> 1.jpg </param> <soul>/{{{{{ 1.jsp
<%@ página de página = "java" import = "java.util. '1.JSP' Página inicial </title> </adhead> <body> <s: formaction action = "upload01" method = "post" Enctype = "Multipart/form-data"> <s: name de arquivo "upload" "etc./" upload "> </s: file> <s: submit =" upload "> </s: submit>
2. Use interceptores para filtrar
O método de implementação manual de filtragem é muito simples, que é usar a verificação de entrada para filtrar, ou seja, filtragem no validate ();
O método interceptador que queremos falar aqui é uma boa maneira. Ele só precisa ser configurado no arquivo de configuração. Tem boa flexibilidade e pode limitar o tipo e o tamanho do arquivo. Se o arquivo carregado não atender aos requisitos, ele retornará a visualização lógica de entrada;
Etapas para configurar o interceptador:
(1) o interceptador para upload de arquivo é FileUpload;
(2) os parâmetros fornecidos precisam ser permitidos tipos e maximumsize;
(3) Após o interceptador FileUpload, você precisa adicionar <interceptor-ref name = "defaultStack"/>
Exemplo de código:
Como a filtragem através de um interceptador requer apenas a configuração do Struts.xml, apenas a configuração do Struts.xml é fornecida aqui.
<? xml versão = "1.0" coding = "utf-8"?> <! Doctype suporta public "-// Apache Software Foundation // DTD Struts Configuration 2.0 // pt" "http://struts.apache.org/dtds/stuts-2.0.ddddddds> <Constant name = "struts.custom.i18n.resources" value = "message"> </constant> <package name = "padrão" namespace = "/" estends = "struts-default"> <ação name = "upload0*"> <interceptor-ref name = "fileUPLOAD"> <parâme name = "maximumsize"> 1024*1024 </am> </soceptorpor-ref> <interceptor-ref name = "defaultStack"> </socceptor-ref> <param name = "name"> 1.jpg </param> <seld>/{1} .jsp </resultado> </action> </package> </package> Também precisamos da mensagem de erro após a falha do arquivo de arquivo de configuração, e precisamos configurá -lo no arquivo global de recursos internacionais:
struts.messages.error.content.type.not.allowed = O tipo de arquivo não corresponde a struts.messages.error.file.too.large = o arquivo é muito grande
2. Faça o download do arquivo struts2
Quando aprendemos protocolos de servlet e http, já podemos implementar downloads de arquivos, ou seja, gravar cabeçalho de disposição de conteúdo. Este é o princípio da implementação do Struts2, mas fornece melhor encapsulamento;
O tipo de resultado do fluxo de struts2 é usado especificamente para implementar downloads de arquivos;
(1) Configure o tipo de resultado do fluxo em struts.xml e configure parâmetros ContentType, ContentDispition e Buffersize. Modelo:
<ação name = "download"> <resultado tipo = "stream" name = "succcess"> <param name = "contentType"> </param> <param name = "contentDisposition"> anexment; filename = "" </param> <param name = "buffersize"> 4096 </param> </resultado </ction>
(2) Criar entrada pública inputStream getInputStream () lança exceção em ação; Método, este método é usado para obter o fluxo de entrada do arquivo baixado;
DownloadAction.java
pacote org.download.action; importar java.io.inputStream; importar org.apache.struts2.ServletActionContext; importação com.opensymphony.xwork2.actionsupport; public class DownloadAction Extends ACTIONSupport {public inputStream getInputStream () lança Exceção {return servletActionContext.getServletContext (). getResourceasStream ("/web-inf/upload/1.jpg"); } public string Execute () lança Exceção {return Success; }} struts.xml
<ação name = "Download"> <resultado tipo = "stream" name = "succcess"> <param name = "contentType"> image/jpeg </param> <param name = "contentDispition"> anexamento; filename = "1.jpg" </param> <param name = "buffersize"> 4096 </param> </resultado> </action>
Você pode concluir o download.
Tudo isso é para você apresentar a implementação do upload e download de arquivos STRUTS2 em Java. Obrigado pela sua leitura.