ssm 在前台页面显示服务器中的图片

本文主要介绍了在SSM框架中如何解决在前端页面显示服务器上上传的图片的问题。经过一番搜索和尝试,作者发现使用JSP的`<img>`标签直接访问后台Controller可以实现图片的正确显示,而之前的问题是由于URL路径错误导致图片被下载而不是显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先来一段废话

今天刚弄好文件上传,就又想起来了在前台显示图片的问题,百度了很久很久东西。

正题开始

先看controller

@RequestMapping("/readfile.do")
	public void doReadFile(HttpServletRequest request, HttpServletResponse response){
		try {
			//这里只是为了测试,所以把文件地址写死了
			FileInputStream pic = new FileInputStream("D:\\pic" + "\\1.jpg");
			int i = pic.available();
			byte[] date = new byte[i];
			pic.read(date);
			pic.close();
			//这里要有这个设置,否则会报错
			response.setContentType("img/*");
			response.setCharacterEncoding("utf-8");
			ServletOutputStream out=response.getOutputStream();
			out.write(date);
			out.flush();
			out.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

JSP

<a href="${pageContext.request.contextPath }/readfile.do">获取图片</a>

写成上面这个样子的话,点击链接,会把照片下载下来,而且文件名是readfile.do
如果能下载下来的话,已经是成功了,但是剩下的一点点我花了三四个小时才弄好。
我想要的效果是吧照片显示在页面上,但是但这里只能下载,不知道是因为太简单了还是怎么样,百度出来的那么多结果都不能解决,最后,还是找到了一个。

<img  src="${pageContext.request.contextPath }/readfile.do" >

写成上面这个样子就行了,用imp标签直接访问后台。
上传文件的时候就是因为打错了一个字母,显示个照片又是因为不会这么用,两个一下就花了一天,mdzz,真鸡儿菜。

### SSM框架前端常用的技术和工具 在SSM框架项目中,虽然主要焦点在于后端开发,但为了构建高效、交互性强的Web应用程序,前端技术的选择同样至关重要。通常情况下,在SSM架构下会采用一系列现代前端技术和框架来增强用户体验。 #### HTML与JSP视图 对于简单的展示需求,可以直接利用HTML作为静态资源文件[^3]。而在更复杂的应用场景里,则更多地依赖于JSP(JavaServer Pages),这是一种允许嵌入动态内容到网页中的服务器端技术。通过JSP可以方便地将后台数据渲染至前端页面上显示给用户查看。 #### JavaScript库及框架 JavaScript是不可或缺的一部分,它使得页面具有更好的互动性和响应速度。常见的JS库如jQuery被广泛应用于简化DOM操作;而Vue.js或React这样的MVVM/MVC模式下的组件化UI库则有助于创建更加模块化的单页应用(SPA),提高代码可维护性的同时也改善了用户的浏览感受[^2]。 #### CSS预处理器和支持动画效果的样式表 SASS/SCSS或者LESS这类CSS扩展语言能够提供变量定义、混合宏等功能,让样式的编写变得更加灵活便捷。另外Bootstrap等基于栅格系统的响应式设计框架可以帮助快速搭建美观大方且适应多设备屏幕大小变化良好的布局结构[^4]。 #### AJAX异步请求处理机制 为了让前后端之间通信更为流畅自然,AJAX(Asynchronous JavaScript and XML)扮演着重要角色。借助XMLHttpRequest对象或是fetch API发起非阻塞式的HTTP调用获取JSON格式的数据反馈,并据此更新局部区域内的界面元素而不必刷新整个页面,从而提升了整体性能体验。 ```javascript // 使用原生Fetch API发送GET请求的例子 fetch('/api/getData') .then(response => response.json()) .then(data => { console.log('Success:', data); // 更新页面上的某些部分 }) .catch((error) => { console.error('Error:', error); }); ``` #### 数据绑定方式 当不使用传统的表单提交方法时,可以通过Ajax结合模板引擎的方式实现实时双向绑定的效果。例如Thymeleaf可以在服务端完成渲染工作后再传输给客户端浏览器解析执行;亦或者是像Element UI那样支持v-model指令语法糖封装好的Vue插件来进行自动化输入控件关联管理。 ```html <!-- Element UI 表单项 --> <el-input v-model="inputValue"></el-input> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值