Variavel

27 respostas
J

Olá amigos…

Estou com duas servlet

uma chamada Principal.java e outra Segundaria.java

Tenho uma variavel na servlet Principal.java chamada soma
quero colocar o valor dela na variavel pesquisa que fica na servlet Segundaria… sabe como faço isso. para transferir de uma servlet para outra

obrigado!

27 Respostas

S

coloca no request

ServletA

request.setParametter("variavel",valor);

ServletB

String valor = request.getParametter("variavel");
G

Vc precisa dizer como quer fazer isso…

via requisição…quer chamar um método ???

J

naum aceita essa opcao request.setParametter(“variavel”, valor);

só getParametter

M

Os valores voce seta com request.setAttribute e não request.setParameter

J

eu sei! mais naum está indo

M

Porque você precisa chamar outro servlet ?
o ideal era usar algum pattern para trabalhar, veja FrontControler como exemplo…

como você esta chamando o servlet em questao ?

J

servelt de onde envia a variavel:

package br.jander.Cadastro;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

 public class Loginacess extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;
   
    String url="jdbc:odbc:banco";
	Connection con;
	Statement smtp;
	ResultSet rs;	
	String user1, user2, pass1, pass2, envia= "jander";
	
	public Loginacess() {
		super();
	}   	
	
	public void Conectar(){
        try{
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			con = DriverManager.getConnection(url,"","");
			smtp = con.createStatement();	    
	        
	        }catch(Exception s){s.printStackTrace();}   
	}
	
	public void Desconectar(){
		try{
			con.close();
		}catch(SQLException e){}
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	}  	
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		Redirecionar(request, response);
		
	}  
	
	public void Redirecionar (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setContentType("text/html");
		PrintWriter writer = response.getWriter();
		
		writer.println("<html><head><title>Hora Extra Janderson</title></head>");
		writer.println("<body>");
		
		user1 = request.getParameter("usuario");
		pass1 = request.getParameter("senha");
		Conectar();
		try{
			rs = smtp.executeQuery("select * from senha where user='" + user1 + "' and pass='" + pass1 + "'");
	    	while(rs.next()){
	    		user2 = rs.getString("user");
	    		pass2 = rs.getString("pass");
            }
	    }catch(Exception s){s.printStackTrace();}
	    
		Desconectar();
		
		if(user1.equals(user2) && pass1.equals(pass2)){
			request.setAttribute("envia", envia);
		    response.sendRedirect("index.jsp");		
			}
			else{
				writer.println("<br><br><br><center><b><font color=red size=4>Usuário ou senha incorreto</font></b>");
				writer.println("<br><font color=black size=2>[Página redirecionada em 3 segundos, caso não seja <a href=login.jsp>clique aqui</a>!]</font></center>");
		}
		
		writer.println("</body></html>");
		
		
	}
}

jsp onde recebe a variavel

<%
String recebe = request.getParameter("envia");

if(recebe == null){
out.println("<html>");

     out.println("<head>");
     out.println("<meta name=GENERATOR content=Microsoft FrontPage 5.0>");
     out.println("<meta name=ProgId content=FrontPage.Editor.Document>");
     out.println("<title>Controle de Hora Extra</title>");
     out.println("</head>");
     out.println("<frameset framespacing=0 border=0 frameborder=0 rows=80,*>");
     out.println("<frame name=cabeçalho scrolling=no noresize target=principal src=top.jsp>");
     out.println("<frame name=principal src=Extra>");
     out.println("<noframes>");
     out.println("<body>");

     out.println("<p>ATEsta página usa quadros mas seu navegador não aceita quadros.</p>");

     out.println("</body>");
     out.println("</noframes>");
     out.println("</frameset>");
    
     out.println("</html>");
}
%>

desse modo que está ai naum está indo!

S

tenta:

String recebe = request.getAttribute("envia");
M

Ixxx… é um jsp ou servler o segundo ?
de uma olhada nesse comando…

getServletContext().getRequestDispatcher(page)

OBS: tai tendo esse problema por misturar codigo de negocio e controle na view…

S

vai com getAttribute, ao inves getParameter…acho que vai funfar !!

J

da erro

S

mostra o erro ai…

J
<%

erro nessa linha > String recebe = request.getAttribute(envia);

if(recebe == null){

como naum existisse esse comando

M

Editado: Tente enviar o parametro pela url

response.sendRedirect("index.jsp?parametro");

ou via session…

S

cara acho que não tem dois servlets, e sim uma servlet e um jsp…

J
request.setAttribute("envia", envia);
	    response.sendRedirect("index.jsp");
J

na servlt envia a variavel
na JSP recebe a variavel

é uma servlt e uma jsp

S

cara qual o log que o container produz ??

post ai…ta meio estranho isso…

J

cara vou posta o código de novo de cada page a que envia a variavel e a que recebe

J

[size=18][color=red]Servelt que envia a variavel[/color][/size]

package br.jander.Cadastro;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

 public class Loginacess extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;
   
    String url="jdbc:odbc:banco";
	Connection con;
	Statement smtp;
	ResultSet rs;	
	String user1, user2, pass1, pass2, envia= "jander";
	
	public Loginacess() {
		super();
	}   	
	
	public void Conectar(){
        try{
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			con = DriverManager.getConnection(url,"","");
			smtp = con.createStatement();	    
	        
	        }catch(Exception s){s.printStackTrace();}   
	}
	
	public void Desconectar(){
		try{
			con.close();
		}catch(SQLException e){}
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	}  	
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		Redirecionar(request, response);
		
	}  
	
	public void Redirecionar (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setContentType("text/html");
		PrintWriter writer = response.getWriter();
		
		writer.println("<html><head><title>Hora Extra Janderson</title></head>");
		writer.println("<body>");
		
		user1 = request.getParameter("usuario");
		pass1 = request.getParameter("senha");
		Conectar();
		try{
			rs = smtp.executeQuery("select * from senha where user='" + user1 + "' and pass='" + pass1 + "'");
	    	while(rs.next()){
	    		user2 = rs.getString("user");
	    		pass2 = rs.getString("pass");
            }
	    }catch(Exception s){s.printStackTrace();}
	    
		Desconectar();
		
		if(user1.equals(user2) && pass1.equals(pass2)){
			request.setAttribute("envia", envia);
		    response.sendRedirect("index.jsp");		
			}
			else{
				writer.println("<br><br><br><center><b><font color=red size=4>Usuário ou senha incorreto</font></b>");
				writer.println("<br><font color=black size=2>[Página redirecionada em 3 segundos, caso não seja <a href=login.jsp>clique aqui</a>!]</font></center>");
		}
		
		writer.println("</body></html>");
		
		
	}
}

[size=18][color=red]JSP que recebe a variavel[/color][/size]

<%
String recebe = request.getParameter("envia");

if(recebe == null){
out.println("<html>");

     out.println("<head>");
     out.println("<meta name=GENERATOR content=Microsoft FrontPage 5.0>");
     out.println("<meta name=ProgId content=FrontPage.Editor.Document>");
     out.println("<title>Controle de Hora Extra</title>");
     out.println("</head>");
     out.println("<frameset framespacing=0 border=0 frameborder=0 rows=80,*>");
     out.println("<frame name=cabeçalho scrolling=no noresize target=principal src=top.jsp>");
     out.println("<frame name=principal src=Extra>");
     out.println("<noframes>");
     out.println("<body>");

     out.println("<p>ATEsta página usa quadros mas seu navegador não aceita quadros.</p>");

     out.println("</body>");
     out.println("</noframes>");
     out.println("</frameset>");
    
     out.println("</html>");
}
%>
M

OK é um .JSP ?
use comando que eu disse antes para abrir a view certa

getServletContext().getRequestDispatcher("/arquivo.jsp").forward(request, response);

pronto assim funciona
mais PELA MOR tire o scriptlet e use JSP como deve ser usado

e use o botao Editar na sua menssagem se tiver algo a adicionar e não postar varias seguidas…

J

na servlt tirei o comando response.sendRedirect(“index.jsp”);

e coloquei o

getServletContext().getRequestDispatcher("/arquivo.jsp").forward(request, response);

mais a variavel ainda chega como nula

sera que naum precisa na jsp importa a servelt?

S

seguinte faça dessa forma…

if(user1.equals(user2) && pass1.equals(pass2)){  
             request.setAttribute("envia", "soudaniel");//Tira envia  e coloca  a string direto...
             response.sendRedirect("index.jsp");       
             }
J

desse modo foi

RequestDispatcher enviaindex = request.getRequestDispatcher("index.jsp?envia=" + envia);   
			enviaindex.forward(request, response);
G

[color=red]Porr4 velho presta atenção no que vc faz…pra que vc criou dois tópicos com o mesmo assunto… Sem noção hein.[/color]

J

Não cara deu erro aqui no servidor mesmo! quando cliquei em salvar ele deu erro. ai pensei que naum tinha gravado. ai fui e criei outro
quando fui ver tinha 2 topicos iquais!

G

então usa um só…eu to respondendo lá tentando te ajudar e tem outra leva repondendo a mesma coisa aqui… sem comentários cara na boa.

Criado 4 de janeiro de 2008
Ultima resposta 9 de jan. de 2008
Respostas 27
Participantes 4