简单的图片处理servlet

基于ImageJ 的图片处理——ImageManipulation (part of fedora project) ImageManipulation 是 fedora project 的一部分,用于提供动态的图片处理服务,包括图片压缩、图片缩放、图片转换、添加水印等等。下面是ImageManipulation 的Demo 地址:http://www.fedora.info:8080/imagemanip/index.html   sample - watermark http://www.fedora.inf 阅读详情

好久没写博客了,最近做了一个比较有趣的商城项目,里面的业务还真的很复杂,好在做了特殊的处理之后商城也能正常的使用了。但是没中不足的就是图片文件夹和项目掺杂在一块,实在有些难以维护,之后找了点资料就搞了个简单的图片读取服务端程序,还算好用今天得闲了就整理出来给大家参考一下。

1 项目源代码和图片文件夹放一块的优缺点

优点:方便检索、逻辑相对清晰

缺点:源代码体积增大、容易丢失图片、容易被类似struts2这样的漏洞利用(如被黑客删除、篡改)

2 解决方案

项目的上传文件的代码做相应调整,改为和源代码不同的路径;图片显示先经过servlet把图片读取到服务器内存缓冲区,之后显示出来

3 图片读取与显示servlet

package org.lxh;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @说明 该Servlet将本地硬盘的图片输入管道中
 * @version 1.0
 * @since
 */
@SuppressWarnings("serial")
public class ImageShowServlet extends HttpServlet {

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		
		String uri=request.getRequestURI();
		String rs=uri.substring(6);
		String result=rs.replace("/", File.separator);
		
		OutputStream os = response.getOutputStream();
		File file = new File("D:\\"+result);
		FileInputStream fips = new FileInputStream(file);
		byte[] btImg = readStream(fips);
		os.write(btImg);
		os.flush();
	}
	
	/**
	 * 读取管道中的流数据
	 */
	public byte[] readStream(InputStream inStream) {
		ByteArrayOutputStream bops = new ByteArrayOutputStream();
		int data = -1;
		try {
			while((data = inStream.read()) != -1){
				bops.write(data);
			}
			return bops.toByteArray();
		}catch(Exception e){
			return null;
		}
	}
}

图片的路径根据实际情况进行修改,关键方法是readStream

4 web.xml的配置

  <servlet>  
    <servlet-name>ImageShowServlet</servlet-name>  
    <servlet-class>org.lxh.ImageShowServlet</servlet-class>  
  </servlet>  
  <servlet-mapping>  
    <servlet-name>ImageShowServlet</servlet-name>  
    <url-pattern>/*</url-pattern>  
  </servlet-mapping>  

5 如何使用(一句代码搞定)

<img src="/image${smallImage}" width="50px" height="50px"/>

${smallImage}是通过数据库动态读取出来的,就类似“/upload/front/image/201412/9da935f7-e3fe-45c1-9823-1d6c7d748606.jpg”这种

注:该servlet可作为一个项目打包,和主项目放一块就可以搭配使用了。



servlet写的增删改查和图片上传 分老师与学生登录,老师可增删改查学生信息和上传图片,数据库用的是mysql 立即下载

相关推荐

java servlet实现图片上传下载

java servlet实现图片上传下载

JavaWeb学习——Servlet&JSP“修改”与“删除”功能(21)

日常学习笔记

Hoorus的窝 6397

servlet 读取图片字节流

通过 servlet 读取图片字节流保存到服务器

05-SpringBoot

Spring是一个非常优秀的轻量级框架,以IOC(控制反转)和AOP (面向切面)为思想内核,极大简化了JAVA企业级项目的开发。虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。使用Spring进行项目开发需要在配置文件中写很多代码,所有这些配置都代表了开发时的损耗。除此之外,Spring项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。比如Spr

qq_40589140的博客 584

安卓+servlet实现上传下载图片

安卓+servlet实现上传下载图片,内置jar包,客服端和服务端

Servlet实现资源的上传与下载

Servlet实现

servlet的实现

servlet的执行原理就是通过访问ip地址服务器下的web文件(本地可直接用端口号进行访问)servlet-mapping标签中url-pattern,找到servlet-name,映射到servlet标签下的servlet-name,然后我们就去找对应文件,通过servlet-class找到对应包下的文件。在使用Javaweb需要配置java服务器,也相当于承载web的容器,服务器就是安装了服务器软件的计算机,服务器软件用来接受用户的请求,做出响应,这里我使用tomcat作为服务器软件。...

m0_69258341的博客 389

vivado运行时报错 license文件更新操作

vivado使用:SYNTHESIS->Run Synthesis 时报错 [Common 17-345] A valid license was not found for feature ‘Synthesis’ and/or device ‘xc7vx485t’. Please run the Vivado License Manager for assistance in determiningwhich features and devices are licensed for your sy

qq_44692266的博客 2万+

SpringMVC入门

一、SpringMVC介绍 1、spring介绍: Spring Web MVC是一种基于Java的实现了MVC设计模式的、请求驱动类型的、轻量级Web框架。 2、 二、Spring工作流程 三、常用注解及结果集的处理 四、静态资源的处理 ...

m0_53151031的博客 1756

WhatsApp API接口的隐秘角落:从协议解析到自定义消息引擎

本文深入解析WhatsApp API接口的隐秘角落,从协议逆向工程到自定义消息引擎开发实战。通过分析WhatsApp的二进制XML协议和加密机制,构建超越官方API限制的自定义消息引擎,实现高效、灵活的即时通讯解决方案。文章还提供了企业级架构设计和风控规避策略,助力开发者突破官方限制,提升消息到达率和成本效益。

q3r4s5t的博客 761

hi3519dv500 os04a10输入调试

因该sensor接在soc端的iic6,在驱动中(Hi3519DV500_SDK_V2.0.1.1\smp\a55_linux\source\mpp\cbb\isp\user\sensor\hi3519dv500\omnivision_os04a10\os04a10_sensor_ctl.c)注意总线的选择。mem_process_isolation=1 改为 mem_process_isolation=0。2、OT_MIPI_SET_HS_MODE配置为LANE_DIVIDE_MODE_1。

linus 3169

简单jsp servlet 跳转

jsp、servlet、web.xml jsp final String queryString = request.getQueryString(); final String url = request.getContextPath() + "/forwardServlet" + (queryString != null ? "?queryString=" + querySt

wanggeying 738

【ESP32-IDF】I2S音频协议实战:从PDM麦克风到PCM扬声器的全链路解析

本文深入解析ESP32-S3的I2S音频协议,从PDM麦克风采集到PCM扬声器输出的全链路实现。详细介绍了硬件PDM转PCM、Standard模式配置及混合模式协同工作,提供实战代码与性能优化建议,助力开发者高效完成嵌入式音频项目开发。

pea55的博客 889

Java Web:使用Servlet生成网页随机图片验证码

最近在学习Java Web开发,做了一个生成网页随机图片验证码的例子,在此记录。

遨游网络huster的专栏 2413

Anaconda创建python环境常见命令

Anaconda功能庞大,其可以理解为一个工具,也是一个可执行命令。Anaconda可以创建多个python环境,且python环境间相互独立。

m0_59405106的博客 1万+

C# WinForms 多语种切换实现:打造国际化应用程序

合理实现多语种切换功能可以显著提升应用程序的国际化水平。模块化设计:将本地化逻辑模块化,便于管理和维护。异常处理:始终捕获和处理可能的异常,确保程序的健壮性。资源管理:合理管理资源文件,避免重复和遗漏。测试:在不同语言环境下进行全面测试,确保所有字符串都能正确显示。文档和注释:为关键代码添加详细的文档和注释,便于后续维护。

墨夶的博客 1692

利用独立的servlet在页面显示图片

<br />web页面上的图片显示可以指定了一个url, 直接访问后台的一个servlet. 在后台数据库可以专门建一个图片库. 以下是一个简单的示例.在这里采用了imageJ-v1.37项目(网址: http://rsb.info.nih.gov/ij/ ) 进行图片处理.<br /> <br />1, ImageViewServlet <br />package com.hank.web.servlet; import java.io.IOException; import

Arthur0088的专栏 1899

2026.2.23:AgentScope框架实战<一>:安装并使用agentscope

本文介绍了AgentScope框架的安装与使用实践。通过PyPI安装agentscope[full]后,演示了如何创建ReActAgent代理:1)配置DashScope聊天模型;2)注册自定义工具函数(查询位置和天气);3)初始化代理并处理用户请求。示例展示了代理如何响应复合查询(如同时获取北京位置和天气信息),输出结果显示代理成功执行了工具调用并返回结构化响应。该框架支持Python 3.13环境,提供内存管理、工具集成等功能,适用于构建智能代理系统。

拥抱具身智能,昇腾Ascend C 509

Java servlet 验证码生成类

public class CodeImg extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //在内存中创建一个图片 BufferedImage bufferedImage = new BufferedImage(40,20,Bu

weixin_44371237的博客 175

【同等学力】01-逻辑符号表达

F(x): x是确诊者,G(x):x有症状F(x): x是老人,G(x):x是宠物,L(x,y): x喜欢y。

super_mochi1 1880

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【Java技术点滴】——精简实现图片处理

 引言: 对于图片的处理是很多项目中都会用到的,如一般的人事管理系统等,处理方式主要分为两大类: 1.图片文件存储与磁盘中,数据库中只保存相对应的文件名; 2.文件采用二进制的形式保存于数据库中。 第二种方案占用空间大,并且对二进制流的操作也较为占用资源,因此采用第一种方案进行处理的情况较为常见,常用于一般的系统应用中,正在进行中的drp项目中用到了图片上传、显示的功能处理,采用co

Flash~ 1935

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

利用servlet生成简单的验证码(转)

在web.xml配置: [code="xml"] image org.test.web.AuthImage image /authImage render_code(); [/code] 其servlet源代码: [code="java"]public cl...

hugui123456ccc的专栏 131

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

使用Servlet如何向客户端写入一张图片

思路;Servlet需要读取图片数据,再使用字节流把图片写出去。 package com.cn.tz; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import javax.servlet.ServletContext; import javax.servlet.Se...

weixin_43222528的博客 884
上一篇: centos6快速部署java应用
下一篇: 注册邮箱重定向到相应邮箱登录界面js
青蛙小王子
博客等级 码龄16年 239粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值