Sou novo em servlet e criei um que realiza conexão com o banco de dados.
Bom, até aqui tudo ok. Mas o problem acontece quando eu tento retorna, por exemplo o nome do banco em uma página já existente.
Resumindo, não consigo retornar nenhum nome de variável do servlet em minha JSP já existente.
depois que seu servlet for executado, redirecione para um jsp usando dipacher
Mas antes set uma variavel de request para que assim vc pegue do outro lado
request.setAttribute(“chave”, “valor”)
Mas pra realizar isso eu teria que executar o servlet via browser antes.
Bom, minha página JSP seria a inicial, o servlet só me serveria pra eu reusar os
códigos em outras JSP’s, então eu não queria executá-los via browser como
páginas iniciais, entende?"
[quote=dark123]Perfeito lelodois, você está de parabéns.
Mas pra realizar isso eu teria que executar o servlet via browser antes.
Bom, minha página JSP seria a inicial, o servlet só me serveria pra eu reusar os
códigos em outras JSP’s, então eu não queria executá-los via browser como
páginas iniciais, entende?"[/quote]
Entao não seria um servlet e sim uma classe java normal.
O servlet é para tratar suas requisições e nao para receber parametros e retornar um objeto qualquer.
Crie uma classe java normal sem ser servlet com o metodo que vc quer e chame ele no seu jsp (nao é nada padronizado), mas a gente ve isto depois.
abs
if (conn == null) {
try {
String driver001= “org.gjt.mm.mysql.Driver”;
String server001 = "localhost";
String dbase001 = "otavio";
String user001 = "root";
String pass001 = "2017";
Class.forName(driver001);
conn = DriverManager.getConnection(
"jdbc:mysql://" +server001+ "/" +dbase001 , user001 , pass001);
System.out.println("Conexão ao banco de dados "+dbase001+" estabelecida com sucesso!");
conn.close();
} catch(ClassNotFoundException cnfex) {
System.err.println(“Driver não encontrado!”);
} catch(SQLException sqlex) {
System.out.println(“Não foi possível realizar a conexão com o banco de dados!\n”+sqlex);
} catch(Exception ex) {
System.out.println(“Erro inesperado!”);
}
} // fim do if
}
public static void main(String[] args) {
new Conexao();
}
}
[/code]
Bom, se fosse para Desktop, eu faria assim , mas não sei quanto à WEB. :?:
no jsp vc deve importar, deve ter faltado isto pois sua classe esta em package.
la em cima na declaracao fica assim.
<% language=“java”… import=“schema” %>
<%
Conexao c = new Conexao();
MeuObjeto m = c.retornaOqueEuQuero();
%>
o main nao vai ter utilidade, somente para testes…
abs
[quote=lelodois]faça um metodo que retorne o que vc quer.
no jsp vc deve importar, deve ter faltado isto pois sua classe esta em package.
la em cima na declaracao fica assim.
<% language=“java”… import=“schema” %>
[/quote]
Acho que você quiz dizer assim:
<%@page language="java" import="schema.Conexao"%>
[quote]<%
Conexao c = new Conexao();
MeuObjeto m = c.retornaOqueEuQuero();
%>[/quote]
Também acho que a outra parte seja asi:
<%
Conexao c = new Conexao();
MeuObjeto m = c.retornaOqueEuQuero(); // coloco o quê?
%>
<%
} catch(SQLException sqlex2) {
out.println("Não foi possível se conectar ao banco de dados!" +sqlex2);
}
%>[/code]
Desta maneira, as variáveis da classe JAVA não são
reutilizadas, pois mostra erro por parte do NetBeans, então acho que
vou precisar resolver o trecho MeuObjeto também.
pode ser, o nome do metodo é indiferente.
o que vc tem q ver é o objeto do tipo de retorno, que neste caso é de Connection.
este metodo vc faz todo a criação da sua conection e retorna ela…
String server001 = "localhost";
String dbase001 = "otavio";
String user001 = "root";
String pass001 = "2017";
Class.forName(driver001);
conn = DriverManager.getConnection(
"jdbc:mysql://" +server001+ "/" +dbase001 , user001 , pass001);
System.out.println("Conexão ao banco de dados "+dbase001+" estabelecida com sucesso!");
conn.close();
} catch(ClassNotFoundException cnfex) {
System.err.println("Driver não encontrado!");
} catch(SQLException sqlex) {
System.out.println("Não foi possível realizar a conexão com o banco de dados!\n"+sqlex);
} catch(Exception ex) {
System.out.println("Erro inesperado!");
}
} // fim do if
// teria que ter algum return bem aqui, mas quando adiciono mostra erro.
} // fim do método “conectar”
public static void main(String[] args) {
Conexao c = new Conexao();
c.getConectar();
}
}[/code]
utilize o return para retornar a conexao.
pois na assinatura do método vc esta prometendo devolver uma Conexao
public Connection getConectar() {
utilize o return desta forma
return conn;
// tem que ter o return null em todos os catch
} catch(ClassNotFoundException cnfex) {
System.err.println("Driver não encontrado!");
return null;
} catch(SQLException sqlex) {
System.out.println("Não foi possível realizar a conexão com o banco de dados!\n"+sqlex);
return null;
} catch(Exception ex) {
System.out.println("Erro inesperado!");
return null;
}