`

jsp上传图片,并加以显示

阅读更多

上传图片代码如下,首先是页面:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">
    
    <title>My JSP 'index1.jsp' starting page</title>
 
	<meta http-equiv="pragma" content="no-cache">

	<meta http-equiv="cache-control" content="no-cache">

	<meta http-equiv="expires" content="0">    

	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

	<meta http-equiv="description" content="This is my page">

	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">

	-->

  </head>

  <body>

  这是一个图片上传程序,在上传的时候form必须加上 enctype="multipart/form-data"

  否则则会有报错的情况发生,action类里新建一个demo对象,对应数据库里一条新的记录

  大概方法就是这样,如果有需要的话还可以再扩展,图片上传代码完毕

  <form id="form1" name="form1" action="text.do" method="post" enctype="multipart/form-data">

  	<input type="file" id="userImage" name="userImage">

 	<input type="text" id="mytext" name="mytext">

  <input type="submit" value="确定">

  </form>

    </body>

</html>

 传递至textAction这个类中

我用的是springside的框架,这个框架中的action默认执行的方法是list,其它不变

下边是action类

package com.mytext.action;

import java.awt.image.BufferedImage;

import java.io.ByteArrayInputStream;
import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import org.apache.commons.io.output.ByteArrayOutputStream;

import org.springframework.beans.factory.annotation.Autowired;

import org.springside.modules.web.struts2.CRUDActionSupport;

import com.mytext.entity.Demo;

import com.mytext.service.DemoServices;

import com.sun.xml.internal.ws.util.ByteArrayBuffer;

@SuppressWarnings("serial")

public class TextAction extends CRUDActionSupport<Demo>{

	@Autowired

	private DemoServices demoServices;
	
	private Demo demo;

	private String mytext;

	private File userImage;

	@Override

	public String delete() throws Exception {

		// TODO Auto-generated method stub

		return null;

	}

	@Override

	public String list() throws Exception {		

	if(userImage==null)

		{
				return "try";
			}

			prepareModel();

		try {

				BufferedImage tt = ImageIO.read(userImage);

				demo.setImage(toByte(tt));

				demo.setName(mytext);

				demoServices.save(demo);




			} catch (Exception e) {

				System.out.println("保存失败");

				return "try";

			}

			return "try";
	
		//demoServices.getAllDemo();	
	}


//转化为流

	private byte[] toByte(BufferedImage image) throws IOException


	{	


		ByteArrayOutputStream cc = new   ByteArrayOutputStream();


			ImageIO.write(image, "jpg", cc);

			return cc.toByteArray();	

	}

	@Override

	protected void prepareModel() throws Exception {

		// TODO Auto-generated method stub

		demo = new Demo();
	}

	@Override

	public String save() throws Exception {

		// TODO Auto-generated method stub

		return null;

	}

	public Demo getModel() {

		// TODO Auto-generated method stub

		return demo;

	}

	public File getUserImg() {

		return userImage;

	}

	public void setUserImg(File userImage) {

		this.userImage = userImage;

	}

	public String getMytext() {

		return mytext;

	}

	public void setMytext(String mytext) {

		this.mytext = mytext;

	}

	public File getUserImage() {

		return userImage;
	}

	public void setUserImage(File userImage) {

		this.userImage = userImage;

	}
}


 文中加红的为保存方法,是springside独有的一个东西,不必深究,可跟据自己的框架来保存对象至数据库中

下边是我数据库的实体类

package com.mytext.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * Demo entity.
 * 
 * @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "demo")
public class Demo extends IdEntity implements java.io.Serializable




{

	private String name;
	private byte[] image;
	private String shouming;
	public Demo() {
	}
	public Demo(String name, byte[] image) {
		this.name = name;
		this.image = image;
	}

	@Column(name = "name", length = 15)
	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Column(name = "image")
	public byte[] getImage() {
		return this.image;
	}

	public void setImage(byte[] image) {
		this.image = image;
	}
	@Column(name="shouming", length = 225)
	public String getShouming() {
		return shouming;
	}
	public void setShouming(String shouming) {
		this.shouming = shouming;
	}

}

 继承了一个共用的类,用于id主键生成

package com.mytext.entity;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
//所有实体类的基类,实现id的自增长
@MappedSuperclass
public class IdEntity {
	private Long id;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}
}

 我用的是mysql数据库,测试己成功,action方法中继承的是springside框架中的action类,不用这个框架的不必深究,

 

 

以下是在jsp页面中读出图片的方法

 

先是jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<%@ taglib prefix="s" uri="/struts-tags"  %>




     <!--  注意标签库的异入>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>jquery编辑器实例</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<link rel="stylesheet" href="${ctx }/edit/common.css" type="text/css" media="screen" />
	<script type="text/javascript" src="${ctx }/edit/jquery/jquery-1.3.2.min.js"></script>
	<script type="text/javascript" src="${ctx }/edit/xheditor.js"></script>
  </head>
  <body>
  <!--  jquery的编辑器试验己成功,能够成功写入数据库,能够成功在页面上显示出来 -->
  一般模式的edit
  <form method="post" action="edit.do">
	<h3>xhEditor demo1 : 默认模式</h3>
	xheditor(默认完全):<br />
	<textarea id="elm1" name="elm1" class="xheditor" rows="12" cols="80" style="width: 80%">
    <p>请输入信息</p>
    </textarea>
    <br>
     <input type="submit" value="试验中的jquery编辑器">
   </form>
   <!-- 从数据库里边读出一个图片 至此,图片上传和显示制做完毕-->
   开始从数据库里边读出来一个图片<br>
   <img src="<s:url action="edit!getUserImgFromByte.do">
   <s:param name="id" value="5"></s:param>
   </s:url>" height="300px" width="300px"> 








  </body>
</html>
 

红色部分为显示图片,可人为控制图看大小,上边的是一个类似于fck的jquery编辑器

 

action方法

package com.mytext.action;

import java.io.IOException;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springside.modules.web.struts2.CRUDActionSupport;
import org.springside.modules.web.struts2.Struts2Utils;

import com.mytext.entity.Demo;
import com.mytext.service.DemoServices;

public class EditAction extends CRUDActionSupport<Demo>{

	/**
	 * 
	 */
	@Autowired
	private DemoServices demoSdrvices;
	
	private Long id;
	private String elm1;
	private Demo demo;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@Override
	public String delete() throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String list() throws Exception {
		id=1L;
		getModel();
		demo.setShouming(elm1);
		demoSdrvices.save(demo);
		return "showedit";
	}

	@Override
	protected void prepareModel() throws Exception {
		// TODO Auto-generated method stub
		
	}

	@Override
	public String save() throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	public Demo getModel() {
		if(id==null)
		{
			demo=new Demo();
		}
		else
		{
			demo = demoSdrvices.get(id);
		}
		return demo;
	}

	public String getElm1() {
		return elm1;
	}

	public void setElm1(String elm1) {
		this.elm1 = elm1;
	}

	public Demo getDemo() {
		return demo;
	}

	public void setDemo(Demo demo) {
		this.demo = demo;
	}
	public String getUserImgFromByte() throws Exception {
		getModel();
		HttpServletResponse response = Struts2Utils.getResponse();
		ServletOutputStream out = null;
		try {
			response.setContentType("image/jpeg");
			out = response.getOutputStream();
			out.write(demo.getImage());
			out.flush();
		} catch (Exception e) {
		} finally {
			try {
				if (null != out)
					out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return null;
	}





}
 

红色部分为从数据库读图片代码

转载使用请注明出处!写的时候不知道,后来才发现代码内部不能加红!!!

真屎!

读本人博客代码如有任何疑问或代码不能执行,请速联系本人

zhang7789@yahoo.com.cn

 

 

分享到:
评论
2 楼 Chrome_1 2016-07-15  
需要导入的jar包有哪些
1 楼 wen.owen 2015-01-08  
是不是从哪里转过来的文章,哪里有红色部分?

相关推荐

    jsp上传图片直接显示在页面上,写好的代码

    上传图片时,选择图片之后显示在页面上,现成的代码,直接使用即可

    JSP使用jspSmartUpload上传并显示图片新闻示例

    **JSP SmartUpload上传并显示图片新闻示例** 在Web开发中,经常需要处理用户上传文件的功能,尤其是图片。`JSP SmartUpload`是一个强大的Java Servlet组件,它简化了文件上传的过程,支持多文件上传、文件大小限制...

    jsp 图片上传立即显示

    在JavaServer Pages (JSP) 中实现图片上传并立即显示是一项常见的需求,尤其在Web开发中,例如用户头像上传、商品图片展示等场景。这个功能涉及到文件上传、图像处理和动态网页显示等多个技术环节。以下将详细讲解...

    Jsp中显示本地图片预览

    在JSP(JavaServer Pages)中,显示本地图片预览是一项常见的需求,特别是在网页开发中。JSP是一种基于Java的动态网页技术,它允许开发者在HTML、XML或其他标记语言中嵌入Java代码,以实现服务器端的数据处理和动态...

    jsp详细显示一排图片

    本教程将详细讲解如何在JSP页面上正确地展示一排图片,这对于构建一个视觉吸引人的网站至关重要。我们将探讨相关的HTML、CSS以及JSP语法,以确保图片的排列美观且响应式。 首先,我们需要了解HTML的基础知识,它是...

    简单的servlet+jsp图片上传并显示图片解压就可用

    在本文中,我们将深入探讨如何使用Servlet和JSP实现一个简单的图片上传并显示的功能。Servlet是一种Java编程技术,常用于扩展服务器的功能,处理HTTP请求,而JSP(JavaServer Pages)则是一种动态网页技术,可以方便...

    jsp 上传图片并保存到数据库里的servlet代码和jsp代码

    本主题将深入探讨如何使用JSP和Servlet来实现一个图片上传功能,并将图片数据存储到Oracle数据库中。 首先,我们需要理解JSP和Servlet的角色。JSP是用于创建动态内容的视图层技术,而Servlet则是Java编写的应用程序...

    JSP上传图片并裁切及放大显示.rar

    JSP上传图片并裁切及放大显示,常用的JSP程序,看到有不少的图片上传、缩放及裁切程序,手痒就写了个,网上见的多的都是ASP/ASP.NET、php的,还没有发现有JSP的,写时候参数程序比较少,因此程序并不完善,只是实现...

    jsp上传图片并生成缩略图

    综上所述,实现"jsp上传图片并生成缩略图"的过程涉及到文件上传处理、图片的读取与缩放、文件存储以及错误处理等多方面技术。通过合理的设计和选用合适的工具库,可以在JSP中有效地实现这一功能。在实际开发中,还...

    JSP文件上传 支持进度条显示.rar

    "JSP文件上传 支持进度条显示"这个项目是针对JSP环境设计的一个AJAX Web上传程序,它允许用户上传大文件(如单个文件100M),并具有文件上传进度条的可视化功能。以下将详细解析这个项目的知识点: 1. **JSP(Java...

    上传并显示图片(使用jsp+tag编程,实现上传并显示图片功能)

    以上就是使用JSP和Tag实现上传并显示图片功能的详细步骤。这个过程涉及到前端交互、后端处理、自定义标签的创建以及服务器配置,对于理解和实践Web开发中的文件操作和自定义标签机制非常有帮助。

    Jsp图片上传资料并将图片路径上传至数据库

    本文将详细讲解如何实现一个基于JSP的图片上传功能,并将图片路径存储到MSSQL2000数据库中的技术要点。 首先,我们需要理解JSP(JavaServer Pages)的角色。JSP是一种动态网页技术,它允许开发者在HTML页面中嵌入...

    jsp+jspsmartupload控件上传图片至数据库

    在本文中,我们将深入探讨如何使用JSP与jspsmartupload控件将图片上传到数据库。jspsmartupload是一款强大的JSP文件上传组件,能够帮助开发者处理用户通过表单提交的多个文件。以下是对这个技术栈的详细解析: 1. *...

    jsp中上传图片并显示的源码

    下面将详细介绍如何在JSP中实现图片上传并显示的过程。 一、文件上传原理 在JSP中,文件上传主要依赖于HTTP协议的多部分/混合内容类型(multipart/form-data)。这种类型允许在一个表单中提交多个数据部分,其中...

    JSP实训六student(JSP实现图片上传和读取显示).doc

    通过这两个实验,学生不仅学会了如何使用common-fileupload组件实现图片上传,还掌握了如何在服务器端读取并显示这些图片。此外,实验二还进一步介绍了如何将图片数据保存到数据库中,并展示了如何对这些数据进行...

    一个jsp中上传图片并预览的效果

    这个场景下,"一个jsp中上传图片并预览的效果"是一个常见的功能需求,它允许用户在正式提交之前查看上传图片的效果,以确保图片质量符合预期。以下是对这个功能的详细解释: 首先,JSP(JavaServer Pages)是Java的...

    在JSP中上传图片和缩略显示图片(修正)

    在JSP中实现图片上传和缩略图显示是一项常见的需求,尤其在开发Web应用程序时。JSP(JavaServer Pages)是一种动态网页技术,允许我们直接在HTML中嵌入Java代码来处理服务器端逻辑。在这个场景中,我们使用了一个名...

    SWFUpload图片上传并显示javaee+jsp版

    总结来说,"SWFUpload图片上传并显示javaee+jsp版"项目结合了SWFUpload的异步上传功能、Struts的业务处理能力和JSP的动态页面渲染,提供了一个完整的图片上传和显示解决方案。开发者可以利用这个项目快速搭建起自己...

    JSP上传图片并生成缩略图

    在本文中,我们将深入探讨如何使用JSP和jspsmart组件来实现图片上传及生成缩略图的功能。jspsmart组件是一个强大的文件上传工具,它提供了便捷的API用于处理文件上传,包括验证文件类型和大小,以及错误处理。 首先...

    JSP源码,图片上传,进度条,JSP图片上传实例

    在这个“JSP源码,图片上传,进度条,JSP图片上传实例”的主题中,我们将深入探讨如何使用JSP进行图片上传,并结合进度条展示上传进度。 首先,图片上传功能是网站或应用程序中常见的一种交互需求。用户可以通过这种...

Global site tag (gtag.js) - Google Analytics