8
respostas

angular 2 e JSP

Pessoal, tenho uma intranet em JSP e preciso fazer "rapidamente" uma aplicação (CRUD). Quero usar o angular 2. Inicialmente fiz duas aplicações diferentes. O front end está inclusive na estrutura do Alurapic, ou seja, escrevi os formulários dentro da estrutura existente. Qdo vou executar a aplicação eu subo o tomcat ( eclipse) e depois executo ( em client e server o npm start). Funciounou a leitura, mas ainda não funcionou a inclusão, alteração porque tenho um erro de CORS ( entendo que é porque uma esta rodando na porta 3000 e a outra na porta 8080). Achei em alguns lugares formas de integrar o angular 2 no projeto Jsp ( não estou usando nenhum framework), mas não entendi e vi no forum alura um conselho para manter os códigos separados. Alguém pode me ajudar entender como resolvo o problema de Cors, tenho que fazer esta ginástica toda (tomcat e npm start)? Posteriormente estes problemas resolvidos também não entendo qual seria o json devolvido em caso de deleção, inclusão e alteração. Muito obrigada.

8 respostas

Ah, sobre o problema CORS incluí no JSP ( read) o seguinte: response.setHeader("Access-Control-Allow-Origin",""); response.setHeader("Access-Control-Allow-Methods","");

Funcionou para a leitura, mas parece que para inclusão, alteração e deleção não funcionou.

Olá, Mary.

Voce esta recebendo alguma mensagem de erro? Se sim posta ela aqui, por favor?

Oi Marco, o erro é o 405 e o problema está relacionado com o retorno do backend. Não entendo o intercambio entre as duas aplicações. Tenho um jsp que devolve um json e na verdade acredito que preciso retornar o codigo 200 se o executeupdade teve sucesso.

Mary, na primeira postagem você comentou sobre CORS. Você já implementou o CORS e fez uns teste pra ver se está rolando no POST?

Pra fazer o teste você pode utilizar o Postman -- ele é apenas um webapp do chrome, bem fácil de instalar e usar. :-)

Sim, funcionou o Post. Vou pesquisar e usar o Postman. Valeu a dica".

Marco, me desculpe. Eu me confundi, funcionou somente o GET. Estou pensando em usar o spring para criar o backend, assim não preciso saber o que o backend precisa devolver json, codigo 200 que não sei fazer. O que acha?

Mary, mal só tinha percebido agora que você está também está usando JavaScript no Backend. Coloca aqui o código do POST que está no seu Backend que vejo se tem algum erro?

Incluir - Não sei o que devolver

<%@page import="angular2.DbManager" %>
<%@page import="java.sql.Connection" %>
<%@ page import="org.json.simple.JSONObject" %>
<%@ page import="org.json.simple.JSONArray" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.sql.ResultSet" %>


<%
JSONArray ja = new JSONArray();
String nr_projeto = request.getParameter("nr_projeto");
ResultSet rs = null;

response.setHeader("Access-Control-Allow-Origin","*");
response.setHeader("Access-Control-Allow-Methods","*");


DbManager db = new DbManager();
Connection conn = db.getConnection();
if(conn == null){
    //out.print("conexao falhou");
} else {
    //out.print("sucesso");
};


String sql= "INSERT INTO financas.projeto ";
sql = sql + "(nr_projeto, nome_projeto,dt_ini,dt_venc,dt_tail, mci_projeto, tipo_projeto,vlr_projeto, desc_projeto) ";
sql = sql + " VALUES ('5', 'Ritinha', '2017-01-01 00.00.00', '2020-01-01 00.00.00', '2022-01-01 00.00.00', '55555555', '2', '6000', 'Estes dados vão ficar fixo')";


//out.print(sql);
try {
    Statement stmt = conn.createStatement();     
    stmt.executeUpdate(sql);
    rs = stmt.getResultSet();
    JSONObject obj = new JSONObject();        
    obj.put("sucesso", 200);
   } catch (SQLException e) {
        e.printStackTrace();
   };

   out.print(ja);
   out.flush();
  // send response
  %>

Listar - funciona corretamente

<%@page import="angular2.DbManager" %>
<%@page import="java.sql.Connection" %>
<%@ page import="org.json.simple.JSONObject" %>
<%@ page import="org.json.simple.JSONArray" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.SQLException" %>

<%
JSONArray ja = new JSONArray();
//String id = request.getParameter("id");

 response.setHeader("Access-Control-Allow-Origin","*");
 response.setHeader("Access-Control-Allow-Methods","*");

DbManager db = new DbManager();
Connection conn = db.getConnection();
if(conn == null){
    //out.print("conexao falhou");
} else {
    //out.print("sucesso");
};

String sql= " Select  nr_projeto,"; 
sql = sql + "        nome_projeto, ";
sql = sql + "        dt_ini, ";
sql = sql + "        dt_venc, ";
sql = sql + "        dt_tail,";
sql = sql + "        mci_projeto,";
sql = sql + "        tipo_projeto,";
sql = sql + "        vlr_projeto,";
sql = sql + "        desc_projeto";


sql = sql + " FROM financas.projeto";
//sql = sql + " Where Region like 'Antarctica'";
//sql = sql + " Where id like '" + id + "'";
sql = sql + " ORDER BY nr_projeto desc";


try {
    Statement stmt = conn.createStatement();     
    ResultSet rs = stmt.executeQuery(sql);

    while (rs.next()) {   
        JSONObject obj = new JSONObject();        
        obj.put("nr_projeto", rs.getString("nr_projeto"));
        obj.put("nome_projeto", rs.getString("nome_projeto"));
        obj.put("dt_ini", rs.getString("dt_ini"));
        obj.put("dt_venc", rs.getString("dt_venc"));      
        obj.put("dt_tail", rs.getString("dt_tail")); 
        obj.put("mci_projeto", rs.getString("mci_projeto")); 
        obj.put("tipo_projeto", rs.getString("tipo_projeto")); 
        obj.put("vlr_projeto", rs.getString("vlr_projeto")); 
        obj.put("desc_projeto", rs.getString("desc_projeto")); 
        ja.add(obj);
                }
    } catch (SQLException e) {
        e.printStackTrace();
    };

    out.print(ja);
    out.flush();
%>

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software