




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
jsp中如何获取客户端的浏览器和操作系统信息-JSP教程,Jsp/Servletstring agent = request.getheader(user-agent); stringtokenizer st = new stringtokenizer(agent,;); st.nexttoken(); /得到用户的浏览器名 string userbrowser = st.nexttoken(); /得到用户的操作系统名 string useros = st.nexttoken(); 取得本机的信息也可以这样: 操作系统信息 system.getproperty(); /win2003竟然是win xp? system.getproperty(os.version); system.getproperty(os.arch); 瀏覽器: request.getheader(user-agent) 再送个红包 request.getheader(“user-agent”)返回客户端浏览器的版本号、类型 getheader(string name):获得http协议定义的传送文件头信息, request. getmethod():获得客户端向服务器端传送数据的方法有get、post、put等类型 request. getrequesturi():获得发出请求字符串的客户端地址 request. getservletpath():获得客户端所请求的脚本文件的文件路径 request. getservername():获得服务器的名字 request.getserverport():获得服务器的端口号 request.getremoteaddr():获得客户端的ip地址 request.getremotehost():获得客户端电脑的名字,若失败,则返回客户端电脑的ip地址 request.getprotocol(): request.getheadernames():返回所有request header的名字,结果集是一个enumeration(枚举)类的实例 request.getheaders(string name):返回指定名字的request header的所有值,结果集是一个enumeration(枚举)类的实例1.图片上传的类package com.elkan.kindeditor.upload;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;import java.util.Iterator;import java.util.List;import java.util.Random;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.fileupload.FileItem;import mons.fileupload.FileItemFactory;import mons.fileupload.FileUploadException;import mons.fileupload.disk.DiskFileItemFactory;import mons.fileupload.servlet.ServletFileUpload;import com.elkan.utils.ImageUtil;/* * 实现KindEditor图片上传的Servlet * * author SENHUI * * since 2011/03/21 20:20:23 */public class UploadImage extends HttpServlet private static final long serialVersionUID = 5121794650920770832L;/ 上传图片的最大宽度protected int MAX_WIDTH = -1;/ 上传图片的最大高度protected int MAX_HEIGHT = -1;/ 上传图片的大小protected long MAX_SIZE = 1000000;/ 定义允许上传的图片的扩展名protected String IMAGETYPES = new String gif, jpg, jpeg, png, bmp ;/ 定义上传图片保存目录路径protected String UPLOAD_PATH = ;/ 上传图片设置信息 protected String id = ; / 上传图片的TITLE属性值protected String imgTitle = ; protected int imgWidth = -1; protected int imgHeight = -1; protected String imgBorder = ; protected String resizeImg = ;protected boolean isFlag = false;protected String tempTitle = ;SuppressWarnings(deprecation)Overrideprotected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException response.setContentType(text/html; charset=UTF-8);PrintWriter out = response.getWriter();String savePath = this.getInitParameter(UPLOAD_PATH);if (savePath = null | savePath.isEmpty() out.println(alertMsg(你还没设置上传图片保存的目录路径!);return;/判断是否设置了上传图片的大小if(this.getInitParameter(MAX_SIZE) != null)MAX_SIZE = Integer.parseInt(this.getInitParameter(MAX_SIZE);/判断是否设置了上传图片的类型if(this.getInitParameter(IMAGETYPES) != null)IMAGETYPES = toArray(this.getInitParameter(IMAGETYPES);/ 图片保存目录路径String uploadPath = new StringBuffer(request.getSession().getServletContext().getRealPath(/).append(savePath).toString();/ 图片保存目录URLString saveUrl = new StringBuffer(request.getContextPath().append(/).append(savePath).toString();/ 检查上传图片是否存在if (!ServletFileUpload.isMultipartContent(request) out.println(alertMsg(请选择你要上传的图片!);return;/ 检查目录File uploadDir = new File(uploadPath);if (!uploadDir.isDirectory() out.println(alertMsg(上传图片保存的目录不存在。);return;/ 检查目录写权限if (!uploadDir.canWrite() out.println(alertMsg(上传图片保存的目录没有写权限。);return;/ 准备上传图片FileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);upload.setHeaderEncoding(UTF-8);List items = null;String temp = null;try items = upload.parseRequest(request);Iterator itr = items.iterator();while (itr.hasNext() FileItem item = (FileItem) itr.next(); / 上传图片的原文件名 String fileName = item.getName(); temp = (String) item.getName(); if(temp != null & !isFlag) temp = temp.substring(temp.lastIndexOf()+1); tempTitle = temp; isFlag = true; / KindEditor编辑器的ID if(String)item.getFieldName().equals(id) id = item.getString(); / 上传图片的重新提示 if(String)item.getFieldName().equals(imgTitle) imgTitle = item.getString(); if(imgTitle != null) imgTitle = new String(imgTitle.getBytes(ISO8859-1),UTF-8); / 设置图片的宽度 if(String)item.getFieldName().equals(imgWidth) String imgWidth = item.getString(); if(imgWidth != null & !imgWidth.isEmpty() this.imgWidth = Integer.parseInt(imgWidth); / 设置图片的高度 if(String)item.getFieldName().equals(imgHeight) String imgHeight = item.getString(); if(imgHeight != null & !imgHeight.isEmpty() this.imgHeight = Integer.parseInt(imgHeight); / 设置图片的边框 if(String)item.getFieldName().equals(imgBorder) imgBorder = item.getString(); long fileSize = item.getSize();if (!item.isFormField() / 检查文件大小if (fileSize MAX_SIZE) out.println(alertMsg(上传文件大小超过限制。);return;/ 检查扩展名String fileExt = fileName.substring(fileName.lastIndexOf(.) + 1).toLowerCase();if (!Arrays. asList(IMAGETYPES).contains(fileExt) out.println(alertMsg(上传图片扩展名是不允许的扩展名。);return;/ 根据时间创建文件夹SimpleDateFormat folderNameFormat = new SimpleDateFormat(yyyyMMdd);String realPath = uploadPath + folderNameFormat.format(new Date();File folder = new File(realPath);boolean flag = folder.exists();/ 确认文件夹是否已经存在if(!flag)flag = folder.mkdir();/ 创建文件夹并上传图片if(flag)SimpleDateFormat fileNameFormat = new SimpleDateFormat(yyyyMMddHHmmss);String newFileName = fileNameFormat.format(new Date() + _+ new Random().nextInt(1000) + . + fileExt;File uploadedFile = new File(realPath, newFileName);item.write(uploadedFile);resizeImg = uploadedFile.getPath();resizeImg = resizeImg.replaceAll(, /);saveUrl += folderNameFormat.format(new Date() + / + newFileName;elseSystem.out.println( 文件夹创建失败,请确认磁盘没有写保护并且空件足够);/ 判断是否设置图片的最大宽度与高度String max_width = this.getInitParameter(MAX_WIDTH);String max_height = this.getInitParameter(MAX_HEIGHT);if(max_width != null & !max_width.isEmpty()MAX_WIDTH = Integer.parseInt(max_width);if(max_height != null & !max_height.isEmpty()MAX_HEIGHT = Integer.parseInt(max_height);if(imgTitle = null | imgTitle.isEmpty()imgTitle = tempTitle;/ 判断是否要压缩图片if(MAX_WIDTH != -1 | MAX_HEIGHT != -1) / 压缩图片ImageUtil.resizeImg(resizeImg, resizeImg, MAX_WIDTH, MAX_HEIGHT);if(this.imgWidth ImageUtil.ImgWidth)this.imgWidth = ImageUtil.ImgWidth;if(this.imgHeight ImageUtil.ImgHeight)this.imgHeight = ImageUtil.ImgHeight;/ 返回编辑器out.println(insertEditor(id, saveUrl, imgTitle, imgWidth, imgHeight, imgBorder);else/ 返回编辑器out.println(insertEditor(id, saveUrl, imgTitle, imgWidth, imgHeight, imgBorder); catch (FileUploadException e) e.printStackTrace(); catch (Exception e) e.printStackTrace();finallyout.flush();out.close();isFlag = false;Overrideprotected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException doGet(request, response);/* * 输出打印上传失败的JSON语句 * * param message 失败信息 * * return 页面上传失败的JSON语句 */public String alertMsg(String message) StringBuffer sb = new StringBuffer(error:1,message:);sb.append(message).append();return sb.toString();/* * 输出插入图片至编辑器语句的脚本 * * param id 编辑器ID * * param saveUrl 上传图片的浏览地址 * * param imgTitle 图片的提示信息 * * param imgWidth 设置图片的宽度 * * param imgHeight 设置图片的宽度 * * param imgBorder 设置图片的边框 * * return 插入图片至编辑器的脚本语句 */public String insertEditor(String id, String saveUrl, String imgTitle, int imgWidth, int imgHeight, String imgBorder)StringBuffer sb = new StringBuffer();sb.append(parent.KE.pluginimage.insert().append(id).append(,);sb.append(saveUrl).append(,).append(imgTitle).append(,);sb.append(imgWidth).append(,).append(imgHeight).append(,);sb.append(imgBorder).append(););sb.append();return sb.toString();/* * 输出允许上传图片类型的数组 * * param filesType 允许上传的图片类型 * * return 允许上传图片类型 */public String toArray(String filesType)if(filesType = null)return null;String types = filesType.split(,);String allowTypes = new Stringtypes.length;int i = 0;for(String type : types)allowTypesi = type;i+;return allowTypes;2.上传图片管理类package com.elkan.kindeditor.upload;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.Hashtable;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class UploadImageManager extends HttpServlet private static final long serialVersionUID = -8359652838938248988L;/ 定义允许上传的图片的扩展名protected String FILETYPES = new String gif, jpg, jpeg, png, bmp ;/ 定义上传图片保存目录路径protected String UPLOAD_PATH = ;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException response.setContentType(text/html; charset=UTF-8);PrintWriter out = response.getWriter();String savePath = this.getInitParameter(UPLOAD_PATH);if (savePath = null | savePath.isEmpty() out.println(alertMsg(你还没设置读取上传图片保存的目录路径!);return;/ 图片保存目录路径String rootPath = new StringBuffer(request.getSession().getServletContext().getRealPath(/).append(savePath).toString();/ 图片保存目录URLString rootUrl = new StringBuffer(request.getContextPath().append(/).append(savePath).toString();/根据path参数,设置各路径和URLString path = request.getParameter(path) != null ? request.getParameter(path) : ;String currentPath = rootPath + path;String currentUrl = rootUrl + path;String currentDirPath = path;String moveupDirPath = ;if (!.equals(path) String str = currentDirPath.substring(0, currentDirPath.length() - 1);moveupDirPath = str.lastIndexOf(/) = 0 ? str.substring(0, str.lastIndexOf(/) + 1) : ;/排序形式,name or size or typeString order = request.getParameter(order) != null ? request.getParameter(order).toLowerCase() : name;/不允许使用.移动到上一级目录if (path.indexOf(.) = 0) out.println(alertMsg(不允许使用移动到上一级目录);return;/最后一个字符不是/if (!.equals(path) & !path.endsWith(/) out.println(Parameter is not valid.);return;/目录不存在或不是目录File currentPathFile = new File(currentPath);if(!currentPathFile.isDirectory()out.println(Directory does not exist.);return;/遍历目录取的文件信息ListHashtable fileList = new ArrayListHashtable();if(currentPathFile.listFiles() != null) for (File file : currentPathFile.listFiles() Hashtable hash = new Hashtable();String fileName = file.getName();if(file.isDirectory() hash.put(is_dir, true);hash.put(has_file, (file.listFiles() != null);hash.put(filesize, 0L);hash.put(is_photo, false);hash.put(filetype, ); else if(file.isFile()String fileExt = fileName.substring(fileName.lastIndexOf(.) + 1).toLowerCase();hash.put(is_dir, false);hash.put(has_file, false);hash.put(filesize, file.length();hash.put(is_photo, Arrays.asList(FILETYPES).contains(fileExt);hash.put(filetype, fileExt);hash.put(filename, fileName);hash.put(datetime, new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(file.lastModified();fileList.add(hash);if (size.equals(order) Collections.sort(fileList, new SizeComparator(); else if (type.equals(order) Collections.sort(fileList, new TypeComparator(); else Collections.sort(fileList, new NameComparator();out.println(toJSONString(currentUrl, currentDirPath, moveupDirPath, fileList);out.flush();out.close();public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doGet(request, response);/* * 输出打印上传失败语句的脚本 * * param message 失败信息 * * return 页面打印的脚本语句 */public String alertMsg(String message) StringBuffer sb = new StringBuffer();sb.append(alert().append(message).append(););sb.append();return sb.toString();public String toJSONString(String currentUrl, String currentDirPath, String moveupDirPath, ListHashtable fileList)StringBuilder sb = new StringBuilder(current_url:);sb.append(currentUrl).append(,).append(current_dir_path:);sb.append(currentDirPath).append(,moveup_dir_path:).append(moveupDirPath).append(,);sb.append(file_list:);int i = 0;sb.append();for(Hashtable he : fileList)if(i != (fileList.size() - 1)sb.append(filename:).append(he.get(filename).append(,);sb.append(filesize:).append(he.get(filesize).append(,);sb.append(filetype:).append(he.get(filetype).append(,);sb.append(has_file:).append(he.get(has_file).append(,);sb.append(is_dir:).append(he.get(is_dir).append(,);sb.append(is_photo:).append(he.get(is_photo).append(,);sb.append(datetime:).append(he.get(datetime).append();sb.append(,);elsesb.append(filename:).append(he.get(filename).append(,);sb.append(filesize:).append(he.get(filesize).append(,);sb.append(filetype:).append(he.get(filetype).append(,);sb.append(has_file:).append(he.get(has_file).append(,);sb.append(is_dir:).append(he.get(is_dir).append(,);sb.append(is_photo:).append(he.get(is_photo).append(,);sb.append(datetime:).append(he.get(datetime).append();sb.append();i+;i = 0;sb.append(,total_count:).append(fileList.size().append();return sb.toString();public class NameComparator implements Comparator public int compare(Object a, Object b) Hashtable hashA = (Hashtable) a;Hashtable hashB = (Hashtable) b;if (Boolean) hashA.get(is_dir)& !(Boolean) hashB.get(is_dir) return -1; else if (!(Boolean) hashA.get(is_dir)& (Boolean) hashB.get(is_dir) return 1; else return (String) hashA.get(filename).compareTo(String) hashB.get(filename);public class SizeComparator implements Comparator public int compare(Object a, Object b) Hashtable hashA = (Hashtable) a;Hashtable hashB = (Hashtable) b;if (Boolean) hashA.get(is_dir)& !(Boolean) hashB.get(is_dir) return -1; else if (!(Boolean) hashA.get(is_dir)& (Boolean) hashB.get(is_dir) return 1; else if (Long) hashA.get(filesize) (Long) hashB.get(filesize) return 1; else if (Long) hashA.get(filesize) (Long) hashB.get(filesize) return -1; else return 0;public class TypeComparator implements Comparator public int compare(Object a, Object b) Hashtable hashA = (Hashtable) a;Hashtable hashB = (Hashtable) b;if (Boolean) hashA.get(is_dir)& !(Boolean) hashB.get(is_dir) return -1; else if (!(Boolean) hashA.get(is_dir)& (Boolean) hashB.get(is_dir) return 1; else return (String) hashA.get(filetype).compareTo(String) hashB.get(filetype);3.上传附件的类package com.elkan.kindeditor.upload;import java.io.File;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理病人考试题及答案
- 体位摆放考试题及答案
- 2025年初级焊工证取证考试题库及答案
- 2025年硬皮病护理查房
- 2025年事业单位招聘考试化工类专业能力测试试卷(化工产品分析)2025年春季试题库
- 2025年物流师(物流行业标准化方向)职业技能鉴定试卷
- 2025年数字合成师考试数字合成师职业生涯规划与实践与总结试题
- 2025年托福考试阅读真题模拟模拟试卷:旅游产业发展
- 2025年西藏自治区事业单位教师招聘考试英语学科专业知识试卷重点解析
- 2025年事业单位招聘考试计算机类专业能力测试试卷(人工智能与语言学方向)
- 2025年食品安全培训考试试题及答案
- 2025年长江证券港股通开通测试题及答案
- 2025西安亮丽电力集团有限责任公司招聘10人笔试备考题库及1套完整答案详解
- 2025河北唐山某国有企业单位招聘劳务派遣工作人员44人笔试参考题库附带答案详解(10套)
- 成都银行总行招聘考试真题2024
- 基孔肯雅热培训测试题含答案
- 小额贷款公司贷款五级分类办法
- 2025公卫执业医师考试试题(附答案)
- 医院药品质量管理课件
- 2025年上海市中考招生考试数学真题试卷(真题+答案)
- 2025年广东省中考英语试题卷(含答案解析)
评论
0/150
提交评论