基于javaweb+mysql的jsp+servlet精美风在线音乐网站(java+jdbc+c3p0+servlet+mysql+jsp)

基于javaweb+mysql的jsp+servlet精美风在线音乐网站(java+jdbc+c3p0+servlet+mysql+jsp)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb+mysql的JSP+Servlet精美风在线音乐网站(java+jdbc+c3p0+servlet+mysql+jsp)

1.运行环境

环境配置:

Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)

项目技术:

JSP + C3P0+ Servlert + html+ css + JavaScript + JQuery + Ajax + Fileupload等等

 */
public class ServletUtils {

    private static SongService songService = new SongServiceImpl();
    private static CommentService commentService = new CommentServiceImpl();
    private static TypeService typeService = new TypeServiceImpl();
    private static SingerService singerService = new SingerServiceImpl();
    private static UserService userService = new UserServiceImpl();

    /**
     * 将数据发送给前端界面
     * @param resp
     * @param jsonStr
     * @throws IOException
     */
    public static void sendToPage(HttpServletResponse resp, String jsonStr) throws IOException {
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("application/json; charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.print(jsonStr);
    }

    /**
     * 设置用户数量、专辑数量、歌手数量、歌曲数量的 session
     * @param session
     */
    public static void setNumber(HttpSession session) {
        // 更新Type的数量信息
        for(Type type : typeService.getAllTypes()) {
            type.setSongCount((int) songService.getAllSongsCountByType(type.getName()));
            typeService.updateTypeById(type);
        }
        session.setAttribute("singerNumber", singerService.getAllSingersCount(new HashMap<>()));
        session.setAttribute("songNumber", songService.getAllSongsCount(new HashMap<>()));
        session.setAttribute("commentNumber", commentService.getAllCommentsCount(new HashMap<>()));
        session.setAttribute("userNumber", userService.getAllUsersCount(new HashMap<>()));
    }

    /**
     * 清空session
     * @param request
                        singer.setName(value);
                        System.out.println(singer);
                    } else if ("sex".equals(name)) {
                        singer.setSex(Integer.parseInt(value));
                        System.out.println("歌手的性别:" + value);
                    } else if ("birth".equals(name)) {
                        singer.setBirth(value);
                    } else if ("location".equals(name)) {
                        singer.setLocation(value);
                    } else if ("introduction".equals(name)) {
                        System.out.println(name);
                        singer.setIntroduction(value);
                    } else if ("debutDate".equals(name)) {
                        singer.setDebutDate(value);
                    } else if ("accessCount".equals(name)) {
                        singer.setAccessCount(Integer.parseInt(value));
                    } else if ("englishName".equals(name)) {
                        singer.setEnglishName(value);
                    }
                } else {
                    fileItem = item;
                }
            }
            //如果fileitem中封装的是上传文件
            savePath = savePath + singerName;
            System.out.println("savePath: " + savePath);
            File savefile = new File(savePath);
            if (!savefile.exists()) {
                //创建临时目录
                savefile.mkdir();
            }

            //得到上传的文件名称,
            filename = fileItem.getName();
            System.out.println("上传的文件名称为:"+filename);
            if(filename==null || filename.trim().equals("")){
                // 允许长传的文件为空,所以这里直接跳出
                realSavePath = null;
//                request.setAttribute("message", "上传的文件名称为空!!!");
//                request.getRequestDispatcher("/page/manager/message.jsp").forward(request, response);
//                return;
            }else {
                //注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如:  c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt
                //处理获取到的上传文件的文件名的路径部分,只保留文件名部分
                String filename_1 = filename.substring(filename.lastIndexOf("\\") + 1);
                //得到上传文件的扩展名
                String fileExtName = filename_1.substring(filename_1.lastIndexOf(".") + 1);
                //如果需要限制上传的文件类型,那么可以通过文件的扩展名来判断上传的文件类型是否合法
                System.out.println("上传的文件的扩展名是:" + fileExtName);
                //获取item中的上传文件的输入流
                InputStream in = fileItem.getInputStream();
                //得到文件保存的名称

/**
 * @description: TODO
 * @version: 1.0
 */
@WebServlet("/homePageServlet")
public class HomePageServlet extends HttpServlet {

    private SongService songService = null;
    private SingerService singerService = null;
    private CommentService commentService = null;
    private TypeService typeService = null;

    @Override
    public void init() throws ServletException {
        songService = new SongServiceImpl();
        singerService = new SingerServiceImpl();
        commentService = new CommentServiceImpl();
        typeService = new TypeServiceImpl();
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        HttpSession session = request.getSession();

        // 获取10条数量的新更新的音乐
        List<Song> songList = songService.getNewMusic(10);

        // 存入map,并获取相应的歌手信息
        // 新发行音乐栏 的信息
        Map<Singer, Song> singerSongMap = new HashMap<>();
        for(Song song : songList) {
            Singer singer = singerService.getSingerBySingerId(song.getSingerId());
 *
 * 上传文件
 */
@WebServlet("/admin/uploadFileServlet")
public class UploadFileServlet extends HttpServlet {
    private SingerService singerService = null;
    private SongService songService = null;
    private TypeService typeService = null;

    @Override
    public void init() throws ServletException {
        singerService = new SingerServiceImpl();
        songService = new SongServiceImpl();
        typeService = new TypeServiceImpl();
    }

    @SuppressWarnings("unchecked")
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
        BigDecimal price = null;

        Song song = new Song();

        HttpSession session = request.getSession();
        request.setAttribute("page", "music");
        String path_save = "/other/upload/";
        String path_temp = "/other/temp/";

        String realSavePath = null;
        String filename = null;
        String saveFilename = null;
        //得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
//        String savePath = new File("").getCanonicalPath() + "\\web" + path_save;
        String savePath = PathUtils.getProjectURL() + "" + path_save;
        //上传时生成的临时文件保存目录
//        String tempPath = new File("").getCanonicalPath() + "\\web" + path_temp;
        String tempPath = PathUtils.getProjectURL() + "" + path_temp;
        System.out.println("savePath: " + savePath);
        System.out.println("tempPath: " + tempPath);

        File tmpFile = new File(tempPath);
        if (!tmpFile.exists()) {
            //创建临时目录
            tmpFile.mkdir();
        }

        //消息提示
        String message = "";
        String singerName = "";
        try{
            //使用Apache文件上传组件处理文件上传步骤:
        // value该文件夹内可以上传文件的后缀名
        extMap.put("images", "gif,jpg,jpeg,png,bmp");
        extMap.put("flashs", "swf,flv");
        extMap.put("medias", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
        extMap.put("files", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");
    }

    /**
     * 文件上传
     *
     * @param request
     * @return infos
     * info[0] 验证文件域返回错误信息
     * info[1] 上传文件错误信息
     * info[2] savePath 文件保存目录路径
     * info[3] saveUrl 文件保存目录url
     * info[4] fileUrl 文件最终的url包括文件名
     */
    @SuppressWarnings("unchecked")
    public String[] uploadFile(HttpServletRequest request) {
        String[] infos = new String[5];
        // 验证
        infos[0] = this.validateFields(request);
        // 初始化表单元素
        Map<String, Object> fieldsMap = new HashMap<String, Object>();
        if (infos[0].equals("true")) {
            fieldsMap = this.initFields(request);
        }
        // 上传
        List<FileItem> fiList = (List<FileItem>) fieldsMap.get(UploadUtils.FILE_FIELDS);
        if (fiList != null) {
            for (FileItem item : fiList) {
                infos[1] = this.saveFile(item);
            }
            infos[2] = savePath;
            infos[3] = saveUrl;
            infos[4] = fileUrl;
        }
        return infos;
    }

    /**
     * 上传验证,并初始化文件目录
     *
     * @param request
     */
    private String validateFields(HttpServletRequest request) {
        String errorInfo = "true";
        // boolean errorFlag = true;
        // 获取内容类型
        String contentType = request.getContentType();
    @Override
    public void init() throws ServletException {
        adminService = new AdminServiceImpl();
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");

        // 获取前端传过来的数据
        String login = req.getParameter("login");
        String pwd = req.getParameter("pwd");
        String inputCode = req.getParameter("code");
        System.out.println(inputCode);

        // 获取session中存入的验证码
        HttpSession session = req.getSession();
        String code = (String) session.getAttribute("code");
        System.out.println(code);

        // 定义json格式的返回数据
        JSONObject jsonObject = new JSONObject();
        // 判断验证码输入是否正确
        if(code != null && code.equalsIgnoreCase(inputCode)){
            // 判断用户名是否存在
            if(adminService.usernameIsExit(login) != null){
                Admin admin = adminService.getAdmin(login, pwd);
                if(admin != null){
                    jsonObject.put("Status", "ok");
                    jsonObject.put("Text", "登录成功<br /><br />欢迎回来");
                    session.setAttribute("admin", admin);
                    // 设置用户数量、专辑数量、歌手数量、歌曲数量的 session
                    ServletUtils.setNumber(session);
                }else {
                    jsonObject.put("Status", "Erro");
                    jsonObject.put("Erro", "密码错误");
                }
            }else {
                jsonObject.put("Status", "Erro");
                jsonObject.put("Erro", "用户名不存在");
            }
        }else {
            // 验证码错误
     * @throws Exception
     */
    public static MimeMessage createMimeMessage(Session session, String receiveMail, String userRemarks,
                                                String senderName, String subjectText, String MailText, String EmailAccount) throws Exception {
        // 1. 创建一封邮件
        MimeMessage message = new MimeMessage(session);

        // 2. From: 发件人
        message.setFrom(new InternetAddress(EmailAccount, senderName, "UTF-8"));

        // 3. To: 收件人(可以增加多个收件人、抄送、密送)
        message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, userRemarks, "UTF-8"));

        // 4. Subject: 邮件主题
        message.setSubject(subjectText, "UTF-8");

        // 5. Content: 邮件正文(可以使用html标签)
        message.setContent(MailText, "text/html;charset=UTF-8");
        // 6. 设置发件时间
        message.setSentDate(new Date());

        // 7. 保存设置
        message.saveChanges();

        return message;
    }

    /**
     * * 创建一封只包含文本的简单邮件
     *
     * @param EmailAccount
     * 			  发件人邮箱账户  -- 需开通POP3、IMAP服务
     * @param EmailPassword
     * 			  发件人邮箱密码
     * @param receiveMail
     *            收件人邮箱
     * @param userRemarks
     *            用户备注
     * @param senderName
     *            发件人昵称
     * @param subjectText

     * @param email 注册填写的邮箱
     */
    public static void sendMessage(HttpServletRequest request, String username, String code, String email) {
        String url  = "http://" + request.getServerName() + ":" + request.getServerPort() + "" + request.getContextPath() + "/user/activeServlet?username=" + username + "&code=" + code;
        String mailText = "<html><head></head><body><h1>这是一封激活邮件,激活请点击以下链接</h1><h3><a href='" + url +
               "'>" + url + "</a></h3></body></html>";

        System.out.println(mailText);
        Send("chenloveyouabc@163.com", "IPPZGCBOAEPQEYIE", email, "备注", "个人音乐网站", "个人音乐网站激活", mailText);
    }
    public static void main(String[] args) {
    	 Send("chenloveyouabc@163.com", "IPPZGCBOAEPQEYIE", "2929836014@qq.com", "备注", "个人音乐网站", "个人音乐网站激活", "444");
	}
}

/**
 * @ClassName: CheckCodeServlet
 * @Description: TODO
 */
@WebServlet("/checkCodeServlet")
public class CheckCodeServlet extends HttpServlet {

    Random ran = new Random();
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789";

        StringBuilder code = new StringBuilder();
        // 初始化表单元素
        Map<String, Object> fieldsMap = new HashMap<String, Object>();
        if (infos[0].equals("true")) {
            fieldsMap = this.initFields(request);
        }
        // 上传
        List<FileItem> fiList = (List<FileItem>) fieldsMap.get(UploadUtils.FILE_FIELDS);
        if (fiList != null) {
            for (FileItem item : fiList) {
                infos[1] = this.saveFile(item);
            }
            infos[2] = savePath;
            infos[3] = saveUrl;
            infos[4] = fileUrl;
        }
        return infos;
    }

    /**
     * 上传验证,并初始化文件目录
     *
     * @param request
     */
    private String validateFields(HttpServletRequest request) {
        String errorInfo = "true";
        // boolean errorFlag = true;
        // 获取内容类型
        String contentType = request.getContentType();
        int contentLength = request.getContentLength();
        // 文件保存目录路径
        savePath = request.getSession().getServletContext().getRealPath("/") + basePath + "/";
        // 文件保存目录URL
        saveUrl = request.getContextPath() + "/" + basePath + "/";
        File uploadDir = new File(savePath);
        if (contentType == null || !contentType.startsWith("multipart")) {
            // TODO
            System.out.println("请求不包含multipart/form-data流");
            errorInfo = "请求不包含multipart/form-data流";
        } else if (maxSize < contentLength) {
            // TODO
            System.out.println("上传文件大小超出文件最大大小");
            errorInfo = "上传文件大小超出文件最大大小[" + maxSize + "]";
        } else if (!ServletFileUpload.isMultipartContent(request)) {
            // TODO
            errorInfo = "请选择文件";
        } else if (!uploadDir.isDirectory()) {// 检查目录
            // TODO

/**
 * @description: TODO
 * @version: 1.0
 */
@WebServlet("/albumSingleServlet")
public class AlbumSingleServlet extends HttpServlet {
    private SongService songService = null;
    private SingerService singerService = null;

    @Override
    public void init() throws ServletException {
        songService = new SongServiceImpl();
        singerService = new SingerServiceImpl();
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 获取参数
        String singerName = request.getParameter("singerName");
        String _currentPage = request.getParameter("currentPage");// 当前页码
        String _rows = request.getParameter("rows");// 每页显示条数

        // 增加该歌手的热度
        singerService.updateSingerAccessCountBySingerName(singerName);

        if(_currentPage == null || "".equals(_currentPage)){
            _currentPage = "1";
        }

        if(_rows == null || "".equals(_rows)){
            _rows = "10";
        }

        int currentPage = Integer.parseInt(_currentPage);
        int rows = Integer.parseInt(_rows);

        PageBean<Song> songPage = new PageBean<>();

        int totalCount = Math.toIntExact(songService.getAllSongsCountBySingerName(singerName));
        // 计算总页码
        int totalPage = (totalCount % rows)  == 0 ? (totalCount / rows) : (totalCount/rows) + 1;
        songPage.setTotalPage(totalPage);
        // 计算当前页码
        if(currentPage <= 0){
        singerService.updateSingerAccessCountBySingerName(singerName);

        if(_currentPage == null || "".equals(_currentPage)){
            _currentPage = "1";
        }

        if(_rows == null || "".equals(_rows)){
            _rows = "10";
        }

        int currentPage = Integer.parseInt(_currentPage);
        int rows = Integer.parseInt(_rows);

        PageBean<Song> songPage = new PageBean<>();

        int totalCount = Math.toIntExact(songService.getAllSongsCountBySingerName(singerName));
        // 计算总页码
        int totalPage = (totalCount % rows)  == 0 ? (totalCount / rows) : (totalCount/rows) + 1;
        songPage.setTotalPage(totalPage);
        // 计算当前页码
        if(currentPage <= 0){
            currentPage = totalPage;
        } else if(currentPage > totalPage) {
            currentPage = 1;
        }
        songPage.setCurrentPage(currentPage);

        int start = (currentPage - 1) * rows;

        // 获取该歌手的所有歌曲
        List<Song> allSongs = songService.getSongBySingerName(start, rows, singerName);
        Singer singer = singerService.getSingerBySingerName(singerName);

        songPage.setList(allSongs);
        songPage.setTotalCount(totalCount);

        songPage.setRows(rows);
        songPage.setTotalPage(totalPage);

        // 添加到session
        HttpSession session = request.getSession();
        session.setAttribute("songPage", songPage);
        session.setAttribute("singer", singer);
        // 重定向到album-single页面
        response.sendRedirect(request.getContextPath() + "/page/user/album-single.jsp");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

/**
 * @description: TODO 修改歌曲信息
 * @version: 1.0
 */
@WebServlet("/admin/updateSongServlet")
public class UpdateSongServlet extends HttpServlet {

    private SongService songService = null;
    private TypeService typeService = null;

    @Override
    public void init() throws ServletException {
        songService = new SongServiceImpl();
        typeService = new TypeServiceImpl();
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 获取修改表单
        String songId = request.getParameter("songId");
        String playerCount = request.getParameter("update_playerCount_" + songId);
        String downloadCount = request.getParameter("update_downloadCount_" + songId);
        String collectionCount = request.getParameter("update_collectionCount_" + songId);
        String type = request.getParameter("update_songType_" + songId);
        String initialType = request.getParameter("initialType_" + songId);
        String lyric = request.getParameter("updateLyric_" + songId);
        System.out.println(type);

        // 封装数据
        Song song = new Song();
        song.setSongId(Integer.parseInt(songId));
        song.setPlayCount(Integer.parseInt(playerCount));
        song.setDownloadCount(Integer.parseInt(downloadCount));
        song.setCollectionCount(Integer.parseInt(collectionCount));
        song.setType(type);
        song.setLyric(lyric);
        song.setUpdateDate(DateUtils.getDateString());
        System.out.println(song);

        // 调用service执行修改操作
        int flag = songService.updateSong(song);

        // 设置上传用户
        Admin admin = (Admin) request.getSession().getAttribute("admin");
        User user = (User) request.getSession().getAttribute("user");
        if(admin != null) {
            song.setUploader(admin.getAdminName());
        } else if(user != null) {
            song.setUploader(user.getName());
        }
        System.out.println(song.getTime());
        int flag = songService.addSong(song);
        System.out.println(flag);
        if(flag > 0) {
            // 歌曲添加成功,修改该歌曲类别的歌曲数目
            for(String type : song.getType().split(",")){
                // 如果有该类别,则修改该类别歌曲数目,如果没有该类别,则添加该类别,再修改歌曲数目
                if(typeService.getTypeByName(type) != null) {
                    typeService.updateTypeByName(type, true);
                } else {
                    typeService.addType(new Type(null, type, 1));
                }
            }
            request.setAttribute("message", "歌曲添加成功!");
        } else {
            request.setAttribute("message", "歌曲添加失败!");
        }
    }

    //生成上传文件的文件名,文件名以:uuid+"_"+文件的原始名称

    public String mkFileName(String fileName){
        return UUID.randomUUID().toString()+"_"+fileName;
    }

}


/**
 * @ClassName: UploadFileServlet
 * @Description: TODO
 *
 * 上传文件
 */
@WebServlet("/admin/addSingerServlet")
public class AddSingerServlet extends HttpServlet {
    private SingerService singerService = null;
    private SongService songService = null;

    /**
     * * 创建一封只包含文本的简单邮件
     *
     * @param EmailAccount
     * 			  发件人邮箱账户  -- 需开通POP3、IMAP服务
     * @param EmailPassword
     * 			  发件人邮箱密码
     * @param receiveMail
     *            收件人邮箱
     * @param userRemarks
     *            用户备注
     * @param senderName
     *            发件人昵称
     * @param subjectText
     *            主题
     * @param mailText
     *            邮件正文
     * @return
     * @throws Exception
     */
    public static void Send(String EmailAccount, String EmailPassword, String receiveMail, String userRemarks,
                            String senderName, String subjectText, String mailText) {
        try {
            // 1. 创建参数配置, 用于连接邮件服务器的参数配置
            Properties props = new Properties(); // 参数配置
            props.setProperty("mail.transport.protocol", "smtp"); // 使用的协议(JavaMail规范要求)
            props.setProperty("mail.smtp.host", myEmailSMTPHost); // 发件人的邮箱的 SMTP 服务器地址
            props.setProperty("mail.smtp.auth", "true"); // 需要请求认证

            // PS: 某些邮箱服务器要求 SMTP 连接需要使用 SSL 安全认证 (为了提高安全性, 邮箱支持SSL连接, 也可以自己开启),
            // 如果无法连接邮件服务器, 仔细查看控制台打印的 log, 如果有有类似 “连接失败, 要求 SSL 安全连接” 等错误,
            // 取消下面 /* ... */ 之间的注释代码, 开启 SSL 安全连接。
            /*
             * // SMTP 服务器的端口 (非 SSL 连接的端口一般默认为 25, 可以不添加, 如果开启了 SSL 连接, // 需要改为对应邮箱的 SMTP
             * 服务器的端口, 具体可查看对应邮箱服务的帮助, // QQ邮箱的SMTP(SLL)端口为465或587, 其他邮箱自行去查看) final String
             * smtpPort = "465"; props.setProperty("mail.smtp.port", smtpPort);
             * props.setProperty("mail.smtp.socketFactory.class",
             * "javax.net.ssl.SSLSocketFactory");
             * props.setProperty("mail.smtp.socketFactory.fallback", "false");
             * props.setProperty("mail.smtp.socketFactory.port", smtpPort);
             */

            // 2. 根据配置创建会话对象, 用于和邮件服务器交互
            Session session = Session.getInstance(props);
            // 设置为debug模式, 可以查看详细的发送 log
            session.setDebug(true);

            // 3. 创建一封邮件
            MimeMessage message = createMimeMessage(session, receiveMail, userRemarks, senderName, subjectText,
                    mailText, EmailAccount);

            // 4. 根据 Session 获取邮件传输对象
            Transport transport = session.getTransport();

 * fileName-->若不指定文件名,默认为yyyyMMddHHmmss_xyz
 * extMap-->允许的扩展名,默认见代码中的构造方法
 * 注:extMap中的key中必须含有dirName
 */
public class UploadUtils {

    /**
     * 表单字段常量
     */
    public static final String FORM_FIELDS = "form_fields";
    /**
     * 文件域常量
     */
    public static final String FILE_FIELDS = "file_fields";

    // 最大文件大小
    private long maxSize = 1000000;
    // 定义允许上传的文件扩展名
    private Map<String, String> extMap = new HashMap<String, String>();
    // 文件保存目录相对路径
    private String basePath = "upload";
    // 文件的目录名
    private String dirName = "song";
    // 上传临时路径
    private static final String TEMP_PATH = "/temp";
    private String tempPath = basePath + TEMP_PATH;
    // 若不指定则文件名默认为 yyyyMMddHHmmss_xyz
    private String fileName;

    // 文件保存目录路径
    private String savePath;
    // 文件保存目录url
    private String saveUrl;
    // 文件最终的url包括文件名
    private String fileUrl;

    public UploadUtils() {
        // 其中images,flashs,medias,files,对应文件夹名称,对应dirName
        // key文件夹名称
        // value该文件夹内可以上传文件的后缀名
        extMap.put("images", "gif,jpg,jpeg,png,bmp");
        extMap.put("flashs", "swf,flv");
        extMap.put("medias", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
        extMap.put("files", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");
    }

    /**
     * 文件上传
     *
     * @param request
     * @return infos
     * info[0] 验证文件域返回错误信息
    /**
     * 处理上传内容
     *
     * @param request
     * @return
     */
    @SuppressWarnings("unchecked")
    private Map<String, Object> initFields(HttpServletRequest request) {

        // 存储表单字段和非表单字段
        Map<String, Object> map = new HashMap<String, Object>();

        // 第一步:判断request
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        // 第二步:解析request
        if (isMultipart) {
            // Create a factory for disk-based file items
            DiskFileItemFactory factory = new DiskFileItemFactory();

            // 阀值,超过这个值才会写到临时目录,否则在内存中
            factory.setSizeThreshold(1024 * 1024 * 10);
            factory.setRepository(new File(tempPath));

            // Create a new file upload handler
            ServletFileUpload upload = new ServletFileUpload(factory);

            upload.setHeaderEncoding("UTF-8");

            // 最大上传限制
            upload.setSizeMax(maxSize);

            /* FileItem */
            List<FileItem> items = null;
            // Parse the request
            try {
                items = upload.parseRequest(request);
            } catch (FileUploadException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            // 第3步:处理uploaded items
            if (items != null && items.size() > 0) {
                Iterator<FileItem> iter = items.iterator();
                // 文件域对象

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值