Problemas com JSP!

26 respostas
renatac

Então!!! Agora tenho outra dúvida… fiz uma abertura.jsp com um menu.txt … nesse menu existe HOME; Cadastro; Consulta, fale conosco. Como que eu faço ligação entre eles???

Por exemplo… eu quero que quando clica no link consulta ele abre uma janela com alguns dados…

Eu já tenho uma Classe com conexão com o banco… Como posso fazer isso!!! :roll:

26 Respostas

jaboot

Renata,

Pelo que eu estou percebendo, você criou um arquivo .txt que é o seu menu. Já que você tem a conexão com o banco, porque não coloca o menu no banco e toda vez que a pessoa se logar, você cria o menu de acordo com o perfil dela?

Quanto a sua dúvida, é só colocar um link para cada ítem do menu para uma nova página .jsp. Considere o uso de um bom framework, tipo o Java Server Faces.

Ah, o menu é lido somente uma vez no banco.

renatac

Como assim o menu é lido somente uma vez, eu não posso altera-lo???

Assim… eu sou leiga ainda na area de programação… tipo eu to usando o Eclipse para fazer meus servlets e minhas classes…

O tom cat e o My sql…

To perdidinha!!! :roll:

renatac

Tem algum material que eu possa dar uma lida e entender tudo isso!?!?!? Essa conexão?

jaboot

Calma, calma vamos por partes

Você deve estar criando um site que tem um menu. Porque você não coloca os ítens do menu no banco de dados? Tipo cria uma tabela “menu”.

Daí, em um futuro próximo, você pode criar uma “administraçãozinha” para o seu site, e mudar os ítens do menu conforme você ache necessário, entre outras coisas.

Legal, o eclipse é muito bom. Mas vamos partir do princípio: o que você já fez e o que você está querendo fazer? Assim eu acho que consigo te ajudar no que for necessário

Edit: desculpa, eu só li agora - você tem a classe mas não fez a conexão? dá uma procurada aqui no fórum, o pessoal solta direto código fonte de conexão

renatac

não tipo assim....

Eu tenho uma classe chamada Banco (Eclipse), nessa classe eu faço conexão com o banco e minha tabela chama-se formulario...

Código da minha classe Banco
package com.yourcompany.struts;


import java.sql.*;



public class Banco {
private Connection conn;
	
	public Banco() {
		try{
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=teste&password=teste");  
			
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void selecionar() {
	
		try{
			Statement stmt = conn.createStatement();
			
			ResultSet res = stmt.executeQuery("select * from formulario");
			
			
			while (res.next()){
				
			
					System.out.println(res.getInt("id"));
					System.out.println(res.getString("PRIMEIRO_NOME"));
					System.out.println(res.getString("ULTIMO_NOME"));
					System.out.println(res.getString("IDADE"));	
					System.out.println(res.getString("SEXO"));
					System.out.println(res.getString("PROFISSAO"));	
					System.out.println(res.getString("ENDERECO"));	
					System.out.println(res.getString("BAIRRO"));
					System.out.println("-----------------");
			}	
			
			res.close();
			stmt.close();
				
			}catch(SQLException sqle){
			sqle.printStackTrace();
		}
	}
	
	public void inserir(){
	try {
		Statement stmt = conn.createStatement();
		stmt.executeUpdate("insert formulario values (null, 'Roberta', 'Benedita', '24', 'F', 'ESTUDANTE', 'MARQUES DE MURITIBA', 'JACANA')");
		stmt.close();
		
	}catch (SQLException sqle){
		sqle.printStackTrace();
	}
}
	
	public void alterar(){
		try{
			Statement stmt = conn.createStatement();
			
			stmt.executeUpdate("update formulario set PRIMEIRO_NOME = 'Fulano' where id=3");
			
			stmt.close();
		}catch (SQLException e){
			e.printStackTrace();
		}
	}
	
	public void excluir(){
		try{
			Statement stmt = conn.createStatement();
			
			stmt.executeUpdate("delete from formulario WHERE id = 3" );
			
			stmt.close();
		}catch (SQLException e){
			e.printStackTrace();
		}
		
	}
	
	
		public static void main(String[] args) {
			
			Banco banco = new Banco();
			
			//banco.inserir();
			//banco.alterar();
			banco.selecionar();
			//banco.excluir();
					
			
	}
}

Depois disso eu fiz um web.xml e criei um .txt chamado menu.

<center>
<font face="verdana" size="3">
<b>
	<a href="home.jsp">Home</a> |
	<a href="cadastro.jsp">Cadastro</a> |
	<a href="consulta.jsp">Consulta</a> |
	<a href="fale.jsp">Fale Conosco</a> |
	<a href="calendario.jsp">Calendario</a> 
</b>
</font>
</center>

e um .JSP chamado abertura...

<html>
<head>
	<title>Tekno Site </title>
</head>
<body>
<%@ include file="menu.txt"%>
<h1 align="center">::: <font face="Arial">Bem vindo ao Tekno Site</font> :::</h1>
<h2 align="center"></h2>
<p align="center">
<img src="file://C:/Java/Tomcat%205.5/webapps/meusite1/Java-Cap.jpg" width="371" height="329">
</p>
<h1 align="center">
</body>
</html>

Já Configurei o meu web.xml .....

Mas o que eu quero é ter uma conexão entre eles... tipo assim: pelo site jsp, eu incluir dados no banco e ele me mostrar os dados... tipo um formulario !...

jaboot

Renata,

pelo código que você passou, eu acho o seguinte, crie duas classes diferentes, uma com todas as conexões e as outras de manipulação, como inserir, deletar, essas coisas

Se você quer criar um servlet, você tem que extender a classe HttpServlet, entre outras coisas. Criar somente um método que mostra na tela não vai adiantar.

Procure entender como funciona um Servlet, mude seu código e volte a postar, estaremos aqui para ajudar.

dudaskank

oi de novo Renata

bom, acho que pelos posts anteriores você sabe como funciona servlet, então o que vc vai precisar será:

Criar a jsp de cadastro e de consulta que você colocou no menu… comece com uma delas.

Escolhida a jsp, nela você coloca um formulário onde vc coloca todos os campos que vai precisar pra cadastrar ou consultar. No atributo action do formulário, você coloca o nome de uma servlet que fará o serviço no bd.

Em seguida, comece a criar a servlet como uma servlet normal, e no seu doPost ou doGet, ou seja lá onde vc estiver fazendo o processamento, você lê os atributos passados pelo form do jsp com o request.getAttribute(). Aí você converte e usa eles para fazer as operações no bd, coloca uma mensagem bonitinha dizendo se deu certo ou não, e manda de volta para uma outra jsp, usando algo assim:

request.setAttribute("mensagemBonitinha", "Ueba, deu certo!"); request.getRequestDispatcher("resultado.jsp").forward(request, response);

beleza? qualquer coisa estamos aqui

renatac

Deixa eu tentar aqui… brigadao!!! Se eu tiver duvidas respondo aqui!!!

renatac

Só tenho uma dúvida... todos os meus .jsp vão extender para um .txt?!

Pq assim, a minha pagina abertura.jsp dentro do código tem um include menu.txt ....

Tipo eu não sei como montar ...

<html>
<head>
	<title>Formulário de testes</title>
</head>
<body>
<h1>Digite seus dados</h1>

<form action="resultform" method="post">
	Nome:<br>
	<input type="text" name="txtNome">
	<p>
	idade:<br>
	<input type="text" name="txtIdade">
	<p>
	<input type="submit" value=" OK ">
	<input type="reset" value="Limpar">
</form>
</body>
</html>

Tipo eu montei um fomulario mas nao deu certo..

jaboot

“Rezinha”,

Juro que não consegui entender a sua relação com esse arquivo .txt até agora.
O que deu errado nesse formulário?

renatac

Tipo rs… eu nao sei se tenho que criar outro .txt pra colocar dentro do meu jsp… ou devo criar tudo dentro do jsp sem o .txt…

dudaskank

se vc quis dizer “incluir” o txt, só quando vc quiser mostrar o menu mesmo. aliás, pode ser outras extensões, como html mesmo, até recomendo já que as ferramentas aí podem ajudar dando cor no seu código…

seu formulário parece ok, provavelmente seu erro foi ou na servlet ou no mapeamento da servlet. coloca ele pra que possamos ver aqui

flw

jaboot

Você vai criar uma página .jsp sem a necessidade de um .txt

no action do form você indica o servlet que recebe os dados, provavelmente pelo método post

renatac

Gente do céu! não é possivel que isso seja tao dificil rs...

Aí vao meus códigos!!!

Home.jsp
<html>
<head>
	<title>Formulário de testes</title>
</head>
<body>
<h1>Digite seus dados</h1>

<form action="Banco.class" method="post">
	Nome:<br>
	<input type="text" name="PRIMEIRO_NOME">
	<p>
	idade:<br>
	<input type="text" name="IDADE">
	<p>
	<input type="submit" value=" OK ">
	<input type="reset" value="Limpar">
</form>
</body>
</html>
Banco.class (eclipse)
package com.yourcompany.struts;


import java.sql.*;



public class Banco {
private Connection conn;
	
	public Banco() {
		try{
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=teste&password=teste");  
			
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void selecionar() {
	
		try{
			Statement stmt = conn.createStatement();
			
			ResultSet res = stmt.executeQuery("select * from formulario");
			
			
			while (res.next()){
				
			
					System.out.println(res.getInt("id"));
					System.out.println(res.getString("PRIMEIRO_NOME"));
					System.out.println(res.getString("ULTIMO_NOME"));
					System.out.println(res.getString("IDADE"));	
					System.out.println(res.getString("SEXO"));
					System.out.println(res.getString("PROFISSAO"));	
					System.out.println(res.getString("ENDERECO"));	
					System.out.println(res.getString("BAIRRO"));
					System.out.println("-----------------");
			}	
			
			res.close();
			stmt.close();
				
			}catch(SQLException sqle){
			sqle.printStackTrace();
		}
	}
	
	public void inserir(){
	try {
		Statement stmt = conn.createStatement();
		stmt.executeUpdate("insert formulario values (null, 'Roberta', 'Benedita', '24', 'F', 'ESTUDANTE', 'MARQUES DE MURITIBA', 'JACANA')");
		stmt.close();
		
	}catch (SQLException sqle){
		sqle.printStackTrace();
	}
}
	
	public void alterar(){
		try{
			Statement stmt = conn.createStatement();
			
			stmt.executeUpdate("update formulario set PRIMEIRO_NOME = 'Fulano' where id=3");
			
			stmt.close();
		}catch (SQLException e){
			e.printStackTrace();
		}
	}
	
	public void excluir(){
		try{
			Statement stmt = conn.createStatement();
			
			stmt.executeUpdate("delete from formulario WHERE id = 3" );
			
			stmt.close();
		}catch (SQLException e){
			e.printStackTrace();
		}
		
	}
	
	
		public static void main(String[] args) {
			
			Banco banco = new Banco();
			
			//banco.inserir();
			//banco.alterar();
			banco.selecionar();
			//banco.excluir();
					
			
	}
}
Meu web.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
	<display-name>Curso de JSP</display-name>
	<description>Site de testes</description>

	<session-config>
	   <session-timeout>5</session-timeout>
	</session-config>
	
	<servlet>
	<servlet-name>servlet1</servlet-name>
	<servlet-class>MeuServletTeste</servlet-class>
	</servlet>
	
	<servlet>
	<servlet-name>servlet2</servlet-name>
	<servlet-class>TipoSolicit</servlet-class>
	</servlet>
	
	<servlet>
	<servlet-name>servlet3</servlet-name>
	<servlet-class>Result</servlet-class>
	</servlet>
	
	<servlet>
	<servlet-name>servlet4</servlet-name>
	<servlet-class>Banco</servlet-class>
	</servlet>
		
	<servlet>
	<servlet-name>jsp1</servlet-name>
	<jsp-file>/pagina1.jsp</jsp-file>
	</servlet>
	
	<servlet>
	<servlet-name>jsp2</servlet-name>
	<jsp-file>/abertura.jsp</jsp-file>
	</servlet>
	
	
	<servlet-mapping>
	<servlet-name>servlet1</servlet-name>
	<url-pattern>/exemplo1</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
	<servlet-name>servlet2</servlet-name>
	<url-pattern>/tiposolicit</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
	<servlet-name>servlet3</servlet-name>
	<url-pattern>/resultform</url-pattern>
	</servlet-mapping>
	
	<servlet-mapping>
	<servlet-name>servlet4</servlet-name>
	<url-pattern>/bancoform </url-pattern>
	</servlet-mapping>
	
	<servlet-mapping>
	<servlet-name>jsp1</servlet-name>
	<url-pattern>/exemplo/meujsp</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
	<servlet-name>jsp2</servlet-name>
	<url-pattern>/exemplo/abertura</url-pattern>
	</servlet-mapping>
	
	
	<welcome-file-list>
	  <welcome-file>index.html</welcome-file>
	  <welcome-file>index.htm</welcome-file>
	  <welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>
dudaskank

Ah, liga não… o começo sempre é difícil, mas depois piora :stuck_out_tongue:

Aqui:

<form action="Banco.class" method="post">

Ali na action, vc deve colocar o que vc colocou no ur-pattern, do seu web.xml

Outra coisa, nos , você também está colocando seus jsp né? Na verdade, você deve colocar apenas suas servlets que você cria mesmo. Você deve ter visto que o tomcat transforma jsp em servlet, mas isso vc deixa pra ele que ele se vira, não deve mapear.

Veja se já ajuda…

renatac

Galera deu certo em uma parte… O problema era que eu coloquei o endereço /exemplo/arquivo.alguma coisa

e meu arquivo nao estava na pasta exemplo…
Criei a pasta e joguei o arquivo dentro, dai deu certo massss…

agora quando clico no home ele aparece o que eu quero… mas no formulario ele nao ta conversando com o banco… acho que nao consegui fazer ele na minha classe ser do get ou do post junto com conexão com o banco… isso tudo tem que estar em uma classe?

renatac

no caso seria Banco ou /bancoform ???

lá minha url esta como /bancoform mas minha classe se chama banco … e mesmo assim, testei as duas e nao deram certo :frowning:

Deixa eu tenta uma coisa aqui… tenho que colocar todos os meus atributos ???

renatac

genteeee agora deu um erro HTTP Status 500 …

dudaskank

Bem, erro 500 deve indicar algum problema na sua servlet, o que já é bom sinal porque pelo jeito vc consegui fazer o caminho até ela.

Agora vc precisa ver a mensagem de erro e consertar, hehehe

Só para tentar ajudar:

<servlet>
		<servlet-name>NomePraSuaServlet</servlet-name>
		<servlet-class>com.dudaskank.servlet.AClasseDaServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>NomePraSuaServlet</servlet-name>
		<url-pattern>/UrlDaServlet</url-pattern>
	</servlet-mapping>

e no html vc chega nela desse jeito, se seu html estiver na raiz:

<p><a href="UrlDaServlet?nome=Eduardo">Hadouken</a></p>

Ajudou??? tchau

renatac
<servlet-class>com.dudaskank.servlet.AClasseDaServlet</servlet-class>

Esse código é o que com.dudaskank.servlet…???

dudaskank

É o pacote da classe hehehe :stuck_out_tongue:

renatac

“Eduardo”

Então na minha classe Banco.class eu tenho que incluir meu metodo post e get ???

dudaskank

Você fala aqueles métodos das servlets né, doPost e doGet certo? Se for, não. Você da sua servlet é que acessa os métodos da sua classe Banco.

Ou Banco é sua servlet e eu entendi errado? hehehe. Se for sua servlet é lá sim que coloca :stuck_out_tongue:

Espero não estar te confundindo mais hehehe

renatac
Putzzzz.... rs... Tipo assim ó... meu Banco.class
import java.sql.*;



public class Banco {
private Connection conn;
	
	public Banco() {
		try{
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=teste&password=teste");  
			
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public void selecionar() {
	
		try{
			Statement stmt = conn.createStatement();
			
			ResultSet res = stmt.executeQuery("select * from formulario");
			
			
			while (res.next()){
				
			
					System.out.println(res.getInt("id"));
					System.out.println(res.getString("PRIMEIRO_NOME"));
					System.out.println(res.getString("ULTIMO_NOME"));
					System.out.println(res.getString("IDADE"));	
					System.out.println(res.getString("SEXO"));
					System.out.println(res.getString("PROFISSAO"));	
					System.out.println(res.getString("ENDERECO"));	
					System.out.println(res.getString("BAIRRO"));
					System.out.println("-----------------");
			}	
			
			res.close();
			stmt.close();
				
			}catch(SQLException sqle){
			sqle.printStackTrace();
		}
	}
	
	public void inserir(){
	try {
		Statement stmt = conn.createStatement();
		stmt.executeUpdate("insert formulario values (null, 'Roberta', 'Benedita', '24', 'F', 'ESTUDANTE', 'MARQUES DE MURITIBA', 'JACANA')");
		stmt.close();
		
	}catch (SQLException sqle){
		sqle.printStackTrace();
	}
}
	
	public void alterar(){
		try{
			Statement stmt = conn.createStatement();
			
			stmt.executeUpdate("update formulario set PRIMEIRO_NOME = 'Fulano' where id=3");
			
			stmt.close();
		}catch (SQLException e){
			e.printStackTrace();
		}
	}
	
	public void excluir(){
		try{
			Statement stmt = conn.createStatement();
			
			stmt.executeUpdate("delete from formulario WHERE id = 3" );
			
			stmt.close();
		}catch (SQLException e){
			e.printStackTrace();
		}
		
	}
	
	
		public static void main(String[] args) {
			
			Banco banco = new Banco();
			
			//banco.inserir();
			//banco.alterar();
			banco.selecionar();
			//banco.excluir();
					
			
	}
}
Eu tenho que colocar dentro desse código acima esse código aqui ó ->
public class MeuServletTeste extends javax.servlet.http.HttpServlet {

public MeuServletTeste(); e etc etc.....

Ou eu coloco dentro da minha .jsp?

dudaskank

Bem, nenhum dos dois hehe

Na verdade não é recomendado misturar a servlet com o acesso ao banco, então você vai ter uma outra classe além dessa Banco aí, por exemplo, um BancoServlet por exemplo, que ela sim vai ser sua servlet e chamar os métodos da classe Banco. Essa BancoServlet que vc vai mapear no web.xml

renatac

hummmm… tendi… mais ou menos… [puxando os cabelos] rsrsrsrsrs

Criado 24 de julho de 2006
Ultima resposta 25 de jul. de 2006
Respostas 26
Participantes 3