基本MVC2模式创建新闻网站
作者:互联网
预览
项目目录
在使用UEditor时 如果要上传图片,要自己实现一个图片上传servlet
package com.yuanze.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.URLDecoder; import java.text.SimpleDateFormat; import java.util.Date; 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 org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import net.sf.json.JSONObject; public class ImageServlet extends HttpServlet{ @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub //得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全 PrintWriter pout=resp.getWriter(); JSONObject rs=new JSONObject(); String savePath = this.getServletContext().getRealPath("/image"); System.out.println(savePath); File file = new File(savePath); //判断上传文件的保存目录是否存在 if (!file.exists() && !file.isDirectory()) { System.out.println(savePath+"目录不存在,需要创建"); //创建目录 file.mkdir(); } SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd_HH?"); String name = "img_"+sdf.format(new Date()) + String.valueOf(new Random().nextInt(1000))+".jpg"; //使用Apache文件上传组件处理文件上传步骤: //1、创建一个DiskFileItemFactory工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); //2、创建一个文件上传解析器 ServletFileUpload upload = new ServletFileUpload(factory); //解决上传文件名的中文乱码 upload.setHeaderEncoding("UTF-8"); //3、判断提交上来的数据是否是上传表单的数据 if(!ServletFileUpload.isMultipartContent(req)){ //按照传统方式获取数据 return; } //4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项 List<FileItem> list=null; try { list = upload.parseRequest(req); } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); rs.put("state", "文件上传失败!"); //在此处写上错误提示信息,这样当错误的时候就会显示此信息 rs.put("url",""); pout.write(rs.toString()); pout.flush(); pout.close(); return; } for(FileItem item : list){ //如果fileitem中封装的是普通输入项的数据 if(!item.isFormField()) {//如果fileitem中封装的是上传文件 //得到上传的文件名称, String filename = item.getName(); filename=URLDecoder.decode(filename, "UTF-8"); System.out.println(filename); if(filename==null || filename.trim().equals("")){ continue; } filename=name; //获取item中的上传文件的输入流 InputStream in = item.getInputStream(); //创建一个文件输出流 FileOutputStream out = new FileOutputStream(savePath + "\\" + filename); //创建一个缓冲区 byte buffer[] = new byte[1024]; //判断输入流中的数据是否已经读完的标识 int len = 0; //循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据 while((len=in.read(buffer))>0){ //使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + "\\" + filename)当中 out.write(buffer, 0, len); } //关闭输入流 in.close(); //关闭输出流 out.close(); //删除处理文件上传时生成的临时文件 item.delete(); rs.put("state", "SUCCESS");// UEDITOR的规则:不为SUCCESS则显示state的内容 rs.put("url","http://localhost/EdittextServlet/image/"+name);//能访问到你现在图片的路径 pout.write(rs.toString()); pout.flush(); pout.close(); return; } } rs.put("state", "文件上传失败!"); //在此处写上错误提示信息,这样当错误的时候就会显示此信息 rs.put("url",""); pout.write(rs.toString()); pout.flush(); pout.close(); return; } }ImageServlet
其余代码过于简单,不一一列举了,基本上就是最基础的Servlet逻辑和数据库增删改查
链接:https://pan.baidu.com/s/1XYA4-8OQtjIdZksrgLRqQg
提取码:7w7s
标签:java,MVC2,rs,网站,创建,pout,new,import,上传 来源: https://www.cnblogs.com/yuanzessrs/p/10606206.html