关于JavaWeb SpringMVC框架实现上传以及在前端jsp页面显示二进制图片问题解决
作者:互联网
@RequestMapping("/imageupload.action") //@ResponseBody public String searchMember(@RequestParam(value = "file")MultipartFile file,NXSY image){ try { InputStream ins = file.getInputStream(); byte[] buffer=new byte[1024]; int len=0; ByteArrayOutputStream bos=new ByteArrayOutputStream(); while((len=ins.read(buffer))!=-1){ bos.write(buffer,0,len); } bos.flush(); byte data[] = bos.toByteArray(); image.setImg(data); image.setDate(image.getDate()); image.setTitle(image.getTitle()); //image.setImage("/testimage"); int result = this.nxsyService.addImg(image); return "admin2"; /* Student s=new Student(); s.setId(sId); s.setPhoto(data); studentService.insertPhoto(s);*/ } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return "admin2"; } @RequestMapping(value = "/showimage",produces = MediaType.IMAGE_JPEG_VALUE) @ResponseBody public byte[] toImageShow(NXSY nx){ //这里是从数据库读取图片,你可以根据自己的业务读取你的数据 NXSY image =this.nxsyService.findOne(nx.getId()); return image.getImg(); }
package com.hts.controller; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.sql.Blob; import java.sql.SQLException; import java.util.List; import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.swing.ImageIcon; import javax.swing.JLabel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import com.hts.po.NXSY; import com.hts.service.NXSYService; import sun.misc.BASE64Decoder; @Controller public class NXSYController { @Autowired private NXSYService nxsyService; // 跳转到首页 @RequestMapping(value = "/index.action") public String toindex(Model model, NXSY n) { List<NXSY> nx = this.nxsyService.findAll(n); NXSY O = this.nxsyService.findFirst(n); model.addAttribute("O", O); model.addAttribute("NX", nx); return "index"; } //搜索 @RequestMapping(value = "/find.action") public String find(Model model, String title,String date) { List<NXSY> nx = this.nxsyService.find(title,date); model.addAttribute("NX", nx); return "index"; } // //搜索日期 // @RequestMapping(value = "/findtime.action") // public String findtime(Model model, String date) { // List<NXSY> nx = this.nxsyService.findtime(date); // // model.addAttribute("NX", nx); // return "index"; // } // 单个显示 @RequestMapping(value = "/findOne.action") public String findOne(Model model, HttpServletResponse response, NXSY nx) throws IOException, SQLException { NXSY one = this.nxsyService.findOne(nx.getId()); List<NXSY> nxx = this.nxsyService.find(nx.getTitle(),nx.getDate()); model.addAttribute("NX", nxx); model.addAttribute("O", one); return "index"; } }
package com.hts.po; import java.sql.Blob; import java.util.Arrays; public class NXSY { private Integer id;//排序 private String title;//标题 private byte[] img;//图片 private String date;//日期 private String image;//图片路径 public String getImage() { return image; } public void setImage(String image) { this.image = image; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public byte[] getImg() { return img; } public void setImg(byte[] img) { this.img = img; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } @Override public String toString() { return "NXSY [id=" + id + ", title=" + title + ", img=" + Arrays.toString(img) + ", date=" + date + "]"; } }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.hts.dao.NXSYDao"><!--命名空间属性,用于对sql分类化管理 ,来实现不同业务的隔离 --> <!--parameterType接收输入参数类型String --> <!--resultType查询得到的结果的类型(输出参数的类型) --> <select id="findAll" parameterType="String" resultType="NXSY"> select top(10) * FROM nxsy order by id desc </select> <select id="findFirst" parameterType="String" resultType="NXSY"> select top(1) * FROM nxsy order by id desc </select> <select id="find" parameterType="String" resultType="NXSY"> SELECT * FROM nxsy <where> <if test="title != null and title != '' "> <bind name="title" value=" '%'+title+'%' " /> title like #{title} </if> <if test="date != null and date != '' "> and date = #{date} </if> </where> order by id desc </select> <select id="findtime" parameterType="String" resultType="NXSY"> SELECT * FROM nxsy where date =#{date} order by id desc </select> <select id="findOne" parameterType="Integer" resultType="NXSY"> SELECT * FROM nxsy where id =#{id} </select> <insert id="addImg" parameterType="NXSY"> insert into nxsy(title,img,date,image) values (#{title},#{img},#{date},#{image}); </insert> </mapper>
package com.hts.dao; import java.util.List; import org.apache.ibatis.annotations.Param; import com.hts.po.NXSY; public interface NXSYDao { List<NXSY> findAll(NXSY n); NXSY findFirst(NXSY n); List<NXSY> find(@Param("title") String title ,@Param("date") String date); List<NXSY> findtime(@Param("date") String date); NXSY findOne(@Param("id") Integer id); int addImg(NXSY nx); }
Service层以及ServiceImpl层在此省略
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" /> <script src="js/bootstrap.min.js"></script> <link rel="stylesheet" type="text/css" href="css/sousuo.css" /> <style type="text/css"> </style> <title></title> </head> <body> <form action="${pageContext.request.contextPath }/find.action" class="form-inline"> <nav class="navbar navbar-light bg-light" style="text-align: center;"> <input type="date" name="date" id="date" style="width: 272px; text-align: center; font-size: 30px; font-family: '楷体'; height: 50px;" /> <input class="form-control mr-sm-2" type="text" name="title" placeholder="搜索内容内容为空时则为搜索全部" aria-label="Search" id="title" style="width: 800px; text-align: center; height: 60px;" autocomplete="on"> <button class="btn btn-outline-success my-2 my-sm-0" type="submit" style="height: 60px; width: 150px; font-size: 25px;">搜索</button> </nav> </form> <!-- <form action="${pageContext.request.contextPath }/findtime.action" class="form-inline"> <div style="margin-left: 20px;margin-top: -30px"> <input type="date" name="date" style="width: 272px; text-align: center; font-size: 20px; font-family: '楷体';" /> <button type="submit" style="height: 36px; width: 70px;">检索日期</button> </div> </form> <br /><br /> --> <div style="margin-left: 20px; width: 350px; font-size: 20px; font-family: '楷体';"> <!-- <button style="width: 450px;height: 100px;font-size: 20px;border: 0.5px solid black;">sss</button> <br /><br /> --> <c:forEach items="${NX}" var="n"> <a class="btn-draw" href="${pageContext.request.contextPath }/findOne.action?id=${n.id}"> <!-- 重定向到该页面 --> <span>${n.title }<br /> <p style="font-size: 15px;">${n.date }</p> </span> </a> <br /> <br /> </c:forEach> </div> <div style="text-align: center;"> <!--<img src="upload/${O.image}" class="img-fluid" alt="Responsive image" style="max-width: 100%; position: fixed; left: 500px; top: 100px;"> background-size:100% 100%;width: 50% --> <img src="${pageContext.request.contextPath }/showimage.action?id=${O.id}"style="max-width: 100%; position: fixed; left: 500px; top: 100px;" alt="失败" /> </div> </body> </html>
网上找的大部分的都不能直接用,缺这缺那的,不过皇天不负有心人,对一个有所启发,灵感源于https://www.cnblogs.com/Anxc/p/12462549.html,要是这人是个女的,我都想抱着亲一口了,解决我大问题了,以上希望能帮助到你。
标签:String,title,SpringMVC,image,jsp,date,import,public,JavaWeb 来源: https://www.cnblogs.com/chenjiajiale/p/16652683.html