SSH 框架下图片上传与显示

这几天在弄毕设,有几个需求是要上传图片的,看了很多教程,各有各的说法,关键点、细节很多说不明白,自己倒腾了几天,弄出来了,给大家分享一下。

上传图片的JSP

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>图片上传</title>

  </head>
  
  <body>
   <form action="client_addClient" method="post" enctype="multipart/form-data">
   用户名 :<input type="text" name="client.clientName" id="clientName"><br>
 密码 :<input type="password" name="client.clientPass" id="clientPass"><br>
 照片 :<input type="file" name="clientImg"/><br>
 <h1> </h1>
 <input type="submit" value="addClient">

   
   </form>
  </body>
</html>

Action

	 private File clientImg;
	 private String clientImgFileName;
	
	 
	public File getClientImg() {
		return clientImg;
	}
	public void setClientImg(File clientImg) {
		this.clientImg = clientImg;
	}
	public String getClientImgFileName() {
		return clientImgFileName;
	}
	public void setClientImgFileName(String clientImgFileName) {
		this.clientImgFileName = clientImgFileName;
	}
	
	public String addClient() throws FileNotFoundException, IOException{
		
		client.setClientImg(clientImgFileName);
		
		 BufferedImage sourceImg =ImageIO.read(new FileInputStream(clientImg)); 
		 //获取图片长宽和大小,长宽限制为600*800, 大小2M以内   1M是 1048576 个字节
		 //能获取长宽,就是图片,不能就不是图片,上传失败
		 if(sourceImg.getWidth()<600 && sourceImg.getHeight()<800 && clientImg.length()/1048576<2){

			 if(clientImg!=null){
				//获取绝对路径
				String filePath = "C:/Users/Workspaces/MyEclipse 10/AjaxTest/WebRoot/upload/client/";
				//重命名 UUID+JPG
				String fileName = UUIDUtils.getUUID()+".jpg"; 
				
				 File diskFile = new File(filePath+fileName);
				 
	             // 文件上传,使用FileUtils工具类
	             try {
					FileUtils.copyFile(clientImg, diskFile);
					client.setClientImg("upload/client/"+fileName);
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
	             clientService.addClient(client);
			}
		 		}else{
		 				return "addFail";
		 		}
        return "addClient_succ";
		
	}

将图片上传、保存到本地路径,将路径存到数据库。此时我图片的路径是这样的 upload/client/e814430003d741ed8f0300db7bc13866.jpg 。 upload/client/ 是我的相对路径,这样放方便等会拿

并且我的图片是在本地查看,其实是在项目工程里的。upload/client 是WebRoot下的文件夹

图片显示

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>显示个人信息</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>
    <div align="center">
    <table>
    <tr>
    	<th>
   	 	ID
    	</th>
   	 	<th>
   	 	name
    	</th>
    	<th>
    password
    	</th>
    	<th>
    photo
    	</th>
    </tr>
    <tr>
    	<td>
    	${clients.clientId} 
    	</td>
    	<td>
    	${clients.clientName} 
    	</td>
    	<td>
    	${clients.clientPass} 
    	</td>
    	<td>
    	<span style="white-space:pre">   </span>
    	
    	<img width="100" height="100" src="${clients.clientImg}" />
    	
    	</td>
    </tr>
    </table>
  
    
    </div>
  </body>
</html>

像正常取实体类的属性一样就可以,因为我的图片的路径已经加入了相对于jsp的路径,所以可以显示。

以上就是SSH的图片上传有显示了,大家参考。


这样设置本地上传有个问题,就是新加图片上传后,必须刷新上传的文件夹以及重启服务器才能显示,怎么解决这个问题暂时没有好办法。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
SSH框架是指Struts+Spring+Hibernate的集成框架,主要用于快速搭建Web应用程序。它将应用程序分为表示层、业务逻辑层、数据持久层和域模块层,以实现结构清晰、可复用、易于维护的Web应用程序。其中,Struts负责MVC分离,控制业务跳转;Hibernate提供持久层支持;Spring作为管理框架,管理Struts和Hibernate之间的关系。 而SSM框架指的是Spring+SpringMVC+MyBatis的集成框架。它是由Spring和MyBatis两个开源框架整合而成,通常用于数据源较简单的Web项目。在SSM框架中,SpringMVC是Spring的一部分,负责处理MVC的分离,而MyBatis则是用于提供持久层支持的框架。 另外还有Struts框架,它与SSH框架类似也是一种开源框架。它使用Servlet和JSP实现,并且基于MVC模型。Struts框架的核心组件包括Action、ActionServlet以及视图部分由多个相互关联的JSP文件组成。它可以有效地减少基于MVC模型的Web应用系统的开发间,从而控制系统开发成本。 所以,SSH框架和SSM框架都是用于快速开发Web应用程序的集成框架,而SSH框架使用的是Struts+Spring+Hibernate,而SSM框架使用的是Spring+SpringMVC+MyBatis。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [简述SSM框架SSH框架](https://blog.csdn.net/m0_37876935/article/details/93891639)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值