在gitjsp + servlets中提交代码后发生错误

问题描述

我有一个Java Web项目(jsp + servlets),本地代码可以在属性注册表中运行,如果我提交到git,然后进行git pull或git clone,则属性注册表会停止工作,但是没有出现错误,这很简单不记录数据,仅返回成功页面,仅当我尝试提交此版本时,才会出现此问题。

我试图创建一个新的存储库并将其作为新项目上传,但是问题仍然存在

这是DAO类

public boolean cadastrar(Imovel imovel) throws SQLException {

        Connection connection = ConnectionFactory.getConexao();

        //Endereço
        String INSERTIMOVEL = "INSERT INTO Imovel VALUES (DEFAULT,?,?)";
        String INSERTENDERECO = "INSERT INTO Endereco VALUES (DEFAULT,?)";

        smt = connection.prepareStatement(INSERTENDERECO,Statement.RETURN_GENERATED_KEYS);

        smt.setString(1,imovel.getEndereco().getLogradouro());
        smt.setString(2,imovel.getEndereco().getComplemento());
        smt.setInt(3,imovel.getEndereco().getNumero());
        smt.setString(4,imovel.getEndereco().getCidade());
        smt.setString(5,imovel.getEndereco().getCep());
        smt.setString(6,imovel.getEndereco().getBairro());
        smt.setString(7,imovel.getEndereco().getEstado());
        smt.execute();

        rs = smt.getGeneratedKeys();
        rs.next();

        //imovel
        smt = connection.prepareStatement(INSERTIMOVEL);
        smt.setString(1,imovel.getTitulo());
        smt.setString(2,imovel.getDescricao());
        smt.setString(3,"Em Análise");
        smt.setString(4,"Ativo");
        smt.setDouble(5,imovel.getValor());
        smt.setDouble(6,imovel.getArea_total());
        smt.setDouble(7,imovel.getArea_edificada());
        smt.setInt(8,imovel.getComodos());
        smt.setInt(9,imovel.getVagas_garagem());
        smt.setInt(10,imovel.getBanheiros());
        smt.setTimestamp(11,timestamp);
        smt.setString(12,imovel.getDiretorio_imagem());
        smt.setString(13,imovel.getTipo_imovel());
        smt.setInt(14,imovel.getUsuario().getId_usuario());
        smt.setInt(15,rs.getInt(1));
        boolean rowInserted = smt.executeUpdate() > 0;

        rs.close();
        smt.close();
        connection.close();
        return rowInserted;
    }

这是控制器(我使用命令和工厂模式)

@Override
    public String executar(HttpServletRequest request,HttpServletResponse response) {

        try {

            HttpSession usuarioLogado = request.getSession();
            Sessao sessao = (Sessao) usuarioLogado.getAttribute("usuarioLogado");

            Part filePart = request.getPart("uploadFile"); // 
            String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString(); //
            InputStream fileContent = filePart.getInputStream();

            imovel.setDiretorio_imagem(sessao.getId_usuario() + File.separator + fileName);

            ByteArrayOutputStream os = new ByteArrayOutputStream();

            byte[] buffer = new byte[1024];
            int len;

            while ((len = fileContent.read(buffer)) != -1) {

                os.write(buffer,len);
            }

            byte[] bytes = os.toByteArray();

            // cria o diretorio de upload
            // esse caminho e relativo ao diretorio da aplicacao
            ServletContext context = request.getServletContext();
            String uploadPath = context.getRealPath("/") + "Resources\\upload" + File.separator + sessao.getId_usuario();

            // caso o diretorio nao exista o bloco abaixo cria o mesmo
            File uploadDir = new File(uploadPath);
            if (!uploadDir.exists()) {
                uploadDir.mkdir();
            }

            //converte o array de bytes em file e grava no diretorio
            File f = new File(uploadPath + File.separator + fileName);
            try (FileOutputStream fos = new FileOutputStream(f)) {
                fos.write(bytes);
            }

            //Imovel Requests
            String titulo = request.getParameter("titulo");
            String descricao = request.getParameter("descricao");
            int comodos = Integer.parseInt(request.getParameter("comodos"));
            int banheiro = Integer.parseInt(request.getParameter("banheiro"));
            int garagem = Integer.parseInt(request.getParameter("garagem"));
            Double valor = Double.parseDouble(request.getParameter("valorimovel"));
            Double areatotal = Double.parseDouble(request.getParameter("areatotal"));
            Double areaedificada = Double.parseDouble(request.getParameter("areaedificada"));
            String tpimovel = request.getParameter("tpimovel");

            imovel.setTitulo(titulo);
            imovel.setDescricao(descricao);
            imovel.setComodos(comodos);
            imovel.setBanheiros(banheiro);
            imovel.setVagas_garagem(garagem);
            imovel.setValor(valor);
            imovel.setArea_total(areatotal);
            imovel.setArea_edificada(areaedificada);
            imovel.setTipo_imovel(tpimovel);
            imovel.getUsuario().setId_usuario(sessao.getId_usuario());

            //Endereço Requests
            String logradouro = request.getParameter("logradouro");
            int numero = Integer.parseInt(request.getParameter("numero"));
            String complemento = request.getParameter("complemento");
            String cidade = request.getParameter("cidade");
            String estado = request.getParameter("estado");
            String cep = request.getParameter("cep");
            String bairro = request.getParameter("bairro");

            //Endereço Set's
            imovel.getEndereco().setLogradouro(logradouro);
            imovel.getEndereco().setNumero(numero);
            imovel.getEndereco().setComplemento(complemento);
            imovel.getEndereco().setCidade(cidade);
            imovel.getEndereco().setEstado(estado);
            imovel.getEndereco().setCep(cep);
            imovel.getEndereco().setBairro(bairro);

            ImovelDAO dao = new ImovelDAO();

            if (dao.cadastrar(imovel)) {
                request.setAttribute("msg","Seu imóvel foi cadastrado e passará por uma análise,fique de olho no seu email!");
                return "index.jsp";
            } else {
                request.setAttribute("msgerro","Ocorreu um erro ao tentar cadastrar o imóvel,tente novamente");
                return "index.jsp";
            }
        } catch (SQLException | NumberFormatException | IOException | ServletException | MessagingException ex) {
            request.setAttribute("msgerro",ex.getMessage());
            return "index.jsp";
        }
    }

解决方法

此行smt = connection.prepareStatement(INSERTIMOVEL);关闭前一个statement ResultSet。获取该行之前的值。

int val = rs.getInt(1);
smt = connection.prepareStatement(INSERTIMOVEL);
// ...
smt.setInt(15,val);

如果这不是问题,请编辑您的问题,以包括任何例外或与上一个工作版本的差异。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...