Oi
Boa noite
Estou fazendo meu TCC sobre JME
Estou tendo grandes dificuldades em lidar com o envio e recebimento de dados com HTTP/SERVLET.
Primeiramente eu preciso logar no sistema (através do banco de dados/servlet).
Em seguida é necessário fazer uma busca no banco de dados (como se fosse uma agenda online)
Até agora a única coisa q consegui fazer foi o login.
O problema é que preciso manter a “conexão Http aberta”, ou seja, aquela mensagem para conectar na web só deve aparecer uma vez para o usuário.
Querendo implementar a busca após estar logada no sistema percebi q não seria tão simples assim…
Mesmo pq a servlet possui um único método post e na midlet eu só conecto uma vez na internet, então como enviar os dados que virão depois e como recebe-los???
Aqui está o código q fiz para o login… preciso muito que me ajude, tenho só mais um mês… estou aprendendo JME agora o meu tempo é um pouco curto… ficaria grata, muito grata mesmo com o seu auxilio, estou um pouco desesperada, pq já tentei fazer várias coisas pra isso dar certo e infelizmente não estou conseguindo.
Abraços
–> código midlet:
private class ThreadHttpConnection extends Thread{
public String url = "http://localhost:8080/Http/HttpServer";
public void run(){
HttpConnection http = null;
try {
http = (HttpConnection)Connector.open(url, Connector.READ_WRITE);
http.setRequestProperty("User-Agent", "Profile/MIDP-2.0 , Configuration/CLDC-1.0");
http.setRequestProperty("Content-Language", "en-US");
http.setRequestMethod(HttpConnection.POST);
os = http.openDataOutputStream();
os.writeUTF(login.trim());
System.out.println("conectando com o servidor");
} catch (IOException ex) {
showAlert(ex.getMessage());
ex.printStackTrace();
}
try
{
is = http.openDataInputStream();
loginResult = is.readUTF();
senhaResult = is.readUTF();
alertResult.setTimeout(Alert.FOREVER);
getDisplay().setCurrent(alertResult, get_formEscolha());
getDisplay().vibrate(3000);
os.close();
is.close();
http.close();
}
catch (IOException ex) {
showAlert(ex.getMessage());
ex.printStackTrace();
}
}
}
–> código servlet
package br.com.web;
import java.io.*;
import java.net.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import br.com.web.FabricaConex;
public class HttpServer extends HttpServlet {
private String sqla = "select * from usuario where login =?";
//ResultSet para exibir retirar o resultado da consulta com o banco
private ResultSet rs;
//PreparedStatemente para executar a consulta no banco de dados
private PreparedStatement ps;
//Connection para realizar a conexão com banco de dados
private Connection con;
// Strings para captar os resultados da consulta do banco de dados
private String loginResult;
private String senhaResult;
private DataInputStream in = null;
private DataOutputStream os = null;
public void init(){
}
public HttpServer() throws SQLException{
con = FabricaConex.getConnection();
}
/* protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.close();
}*/
//Get
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//doPost(request,response);
}
//Post
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
in = new DataInputStream((InputStream)request.getInputStream());
os = new DataOutputStream((OutputStream)response.getOutputStream());
String login = in.readUTF();
System.out.println("Nome recebido: "+login);
try {
// prepara a Statement
ps = this.con.prepareStatement(sqla);
// seta o valor ? da String sql
ps.setString(1,login);
// executa a Query de busca
rs = ps.executeQuery();
while(rs.next()){
// imprime no console o resultado da pesquisa
System.out.println("Senha:"+rs.getString("senha")+"| Login:"+rs.getString("login"));
// salva nas variáveis o resultado da pesquisa
loginResult =""+rs.getString("login");
senhaResult = rs.getString("senha");
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
response.setContentType("text/plain");
os.writeUTF(loginResult.trim());
os.writeUTF(senhaResult.trim());
in.close();
os.close();
os.flush();
}
public String getServletInfo() {
return "Short description";
}
}
–
“Se alguém permanece em Cristo é uma nova criatura” [code]