zoukankan      html  css  js  c++  java
  • 后台java,前台extjs文件下载

    前台:

        function _loadFilesFjContent() {
            var records = Ext.getCmp('filesFjPanel').getSelectionModel().getSelection();

            if (records.length == 0) {
                Ext.MessageBox.alert('操作信息', '请选择附件');
                return;
            }

            if (records.length > 1) {
                Ext.MessageBox.alert('操作信息', '请只选择一个附件');
                return;
            }

            window.open("loadFilesFjContent.do?A_ID=" + records[0].get('A_ID'), "_blank", "width=40,height=30,resizable=yes,scrollbars=yes");
        }

    后台:

    控制层:

        @RequestMapping(value = "loadFilesFjContent")
        public void loadFilesFjContent(String A_ID, HttpServletRequest request, HttpServletResponse response, HttpSession session) {
            try {
                Map<String, Object> operator = getOperator(session);

                Map<String, Object> filesFj = filesFjService.loadFilesFj(A_ID, operator);
                InputStream inputStream = filesFjService.loadContent(A_ID, operator);
                response.reset();
                String fileName = URLEncoder.encode((String) filesFj.get("FNAME"), "UTF-8");
                response.setHeader("Content-Disposition", "attachment; filename=" + fileName);

                ServletOutputStream out = response.getOutputStream();
                byte[] content = new byte[65535];
                int length = 0;
                if (inputStream != null) {
                    while ((length = inputStream.read(content)) != -1) {
                        out.write(content, 0, length);
                    }
                }

                out.flush();
                out.close();
            }
            catch (Exception e) {
                logger.error(e.getMessage(), e);
            }
        }

    服务层:

        @Override
        public InputStream loadContent(String A_ID, Map<String, Object> operator) {
            String sql = "select FCONTENT from FILES_FJ where A_ID = ?";
            return oaJdbcTemplate.queryForObject(sql, new Object[] { A_ID }, new ParameterizedRowMapper<InputStream>() {
                public InputStream mapRow(ResultSet rs, int rowNum) throws SQLException {
                    return rs.getBinaryStream(1);
                }
            });

        }

  • 相关阅读:
    表现层(jsp)、持久层(类似dao)、业务层(逻辑层、service层)、模型(javabean)、控制层(action)
    理解HTTP session原理及应用
    “不同浏览器对于同一域名的并发获取(加载)资源数是有限的”
    URL编码与解码
    URL和URI的区别与联系
    spring 源代码地址
    java_ant详解
    Struts2 Convention插件的使用
    Struts2的@ResultPath
    Java Annotation原理分析(一)
  • 原文地址:https://www.cnblogs.com/mwd-banbo/p/10175969.html
Copyright © 2011-2022 走看看