Preciso retornar o resultado da consulta do servlet (descrição do imovel) para a página jsp…
Pesquisando encontrei sobre o uso do jquery…Segue código que estou utilizando…
Não consigo trazer o retorno…
Estou utilizando o jquery-1.4.2.min.js
Página jsp
<%@ page import="java.sql.*" contentType="text/json"%>
<%
String empid = request.getParameter("empid");
String sql="";
Connection dbCon;
String valores = "";
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/imoveis","root","xxx");
java.sql.Statement s = con.createStatement();
sql = " select descricao from imovel where idImovel = " + empid;
ResultSet rs = s.executeQuery(sql);
while(rs.next())
{
String idImovel = rs.getString("descricao").toString();
valores += idImovel+ "\n";
}
rs.close();
s.close();
} catch (ClassNotFoundException e) {
System.out.println("Erro de configuracao" + e.getException());
} catch (SQLException sqle) {
System.out.println("Erro de SQL:" + sqle.getMessage() + " - " + sql);
}
response.getWriter().println(valores);
System.out.println(valores);
%>
Página html
<html>
<head>
<title>AJAX and JSON with JQUERY </title>
<script language="javascript" src="jquery-1.4.2.min.js"></script>
<script language="javascript">
function getEmployeeDetails(){
$.getJSON( "empdetails.jsp",{empid : $("#empid").val()}, displayResult);
}
function displayResult(data) {
if ( data.error) // emp not found
{
$("#IdImovel").val("") // clear fields
$("#descricao").val("")
alert( data.error);
}
else // Found employee. Display details
{
$("#IdImovel").val( data.IdImovel);
$("#descricao").val( data.descricao);
}
}
</script>
</head>
<body>
<form id="form1">
<h2>Employee Details</h2>
<table>
<tr>
<td>Employee ID : </td>
<td><input type="text" id="empid" size="10"/> <input type="button" value="Get Details" onclick="getEmployeeDetails()" /> </td>
</tr>
<tr>
<td>Employe Name : </td>
<td><input type="text" id="IdImovel" readonly size="30"/></td>
</tr>
<tr>
<td>Salary : </td>
<td><input type="text" id="descricao" readonly size="30"/></td>
</tr>
</table>
</form>
</body>
</html>
Tio, crie um servlet, não coloque trilhoes de linhas de código em um arquivo .jsp. No método doGet do servlet você usar o RequestDispatcher para enviar sua lista à sua página jsp:
servlet
//faça sua lógica para retornar os valores do banco de dados
List<Imovel> lista = new SuaClasseImovel().listar();
//define na requisicao a lista que voce vai mandar pra página
request.setAttribute("imoveis", lista);
//envia a requisicao com o atributo acima para a página
request.getRequestDispatcher().forward(request, response);
jsp
<%List<Imovel> lista = (ArrayList<Imovel>) request.getAttribute("lista");%>
<html>
<%--trabalhe com sua lista aqui--%>
</html>
Tem um exemplo mais completo…para estudo e entendimento…
Muito obrigado
Preciso utilizar Ajax para retornar…
Vou seguir este tutorial adpatando o codigo…
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.*;
import javax.servlet.http.*;
public class JobServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/json");
PrintWriter out = response.getWriter();
try {
String action = request.getParameter("action");
if (action.equals("1")) // send jobs to client {
out.println(getJobs());
} else {
out.println(getEmployees(request.getParameter("jobid"))); // send employees of the given job
}
} catch (Exception ex) {
System.out.println("Error message" + ex.getMessage());
} finally {
out.close();
}
}
// returns JSON string
private String getEmployees(String jobid) throws Exception {
// connect to oracle using thin driver
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "hr", "hr");
PreparedStatement ps = con.prepareStatement("select first_name || ' ' || last_name fullname from employees where job_id = ?");
ps.setString(1,jobid);
ResultSet rs = ps.executeQuery();
StringBuffer emps = new StringBuffer("{employees:[");
while (rs.next()) {
emps.append("{fullname:\"" + rs.getString("fullname") + "\"},");
}
emps.setCharAt( emps.length()-1,']'); // replace last character with ]
emps.append("}");
rs.close();
ps.close();
con.close();
return emps.toString();
}
// returns JSON string containing jobs
private String getJobs() throws Exception {
// connect to oracle using thin driver
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "hr", "hr");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select job_id, job_title from jobs");
StringBuffer jobs = new StringBuffer("{jobs:[");
while (rs.next()) {
jobs.append("{id:\"" + rs.getString("job_id") + "\",title:\"" + rs.getString("job_title") + "\"},");
}
jobs.setCharAt( jobs.length()-1,']'); // replace last character with ]
jobs.append("}");
rs.close();
st.close();
con.close();
return jobs.toString();
}
}
<html>
<head>
<title>Jobs and Employees</title>
<script language="javascript" src="jquery-1.2.6.js"></script>
<script language="javascript">
// this is done when page is loaded
$(function() {
$.getJSON("job",{action : "1"},displayJobs);
}
);
// callback function for obtaining jobs
function displayJobs(data) {
$.each(data.jobs, function(index,job) {
// add items to List box
$("#jobs").append("<option value='" + job.id + "'>" + job.title + "</option");
}
);
}
function getEmployees() {
$.getJSON("job",{action : "2", jobid : $("#jobs").val()},displayEmployees);
}
// callback function for obtaining employees
function displayEmployees(data) {
$("#employees").contents().remove();
$.each(data.employees, function(index,emp) {
// add items to List box
$("#employees").append("<option>" + emp.fullname + "</option");
} // end of function
); // each
}
</script>
</head>
<body>
<form id="form1">
<h2>Jobs and Employees</h2>
<table>
<tr>
<td valign="top" width="200px"> <h3>Jobs </h3>
<select id="jobs" size="10" ondblclick="getEmployees()" style="width:200px">
</select>
<p/>
<b>Double click on Job to get Employees of that Job.</b>
</td>
<td valign ="top" width="200px">
<h3>Employees </h3>
<select id="employees" size="10" style="width:200px">
</select>
</td>
</table>
</form>
</body>
</html>
Seguindo o tutorial, não consegui carregar os jobs com qualquer outros dados por exemplo…
Se alguém conseguir… Obrigado…
velho que código escroto é esse? vc ta abrindo conexão diretamente na servlet, lançando exceção ao invés de fazer o tratamento… meu deus, que bagunça!
Estou estudando e seguindo o tutorial…
Tem material melhor???