欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java以struts2為例介紹如何實現(xiàn)圖片上傳

 更新時間:2015年11月12日 14:10:34   投稿:mrr  
這篇文章主要介紹了Java struts2中如何實現(xiàn)圖片上傳的相關資料,需要的朋友可以參考下

總的說圖片上傳有兩種方式,一種是把圖片文件寫到數(shù)據(jù)庫中,另一種是存到服務器文件目錄中。寫到數(shù)據(jù)庫中的圖片文件需要轉換成二進制流的格式,占用數(shù)據(jù)庫空間比較,適合少量圖片的存儲,比如說,系統(tǒng)中某些小圖標,寫到數(shù)據(jù)庫中的優(yōu)點是比較安全,不容易被用戶不小心刪除。

在struts2中實現(xiàn)(以圖片上傳為例)

1.FileUpload.jsp代碼清單如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>The FileUplaodDemo In Struts2</title>
</head>
<body>
<s:form action="fileUpload" method="post" enctype="multipart/form-data" namespace="/">
<s:file name="myFile" label="MyFile" ></s:file>
<s:textfield name="caption" label="Caption"></s:textfield>
<s:submit label="提交"></s:submit>
</s:form>
</body>
</html>

2.ShowUpload.jsp的功能清單如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>ShowUpload</title>
</head>
<body>
<div style ="padding: 3px; border: solid 1px #cccccc; text-align: center" >
<img src ="UploadImages/<s:property value ="imageFileName"/> "/>
<br />
<s:property value ="caption"/>
</div >
</body>
</html>

3.FileUploadAction.java的代碼清單如下 :

package com.chris;
import java.io.*;
import java.util.Date;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadAction extends ActionSupport{
private static final long serialVersionUID = 572146812454l ;
private static final int BUFFER_SIZE = 16 * 1024 ;
//注意,文件上傳時<s:file/>同時與myFile,myFileContentType,myFileFileName綁定
//所以同時要提供myFileContentType,myFileFileName的set方法
private File myFile; //上傳文件
private String contentType;//上傳文件類型
private String fileName; //上傳文件名
private String imageFileName;
private String caption;//文件說明,與頁面屬性綁定
public void setMyFileContentType(String contentType) {
System.out.println("文件類型 : " + contentType);
this .contentType = contentType;
}
public void setMyFileFileName(String fileName) {
System.out.println("文件名稱 : " + fileName);
this .fileName = fileName;
}
public void setMyFile(File myFile) {
this .myFile = myFile;
}
public String getImageFileName() {
return imageFileName;
}
public String getCaption() {
return caption;
}
public void setCaption(String caption) {
this .caption = caption;
}
private static void copy(File src, File dst) {
try {
InputStream in = null ;
OutputStream out = null ;
try {
in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);
out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);
byte [] buffer = new byte [BUFFER_SIZE];
while (in.read(buffer) > 0 ) {
out.write(buffer);
}
} finally {
if ( null != in) {
in.close();
}
if ( null != out) {
out.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static String getExtention(String fileName) {
int pos = fileName.lastIndexOf(".");
return fileName.substring(pos);
}
@Override
public String execute() {
imageFileName = new Date().getTime() + getExtention(fileName);
File imageFile = new File(ServletActionContext.getServletContext().getRealPath("UploadImages" ) + "/" + imageFileName);
copy(myFile, imageFile);
return SUCCESS;
}
}

注:此時僅為方便實現(xiàn)Action所以繼承ActionSupport,并Overrider execute()方法

在struts2中任何一個POJO都可以作為Action

4.struts.xml清單如下:

<?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>
<package name="example" namespace="/" extends="struts-default">
<action name="fileUpload" class="com.chris.FileUploadAction">
<interceptor-ref name="fileUploadStack"/>
<result>/ShowUpload.jsp</result>
</action>
</package>
</struts>

5.web.xml清單如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter >
<filter-name > struts-cleanup </filter-name >
 <filter-class >
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class >
 </filter >
 <filter-mapping >
<filter-name > struts-cleanup </filter-name >
 <url-pattern > /* </url-pattern >
 </filter-mapping >
 <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>
 <welcome-file-list>
 <welcome-file>Index.jsp</welcome-file>
 </welcome-file-list>
</web-app>

以上內(nèi)容是小編給大家介紹的Java struts2中如何實現(xiàn)圖片上傳的全部內(nèi)容,希望大家喜歡。

相關文章

  • Windows系統(tǒng)下Eclipse搭建ESP32編譯環(huán)境及安裝過程

    Windows系統(tǒng)下Eclipse搭建ESP32編譯環(huán)境及安裝過程

    Ecppse 使用了 ESP-IDF 中的 Makefile 支持。這意味著您需要從創(chuàng)建 ESP-IDF 項目開始。您可以使用 github 中的 idf-template 項目,接下來通過本文給大家介紹Windows系統(tǒng)下Eclipse搭建ESP32編譯環(huán)境及安裝過程,感興趣的朋友一起看看吧
    2021-10-10
  • 在java中main函數(shù)如何調(diào)用外部非static方法

    在java中main函數(shù)如何調(diào)用外部非static方法

    這篇文章主要介紹了在java中main函數(shù)如何調(diào)用外部非static方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 淺談Java多線程實現(xiàn)及同步互斥通訊

    淺談Java多線程實現(xiàn)及同步互斥通訊

    下面小編就為大家?guī)硪黄獪\談Java多線程實現(xiàn)及同步互斥通訊。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • java實現(xiàn)簡單石頭剪刀布小游戲

    java實現(xiàn)簡單石頭剪刀布小游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單石頭剪刀布小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • springboot上傳圖片文件步驟詳解

    springboot上傳圖片文件步驟詳解

    這篇文章主要介紹了springboot上傳圖片文件步驟詳解,本文通過實例代碼圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Java 自定義注解的魅力

    Java 自定義注解的魅力

    這篇文章主要介紹了Java 自定義注解的相關資料,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下
    2021-03-03
  • 將Java程序的輸出結果寫入文件方法實例

    將Java程序的輸出結果寫入文件方法實例

    這篇文章主要給大家介紹了關于將Java程序的輸出結果寫入文件的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • 一篇文章帶你了解spring事務失效的多種場景

    一篇文章帶你了解spring事務失效的多種場景

    在日常編碼過程中常常涉及到事務,在前兩天看到一篇文章提到了Spring事務,那么在此總結下在Spring環(huán)境下事務失效的幾種原因.
    2021-09-09
  • spring boot配置攔截器代碼實例

    spring boot配置攔截器代碼實例

    這篇文章主要介紹了spring boot配置攔截器代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • scala當中的文件操作和網(wǎng)絡請求的實現(xiàn)方法

    scala當中的文件操作和網(wǎng)絡請求的實現(xiàn)方法

    這篇文章主要介紹了scala當中的文件操作和網(wǎng)絡請求的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06

最新評論