其他分享
首页 > 其他分享> > 基本MVC2模式创建新闻网站

基本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