package com.haiwang.tinywebsite.util; import java.awt.image.BufferedImage; public class ScaleImage { private int width; private int height; private int scaleWidth; private double support = (double) 3.0; private double PI = (double) 3.14159265358978; private double[] contrib; private double[] normContrib; private double[] tmpContrib; private int nDots; private int nHalfDots; /** * Start: Use Lanczos filter to replace the original algorithm for image * scaling. Lanczos improves quality of the scaled image modify by :blade */ private static ScaleImage instance = new ScaleImage(); private ScaleImage(){}; public static ScaleImage getInstance(){ return instance; } public BufferedImage imageZoomOut(BufferedImage srcBufferImage, int w, int h) { width = srcBufferImage.getWidth(); height = srcBufferImage.getHeight(); scaleWidth = w; if (DetermineResultSize(w, h) == 1) { return srcBufferImage; } CalContrib(); BufferedImage pbOut = HorizontalFiltering(srcBufferImage, w); BufferedImage pbFinalOut = VerticalFiltering(pbOut, h); return pbFinalOut; } /** * 决定图像尺寸 */ private int DetermineResultSize(int w, int h) { double scaleH, scaleV; scaleH = (double) w / (double) width; scaleV = (double) h / (double) height; // �?��判断�?��scaleH,scaleV,不做放大操�? if (scaleH >= 1.0 && scaleV >= 1.0) { return 1; } return 0; } // end of DetermineResultSize() private double Lanczos(int i, int inWidth, int outWidth, double Support) { double x; x = (double) i * (double) outWidth / (double) inWidth; return Math.sin(x * PI) / (x * PI) * Math.sin(x * PI / Support) / (x * PI / Support); } // end of Lanczos() // // Assumption: same horizontal and vertical scaling factor // private void CalContrib() { nHalfDots = (int) ((double) width * support / (double) scaleWidth); nDots = nHalfDots * 2 + 1; try { contrib = new double[nDots]; normContrib = new double[nDots]; tmpContrib = new double[nDots]; } catch (Exception e) { System.out.println("init contrib,normContrib,tmpContrib" + e); } int center = nHalfDots; contrib[center] = 1.0; double weight = 0.0; int i = 0; for (i = 1; i <= center; i++) { contrib[center + i] = Lanczos(i, width, scaleWidth, support); weight += contrib[center + i]; } for (i = center - 1; i >= 0; i--) { contrib[i] = contrib[center * 2 - i]; } weight = weight * 2 + 1.0; for (i = 0; i <= center; i++) { normContrib[i] = contrib[i] / weight; } for (i = center + 1; i < nDots; i++) { normContrib[i] = normContrib[center * 2 - i]; } } // end of CalContrib() // 处理边缘 private void CalTempContrib(int start, int stop) { double weight = 0; int i = 0; for (i = start; i <= stop; i++) { weight += contrib[i]; } for (i = start; i <= stop; i++) { tmpContrib[i] = contrib[i] / weight; } } // end of CalTempContrib() private int GetRedValue(int rgbValue) { int temp = rgbValue & 0x00ff0000; return temp >> 16; } private int GetGreenValue(int rgbValue) { int temp = rgbValue & 0x0000ff00; return temp >> 8; } private int GetBlueValue(int rgbValue) { return rgbValue & 0x000000ff; } private int ComRGB(int redValue, int greenValue, int blueValue) { return (redValue << 16) + (greenValue << 8) + blueValue; } // 行水平滤�? private int HorizontalFilter(BufferedImage bufImg, int startX, int stopX, int start, int stop, int y, double[] pContrib) { double valueRed = 0.0; double valueGreen = 0.0; double valueBlue = 0.0; int valueRGB = 0; int i, j; for (i = startX, j = start; i <= stopX; i++, j++) { valueRGB = bufImg.getRGB(i, y); valueRed += GetRedValue(valueRGB) * pContrib[j]; valueGreen += GetGreenValue(valueRGB) * pContrib[j]; valueBlue += GetBlueValue(valueRGB) * pContrib[j]; } valueRGB = ComRGB(Clip((int) valueRed), Clip((int) valueGreen), Clip((int) valueBlue)); return valueRGB; } // end of HorizontalFilter() // 图片水平滤波 private BufferedImage HorizontalFiltering(BufferedImage bufImage, int iOutW) { int dwInW = bufImage.getWidth(); int dwInH = bufImage.getHeight(); int value = 0; BufferedImage pbOut = new BufferedImage(iOutW, dwInH, BufferedImage.TYPE_INT_RGB); for (int x = 0; x < iOutW; x++) { int startX; int start; int X = (int) (((double) x) * ((double) dwInW) / ((double) iOutW) + 0.5); int y = 0; startX = X - nHalfDots; if (startX < 0) { startX = 0; start = nHalfDots - X; } else { start = 0; } int stop; int stopX = X + nHalfDots; if (stopX > (dwInW - 1)) { stopX = dwInW - 1; stop = nHalfDots + (dwInW - 1 - X); } else { stop = nHalfDots * 2; } if (start > 0 || stop < nDots - 1) { CalTempContrib(start, stop); for (y = 0; y < dwInH; y++) { value = HorizontalFilter(bufImage, startX, stopX, start, stop, y, tmpContrib); pbOut.setRGB(x, y, value); } } else { for (y = 0; y < dwInH; y++) { value = HorizontalFilter(bufImage, startX, stopX, start, stop, y, normContrib); pbOut.setRGB(x, y, value); } } } return pbOut; } // end of HorizontalFiltering() private int VerticalFilter(BufferedImage pbInImage, int startY, int stopY, int start, int stop, int x, double[] pContrib) { double valueRed = 0.0; double valueGreen = 0.0; double valueBlue = 0.0; int valueRGB = 0; int i, j; for (i = startY, j = start; i <= stopY; i++, j++) { valueRGB = pbInImage.getRGB(x, i); valueRed += GetRedValue(valueRGB) * pContrib[j]; valueGreen += GetGreenValue(valueRGB) * pContrib[j]; valueBlue += GetBlueValue(valueRGB) * pContrib[j]; } valueRGB = ComRGB(Clip((int) valueRed), Clip((int) valueGreen), Clip((int) valueBlue)); return valueRGB; } // end of VerticalFilter() private BufferedImage VerticalFiltering(BufferedImage pbImage, int iOutH) { int iW = pbImage.getWidth(); int iH = pbImage.getHeight(); int value = 0; BufferedImage pbOut = new BufferedImage(iW, iOutH, BufferedImage.TYPE_INT_RGB); for (int y = 0; y < iOutH; y++) { int startY; int start; int Y = (int) (((double) y) * ((double) iH) / ((double) iOutH) + 0.5); startY = Y - nHalfDots; if (startY < 0) { startY = 0; start = nHalfDots - Y; } else { start = 0; } int stop; int stopY = Y + nHalfDots; if (stopY > (int) (iH - 1)) { stopY = iH - 1; stop = nHalfDots + (iH - 1 - Y); } else { stop = nHalfDots * 2; } if (start > 0 || stop < nDots - 1) { CalTempContrib(start, stop); for (int x = 0; x < iW; x++) { value = VerticalFilter(pbImage, startY, stopY, start, stop, x, tmpContrib); pbOut.setRGB(x, y, value); } } else { for (int x = 0; x < iW; x++) { value = VerticalFilter(pbImage, startY, stopY, start, stop, x, normContrib); pbOut.setRGB(x, y, value); } } } return pbOut; } // end of VerticalFiltering() private int Clip(int x) { if (x < 0) return 0; if (x > 255) return 255; return x; } /** * End: Use Lanczos filter to replace the original algorithm for image * scaling. Lanczos improves quality of the scaled image modify by :blade */ }
package com.haiwang.tinywebsite.util; import org.springframework.web.multipart.MultipartFile; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; /** * * 上传图片 工具类 大图片路径,生成小图片路径, 大图片文件名,生成小图片文名, 生成小图片宽度,生成小图片高度, 是否等比缩放(默认为true)) * * @author Administrator * */ public class UploadUtil { /** * * @param * * @param getUploadContentType * 文件类型 * @param getUploadFileName * 原文件名 * @return * @throws java.io.IOException */ @SuppressWarnings("resource") public static String uploadImage1(HttpServletRequest request,MultipartFile file, String getUploadContentType, String getUploadFileName) throws IOException { /** * 配置图片路径,多文件上传时不会出现 * java.io.FileNotFoundException: D:\ProgramFiles\tomcat_6.0\apache-tomcat-6.0.29\apache-tomcat-6.0.29\webapps\ROOT\style\images\20141230111032905.png\20141230111057250.png * */ String imagePath = "D:/ProgramFiles/tomcat_6.0/apache-tomcat-6.0.29/apache-tomcat-6.0.29/webapps/ROOT/style/images" ; boolean b = false; File image = new File(imagePath); if (!image.exists()) { image.mkdirs(); } //判断文件的类型 if(getUploadContentType.equals("image/gif")){ b = true; }else if(getUploadContentType.equals("image/pjpeg")){ b = true; }else if(getUploadContentType.equals("image/bmp")){ b = true; }else if(getUploadContentType.equals("image/x-png")){ b = true; } if(b == false){ return null; } // 得到文件的新名字 String fileNewName = generateFileName(getUploadFileName); // 最后返回图片路径 imagePath = imagePath + "/" + fileNewName; BufferedImage srcBufferImage = ImageIO.read(file.getInputStream()); BufferedImage scaledImage; ScaleImage scaleImage = ScaleImage.getInstance(); int yw = srcBufferImage.getWidth(); int yh = srcBufferImage.getHeight(); int w = 300, h = 300; // 如果上传图片 宽高 比 压缩的要小 则不压缩 if (w > yw && h > yh) { FileOutputStream fos = new FileOutputStream(imagePath); ByteArrayInputStream fis = (ByteArrayInputStream) file.getInputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = fis.read(buffer)) > 0) { fos.write(buffer, 0, len); } } else { scaledImage = scaleImage.imageZoomOut(srcBufferImage, w, h); FileOutputStream out = new FileOutputStream(imagePath ); ImageIO.write(scaledImage, "jpeg", out); } return imagePath; } /** * 传入原图名称,,获得一个以时间格式的新名称 * * @param fileName * 原图名称 * @return */ private static String generateFileName(String fileName) { DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); String formatDate = format.format(new Date()); int random = new Random().nextInt(10000); return formatDate + random + ".png"; } }
package com.haiwang.tinywebsite.action.pc; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.context.annotation.Scope; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import com.haiwang.entity.Drugs; import com.haiwang.entity.Manual; import com.haiwang.entity.Medicine; import com.haiwang.tinywebsite.biz.TinywebsiteMedicineBiz; import com.haiwang.tinywebsite.util.UploadUtil; import com.haiwang.util.JsonWriteUtil; @org.springframework.stereotype.Controller(value = "tinywebsitePcMedicineController") @RequestMapping(value = "/medicine_pc") @Scope(value="prototype") public class TinywebsitePcMedicineController implements Controller{ @Resource(name="tinywebsiteMedicineBiz") private TinywebsiteMedicineBiz medicineBiz; public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { return null; } //商品列表 @SuppressWarnings("rawtypes") @RequestMapping(value = "/goodsMedicineList_pc") public ModelAndView goodsMedicine(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { List<Map> listMedicine = medicineBiz.selectAllMedicine(); Map<String,Object> jsonMap = new HashMap<String,Object>(); jsonMap.put("rows",listMedicine); jsonMap.put("total",listMedicine.size()); JsonWriteUtil.writeJson(arg1, jsonMap); return null; } //商品详情、到修改页面 @RequestMapping(value = "/goodsMedicineDetails_pc") public ModelAndView goodsMedicineDetails(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { String id = arg0.getParameter("id"); Medicine medicine = medicineBiz.selectByPrimaryKey(Integer.parseInt(id)); List<Drugs> drugs = medicineBiz.selectAllDrugs(); List<Manual> manual = medicineBiz.selectAllManual(); Map<String,Object> map = new HashMap<String,Object>(); map.put("med",medicine); map.put("drugs",drugs); map.put("manual",manual); return new ModelAndView("tinywebsite_pc/medicine/medicine_add",map); } //到添加商品页 @RequestMapping(value = "/toGoodsMedicine_pc") public ModelAndView toGoodsMedicine(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { List<Drugs> drugs = medicineBiz.selectAllDrugs(); List<Manual> manual = medicineBiz.selectAllManual(); Map<String,Object> map = new HashMap<String,Object>(); map.put("drugs",drugs); map.put("manual",manual); return new ModelAndView("tinywebsite_pc/medicine/medicine_add",map); } //添加 @RequestMapping(value = "/goodsMedicineSave_pc", method=RequestMethod.POST) public ModelAndView saveMedicine(HttpServletRequest arg0, HttpServletResponse arg1, @RequestParam(value="imgpath", required=false)MultipartFile imgpath, @RequestParam(value="detailspath", required=false) MultipartFile detailspath) throws Exception { String name = ZMStringTest(arg0.getParameter("name")); String commoditynumber = ZMStringTest(arg0.getParameter("commoditynumber")); String specifications = ZMStringTest(arg0.getParameter("specifications")); String factory = ZMStringTest(arg0.getParameter("factory")); String oldprice = ZMStringTest(arg0.getParameter("oldprice")); String newprice = ZMStringTest(arg0.getParameter("newprice")); String introduction = ZMStringTest(arg0.getParameter("introduction")); String drugsid = ZMStringTest(arg0.getParameter("drugsid")); String manualid = ZMStringTest(arg0.getParameter("manualid")); String imgpathName = null; String imgpathStr = null; String detailspathName = null; String detailspathStr = null; if(imgpath != null && imgpath.getOriginalFilename()!=null&&!imgpath.getOriginalFilename().equals("")){ imgpathName = imgpath.getOriginalFilename(); } if(imgpathName != null&&!imgpathName.equals("")){ imgpathStr = UploadUtil.uploadImage1(arg0, imgpath, imgpath.getContentType(), imgpathName); } if(detailspath != null && detailspath.getOriginalFilename()!=null&&!detailspath.getOriginalFilename().equals("")){ detailspathName = imgpath.getOriginalFilename(); } if(detailspathName != null&&!detailspathName.equals("")){ detailspathStr = UploadUtil.uploadImage1(arg0, detailspath, detailspath.getContentType(), detailspathName); } saveOrupdate(imgpathStr, detailspathStr, null, name, commoditynumber, specifications, factory, oldprice, newprice, introduction, drugsid, manualid); return new ModelAndView("redirect:/medicine_pc/toGoodsMedicine_pc"); } //修改 @RequestMapping(value = "/goodsMedicineUpdate_pc") public ModelAndView updateMedicine(HttpServletRequest arg0, HttpServletResponse arg1, @RequestParam(value="imgpath", required=false)MultipartFile imgpath, @RequestParam(value="detailspath", required=false) MultipartFile detailspath) throws Exception { String strId = ZMStringTest(arg0.getParameter("id")); String name = ZMStringTest(arg0.getParameter("name")); String commoditynumber = ZMStringTest(arg0.getParameter("commoditynumber")); String specifications = ZMStringTest(arg0.getParameter("specifications")); String factory = ZMStringTest(arg0.getParameter("factory")); String oldprice = ZMStringTest(arg0.getParameter("oldprice")); String newprice = ZMStringTest(arg0.getParameter("newprice")); String introduction = ZMStringTest(arg0.getParameter("introduction")); String drugsid = ZMStringTest(arg0.getParameter("drugsid")); String manualid = ZMStringTest(arg0.getParameter("manualid")); String imgpathName = null; String imgpathStr = null; String detailspathName = null; String detailspathStr = null; if(imgpath != null && imgpath.getOriginalFilename()!=null&&!imgpath.getOriginalFilename().equals("")){ imgpathName = imgpath.getOriginalFilename(); } if(imgpathName != null&&!imgpathName.equals("")){ imgpathStr = UploadUtil.uploadImage1(arg0, imgpath, imgpath.getContentType(), imgpathName); } if(detailspath != null && detailspath.getOriginalFilename()!=null&&!detailspath.getOriginalFilename().equals("")){ detailspathName = imgpath.getOriginalFilename(); } if(detailspathName != null&&!detailspathName.equals("")){ detailspathStr = UploadUtil.uploadImage1(arg0, detailspath, detailspath.getContentType(), detailspathName); } saveOrupdate(imgpathStr, detailspathStr, strId, name, commoditynumber, specifications, factory, oldprice, newprice, introduction, drugsid, manualid); return new ModelAndView("redirect:/medicine_pc/goodsMedicineDetails_pc?id="+strId); } public void saveOrupdate(String imgpath,String detailspath, String id,String name,String commoditynumber,String specifications, String factory,String oldprice,String newprice,String introduction,String drugsid,String manualid) { try{ Medicine medicine = new Medicine(); medicine.setName(name); medicine.setCommoditynumber(commoditynumber); medicine.setSpecifications(specifications); medicine.setFactory(factory); medicine.setIntroduction(introduction); if(oldprice != null){ medicine.setOldprice(Double.valueOf(newprice)); }else{ medicine.setOldprice(0.0); } if(newprice != null){ medicine.setNewprice(Double.valueOf(newprice)); }else{ medicine.setNewprice(0.0); } if(imgpath != null){ medicine.setImgpath(imgpath); } if(detailspath != null){ medicine.setDetailspath(detailspath); } if(drugsid != null){ medicine.setDrugsid(Integer.parseInt(drugsid)); }else{ medicine.setDrugsid(1); } if(manualid != null){ medicine.setManualid(Integer.parseInt(manualid)); }else{ medicine.setManualid(1); } if(id!= null){ medicine.setId(Integer.parseInt(id)); medicineBiz.updateMedicine(medicine);//修改 }else{ medicineBiz.saveMedicine(medicine);//保存 } }catch(Exception e){ e.printStackTrace(); } } //删除 @RequestMapping(value = "/deleteMedicine_pc") public ModelAndView deleteMedicine(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { String strId = arg0.getParameter("id"); if(strId != null){ Integer id = Integer.parseInt(strId); medicineBiz.deleteMedicine(id); } return new ModelAndView("tinywebsite_pc/medicine/medicine_mall"); } //转码的方法 public String ZMStringTest(String str){ String strTest=null; String temp=getEncodingString(str); if(temp.equals("UTF-8")) { strTest=str; } else if(temp.equals("ISO-8859-1")){ try{ strTest=new String(str.getBytes("ISO8859-1"), "UTF-8"); }catch (Exception e){ e.printStackTrace(); } } return strTest; } // 判断字符串的编码 public static String getEncodingString(String str) { String encode = "GB2312"; encode = "ISO-8859-1"; try { if (str.equals(new String(str.getBytes(encode), encode)) ) { String s1 = encode; return s1; } } catch (Exception exception1) { } encode = "UTF-8"; try { if (str.equals(new String(str.getBytes(encode), encode))) { String s2 = encode; return s2; } } catch (Exception exception2) { } return ""; } }
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <% 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="Content-Type" content="text/html; charset=utf-8" /> <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"> --> <script type="text/javascript" src="common/js/jquery/jquery-1.9.1.min.js"></script> <script type="text/javascript" src="common/js/easyui/jquery.easyui.min.js"></script> <link rel="stylesheet" type="text/css" href="common/css/easyui/themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="common/css/easyui/themes/icon.css"> <script type="text/javascript" src="common/js/easyui/locale/easyui-lang-zh_CN.js"></script> <script type="text/javascript"> function checkAll(){ var name = document.getElementById("name").value; var commoditynumber = document.getElementById("commoditynumber").value; var specifications = document.getElementById("specifications").value; var factory = document.getElementById("factory").value; var oldprice = document.getElementById("oldprice").value; var newprice = document.getElementById("newprice").value; var introduction = document.getElementById("introduction").value; var pricematch = /^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/;//数字匹配,小数点、整数 var specificationsmatch = /^[A-Za-z0-9]+$/;//数字、字母匹配 var commoditynumbermatch = /^[1-9]\d*$/;//正整数匹配 var detailspath = document.getElementById("detailspath").value;//药品详情图片 var imgpath = document.getElementById("imgpath").value;//药品图片 if(name==""){ alert("药品名称不能为空!"); return false; } if(commoditynumber==""){ alert("药品编号不能为空!"); return false; }else{ if(!commoditynumbermatch.test(commoditynumber)){ alert("药品编号只能输入数字!"); return false; } } if(specifications==""){ alert("药品规格不能为空!"); return false; }else{ if(!specificationsmatch.test(specifications)){ alert("药品规格只能输入字母和数字!"); return false; } } if(factory==""){ alert("药品生产厂家不能为空!"); return false; } if(!pricematch.test(oldprice)){ alert("只能输入数字!允许有小数点。"); return false; } if(!pricematch.test(newprice)){ alert("只能输入数字!允许有小数点。"); return false; } if(introduction == ""){ alert("药品简介不能为空!"); return false; } if(checkFileType(detailspath,"药品详情图片") == false){ return false; } if(checkFileType(imgpath,"药品图片") == false){ return false; } } function checkFileType(filename,img){ if(filename != ""){ if(filename.lastIndexOf(".")!=-1) { var fileType = (filename.substring(filename.lastIndexOf(".")+1,filename.length)).toLowerCase(); var suppotFile = new Array(); suppotFile[0] = "gif"; suppotFile[1] = "bmp"; suppotFile[2] = "jpg"; suppotFile[2] = "png"; for(var i =0;i<suppotFile.length;i++){ if(suppotFile[i]==fileType){ return true; }else{ continue; } } alert(img+"不支持文件类型"+fileType); return false; }else { alert("文件只支持JIF,BMP,JPG,PNG"); } } } </script> </head> <body> <form action='${pageContext.request.contextPath}${med==null?"/medicine_pc/goodsMedicineSave_pc":"/medicine_pc/goodsMedicineUpdate_pc"}' method="POST" enctype="multipart/form-data" onsubmit="return checkAll()"> <table border="0" style="position:absolute;left:260px;top:10px;"> <tr> <th> </th> <td> <input type="hidden" name="id" value="${med.id}"/></td> </tr> <tr> <th>药品名称</th> <td > <input type="text" name="name" value="${med.name}"/> </td> </tr> <tr> <th>药品编号</th> <td ><input type="text" name="commoditynumber" value="${med.commoditynumber}"/></td> </tr> <tr> <th>药品规格</th> <td ><input type="text" name="specifications" value="${med.specifications}"/></td> </tr> <tr> <th>生产厂家</th> <td ><input type="text" name="factory" value="${med.factory}"/></td> </tr> <tr> <th>原价</th> <td ><input type="text" name="oldprice" value="${med.oldprice}"/></td> </tr> <tr> <th>折后价</th> <td ><input type="text" name="newprice" value="${med.newprice}"/></td> </tr> <tr> <th>药品简介</th> <td><textarea rows="10" cols="50" name="introduction">${med.introduction}</textarea></td> </tr> <tr> <th>药品图片</th> <td> <c:if test="${med.imgpath!=null }"><img src="${med.imgpath}"></c:if> <input type="file" value="上传图片" name="imgpath" id="imgpath"> <font size="2" color="red">图片小于200k,格式:jpg、gif、png、bmp</font> </td> </tr> <tr> <th>药品详情图片</th> <td> <c:if test="${med.detailspath!=null }"><img src="${med.detailspath}"></c:if> <input type="file" value="上传图片" name="detailspath" id="detailspath"> <font size="2" color="red">图片小于200k,格式:jpg、gif、png、bmp</font> </td> </tr> <tr> <th>药品大类</th> <td><select name="drugsid" onchange="selectDrugs(this)"> <c:forEach items="${drugs}" var="drugs"> <option <c:if test="${drugs.id == med.drugsid}">selected</c:if> value="${drugs.id}" >${drugs.name}</option> </c:forEach> </select> </td> </tr> <tr> <th>药品说明书</th> <td><select name="manualid" onchange="selectManual(this)"> <c:forEach items="${manual}" var="mau"> <option <c:if test="${mau.id == med.manualid}">selected</c:if> value="${mau.id}">${mau.tradename}</option> </c:forEach> </select> </td> </tr> <tr> <td colspan="2" style="text-align:center;"><input type="submit" value=" 提 交 "> <input type="button" name="submit" onclick="javascript:history.back(-1);" value=" 返 回 "> </td> </tr> </table> </form> </body> </html>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>haiwang</display-name> <filter> <filter-name>CharEncoding</filter-name> <filter-class>com.haiwang.filter.CharEncoding</filter-class> </filter> <filter-mapping> <filter-name>CharEncoding</filter-name> <url-pattern>/homeInfoCountServlet</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:com/haiwang/config/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:com/haiwang/config/springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> <url-pattern>*.htm</url-pattern> <url-pattern>*.css</url-pattern> <url-pattern>*.json</url-pattern> <url-pattern>*.gif</url-pattern> <url-pattern>*.jpg</url-pattern> <url-pattern>*.png</url-pattern> </servlet-mapping> </web-app>
springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <!-- 让Spring支持注解 --> <context:component-scan base-package="*"></context:component-scan> <!-- 默认的注解映射的支持 --> <mvc:annotation-driven /> <!-- 对静态资源的访问 --> <mvc:resources mapping="common/**" location="/common/" /> <!-- HandlerMapping --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> <!-- HandlerAdapter --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <!--配置的是前缀 --> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8" /> <!-- 指定所上传文件的总大小不能超过200KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 --> <property name="maxUploadSize" value="20000000" /> </bean> <!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException --> <!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 --> <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到/WEB-INF/jsp/error_fileupload.jsp页面 --> <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">tinywebsite_pc/file_upload/error_fileupload</prop> </props> </property> </bean> </beans>