Aproveitar arquivos .java em um projeto WEB

Bom dia, estou com dificuldades em concluir meu projeto para a faculdade.
Bom tenho uma conexao com o Banco de Dados Oracle 10g XE, essa parte esta OK, alias executando o projeto no Shell funciona perfeitamente. Minha duvida é em como utilizar os mesmos arquivos para WEB. As classes que usei estão abaixo:

ClasseSelect

import java.applet.Applet;
import java.sql.*;

public class ClasseSelect extends Applet{
	

	public void insere_Select (String query, String user, String pass) {	
		Connection connection = null;
		
		try
		{	
			//Conecta com o Banco usando a FabricaDeConexao
			Connection conecta = new FabricaDeConexao().getConnection(user, pass);
			
			PreparedStatement stmt = conecta.prepareStatement(query);
			ResultSet resultSet = stmt.executeQuery();
			
			ResultSetMetaData metaData = resultSet.getMetaData();
			int numberOfColumn = metaData.getColumnCount();
			System.out.println("********** Tabela **********");
			System.out.println();
			
			for (int i = 1; i <= numberOfColumn; i++) 
				System.out.printf("%-20s\t", metaData.getColumnName(i));
				System.out.println();
			
			while (resultSet.next()) {
				for (int i = 1; i <= numberOfColumn; i++)
					System.out.printf("%-20s\t",resultSet.getObject(i));
					System.out.println();
			}
			
			//select @@ ideting
			//select max (campo id) from tabela
			
			stmt.close();
		}
		catch (SQLException sqlException)
		{
			sqlException.printStackTrace();
			System.exit(1);
		}
	}
}

ComandosSQL


import java.applet.Applet;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class ComandosSql extends Applet{
	
	public void insereQuery (String query, String user, String pass) throws SQLException {
		
		Connection conecta = new FabricaDeConexao().getConnection(user, pass);
		PreparedStatement stmt = conecta.prepareStatement(query);
		stmt.executeQuery();
		System.out.println("Comando Executado com Sucesso.");
		stmt.close();
		conecta.close();
	}

}

FabricaDeConexao

import java.applet.Applet;
import java.sql.*;
import oracle.jdbc.pool.OracleDataSource;

//Classe Responsavel por criar Conexão com o Banco de Dados Oracle e Retorna-la.
public class FabricaDeConexao extends Applet{
	
	public Connection getConnection(String usuario, String senha) throws SQLException{
		
		OracleDataSource ods = new OracleDataSource();
		String url = "jdbc:oracle:thin:@//127.0.0.1:1521/XE";
		String user = usuario;
		String passwd = senha;
		ods.setURL(url);
		ods.setUser(user);
		ods.setPassword(passwd);
		Connection conecao = ods.getConnection();
		return conecao;
		
	}
}

Main

import java.applet.Applet;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

import javax.swing.JOptionPane;

public class Main extends Applet{
	
	@SuppressWarnings("null")
	public static void main (String args[]) throws SQLException, IOException {
		//Criando Strings 
		String query = "";
		String user = "";
		String pass = "";
		ResultSet idAtual = null;
		int id = 0;
		String[] arrayUsuario;
		Date data;
		
		UsuarioSenha userPass = new UsuarioSenha(); 
		PalavrasReservadas palavra_reservada = new PalavrasReservadas();
		TestePalavras palavra = new TestePalavras();
		ClasseSelect select = new ClasseSelect();
		ComandosSql comandos = new ComandosSql();
		userPass.digite();
		
		//Utiliza Array para usuario e senha.
		user = userPass.retornaUsuario()[0];
		pass = userPass.retornaUsuario()[1];
		
		Connection conecta = new FabricaDeConexao().getConnection(user, pass);
		
		System.out.println("Digite \"0\" para encerrar");
		do {
			query = JOptionPane.showInputDialog(null, "Digite Comando SQL: ");
			query = query.replaceAll("\\*", " * ");
			query = query.replaceAll("\t", " ");
			query = query.replaceAll(",", ", ");
			query = query.replaceAll(" , ", ", ");
			data = new Date();
			String comando =("insert into comandos (id, comand, usuario, horario) values (contador.nextval,'"+query+"','"+user+"','"+data+"')");
			PreparedStatement stmt = conecta.prepareStatement(comando);
			stmt.executeQuery();
			ResultSet rs = stmt.executeQuery("select max(id) from comandos");
			if (rs.next()) {
				id = rs.getInt(1);
			}
		
			System.out.println(id);
			palavra.testePalavras(palavra_reservada.palavras, query,user,pass, id);
			
			//toUpperCase, método usado para deixar toda a String MAIUSCULA.
			String queryMaiuscula = query.toUpperCase();
			System.out.println(query);
			
			if (query.equals("0")) {
				System.out.println("Obrigado Por Usar a Aplicação.");
			}else if (queryMaiuscula.substring(0, 6).equals("SELECT")) {
				select.Insere_Select(queryMaiuscula, user, pass);
			}else if(!queryMaiuscula.substring(0, 6).equals("SELECT") && !queryMaiuscula.substring(0,4).equals("DROP") && !queryMaiuscula.substring(0, 4).equals("DESC")) {
				comandos.insereQuery(query, user, pass);
			}else if (queryMaiuscula.substring(0,4).equals("DROP")) {
				System.out.println("Seu usuario não tem Permissão para DROP TABLE");
			}else if (queryMaiuscula.substring(0, 4).equals("DESC")) {
				System.out.println("Aplicação não tem DESC disponivel.");
			}
		}while(!query.equals("0"));
		System.out.println("THE END");
		
		
	}

}

PalavrasReservadas

/*
 * Nome: Gilmar Soares
 * Data: 20/03
 * Projeto: Buscar palavras reservadas Java
 */



public class PalavrasReservadas {
	//String que contém "todas" as palavras reservadas do ORACLE (SQL) 
	//String palavras = "ADD DEFERRED INTO ROLLBACK ALL DELETE IS ROWS ALLOCATE DESC ISOLATION RTRIM ALTER DESCRIBE JOIN SCHEMA AND DIAGNOSTICS KEY SCROLL ANY DISCONNECT LAST SECOND ARE DISTINCT LEFT SELECT AS DOUBLE LIKE SESSION_USER ASC DROP LONGINT SET ASSERTION ELSE LOWER SMALLINT AT END LTRIM SOME AUTHORIZATION ENDEXEC MATCH SPACE AVG ESCAPE MAX SQL BEGIN EXCEPT MIN SQLCODE BETWEEN EXCEPTION MINUTE SQLERROR BIT EXEC NACAOAL SQLSTATE BOOLEAN EXECUTE NATURAL SUBSTR BOTH EXISTS NCHAR SUBSTRING BY EXPLAIN NVARCHAR SUM CALL EXTERNAL NEXT SYSTEM_USER CASCADE FALSE NO TABLE CASCADED FETCH NOT TEMPORARY CASE FIRST TIMEZONE_HOUR CAST FLOAT NULLIF TIMEZONE_MINUTE CHAR FOR NUMERIC TO CHARACTER FOREIGN OF TRAILING CHECK FOUND ON TRANSACTION CLOSE FROM ONLY TRANSLATE COLLATE FULL OPEN TRANSLATION COLLATION FUNCTION OPTION TRUE COLUMN GET OR UNION COMMIT GET_CURRENT_CONNECTION ORDER UNIQUE CONNECT GLOBAL OUT UNKNOWN CONNECTION GO OUTER UPDATE CONSTRAINT GOTO OUTPUT UPPER CONSTRAINTS GRANT OVERLAPS USER CONTINUE GROUP PAD USING CONVERT HAVING PARTIAL VALUES CORRESPONDING HOUR PREPARE VARCHAR COUNT IDENTITY PRESERVE VARYING CREATE IMMEDIATE PRIMARY VIEW CURRENT IN PRIOR WHENEVER CURRENT_DATE INDICATOR PRIVILEGES WHERE CURRENT_TIME INITIALLY PROCEDURE WITH CURRENT_TIMESTAMP INNER PUBLIC WORK CURRENT_USER INOUT READ WRITE CURSOR INPUT REAL XML DEALLOCATE INSENSITIVE REFERENCES XMLEXISTS DEC INSERT RELATIVE XMLPARSE DECIMAL INT RESTRICT XMLSERIALIZE DECLARE INTEGER REVOKE YEAR DEFERRABLE INTERSECT RIGHT";
	String palavras = "SELECT FROM WHERE ORDER BY INSERT INTO JOIN"; 
}

TestePalavras

import java.applet.Applet;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Hashtable;


public class TestePalavras extends Applet{

	public void testePalavras ( String entrada_palavra, String query, String user, String pass, int id) throws IOException, SQLException
	{
		//Criação de Strings  
		String s = "";
		PreparedStatement stmt = null;
		Hashtable hash = new Hashtable();
		
		
		//Conecta com o banco de dados Oracle
		Connection conecta = new FabricaDeConexao().getConnection(user, pass);
		
				
		//Método toUpperCase para deixar a query Maiuscula.
		query = query.toUpperCase();
		
		//Array de String que recebem palavras separadas por espaço, Query e Palavras Reservadas do Oracle (SQL)
		String separa_palavra[] = entrada_palavra.split ("\\ ") ;
		String arrayQuery[] = query.split("\\ ");
		
		String idComandos = ("");
		
		for ( int i = 0; i < arrayQuery.length ; i++ ) {
			for ( int j = 0; j < separa_palavra.length ; j++ ) {
				if ( arrayQuery[i].equals(separa_palavra[j])) {
					//System.out.println ( separa_palavra[j] );
					//txt.append(separa_palavra[j] + "\n");					
						hash.put(j, arrayQuery[i]);
						s = (String) hash.get(j);
						stmt = conecta.prepareStatement("insert into lexico (ident,token,id) values (contadorLex.nextval,'"+s+"',"+id+")");
						stmt.executeQuery();	
				}
			}
		}
	}
}

UsuarioSenha

import java.applet.Applet;

import javax.swing.JOptionPane;

public class UsuarioSenha extends Applet{
	//Atributos Privados de Usuario e Senha.
	private String user = "";
	private String pass = "";
	
	//Método pede ao Usuario login e senha.
	void digite () {
		this.user = "Integrador"; //JOptionPane.showInputDialog(null, "Digite Usuario BD: ");
		this.pass = "Integrador";//JOptionPane.showInputDialog(null, "Digite Senha BD: ");
	}
	
	//Método retorna Login e Senha.
	String[] retornaUsuario() {
		String[] array = new String [2];
		array[0] = this.user;
		array[1] = this.pass;
		return array;
	}
}

Como consigo utilizar esse projeto pronto em um projeto WEB aproveitando toda essa parte funcional?

Bom para que entendam, o usuario digita seu nome e senha do Banco de Dados, no caso Oracle.
Então ele precisa digitar a query que deseja ser executada, essa mesma passa por um processo de compilador (lexico, sintatito e semantico).
Então passando pelos processos a query é executada no Banco retornando assim sua função.
Mas gostaria de fazer essa funcionalidade via WEB.
Obrigado desde ja pela ajuda.

Você pode utilizar os códigos em um projeto web.

Seu metodo main que pega os valores do usuário se transformará na sua view (ex: Pagina JSP e Servlet).

As suas páginas podem ser feitas de N maneiras. Se não conhecer nada de web eu sugiro estudar Servlets e JSP e adicionar um framework web na sua aplicação para te ajudar (Spring, Struts, JSF etc…)

Então, conheço um pouco…
estou com a apostila da Caelum, mas estou meio perdido em Como usar.
Se vc me der um exemplo, ou alguem de como iniciar isso…
eu consigo seguir e terminar.

Tente usar os frameworks que a apostila te ensina.

Crie as telas com os respectivos dados que o usuário deve entrar.

No submit da pagina (Seria igual ao ultimo comando de entrada do shell), você deve ter os dados para realizar o que o usuário deseja.

Chame sua classe que realiza a operação e retorna o resultado.

Este resultado deve ser mostrado em outra página. Mostre os erros também (Se existir).

Provavelmente você precisará refatorar esta classe que realiza a operação.

Pense que a classe que realiza a operação não conhece nada de shell e jsp. Altere-a para que você possa utilizá-la nos 2 ambientes.

Ela recebe os valores para trabalhar e retorna um resultado ou erro.

Para obter os dados da request, você pode utilizar request.getParameter(“nome do campo”).

É mais ou menos assim.

Uma pergunta, pq tudo extende de applet ?

Applet é mais uma forma de criação de telas. Como você usa shell e agora jsp, não precisa de applet.

Então, tenho umas paginas em jsp.
Mas elas não estão interagindo com a parte JAVA feita.
Olha só

BemVindo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Bem Vindo ao Compiler Tools</title>
</head>
<body bgcolor="gray">
<br/>
	&lt;table border="1" align="center"&gt;
		&lt;tr &gt;
			&lt;td&gt;
				&lt;div align="center" style="border-color: red; border-top-width: 1cm; border-width: 10cm"  &gt;
					&lt;h4&gt;MENU&lt;/h4&gt;
					<a href="http://localhost:9090/PI/BemVindo.jsp">&lt;button&gt;HOME&lt;/button&gt;</a>
					<a >&lt;button&gt;LOGIN&lt;/button&gt;</a>
					<a >&lt;button&gt;SOBRE&lt;/button&gt;</a>
				&lt;/div&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;
	<br/>
	&lt;table border="1" align="center"&gt;
		&lt;tr&gt;
			&lt;td&gt;
				&lt;div align="center" style="border-color: red; border-top-width: 1cm; border-width: 10cm"  &gt;
					<font size="10;" color="black">Seja Bem Vindo ao Compiler Tools</font>
				&lt;/div&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;
	<br/>
	<br/>
	<br/>
	&lt;div align="center"&gt;
		<font color="black" size="5" >
		Bem Vindo<br>
		Este é o Projeto Integrador do Grupo xxxxxx sala I411.<br>
		A seguir você conhecerá a nossa ferramenta Compiler Tools.<br>
		<br>
		&lt;h5&gt;A partir deste ponto é por sua conta e risco.&lt;/h3&gt;
	&lt;/div&gt;
	<br/>
	<br/>
&lt;/body&gt;
&lt;/html&gt;

Login.jsp

&lt;%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%&gt;
    &lt;%@ page import="java.util.*, PI.UsuarioSenha, PI.*"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;

&lt;%@page import="PI.FabricaDeConexao"%&gt;&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
&lt;title&gt;Login&lt;/title&gt;
&lt;/head&gt;
&lt;body bgcolor="gray"&gt;
	&lt;table border="1" align="center"&gt;
		&lt;tr &gt;
			&lt;td&gt;
				&lt;div align="center" style="border-color: red; border-top-width: 1cm; border-width: 10cm"  &gt;
					&lt;h4&gt;MENU&lt;/h4&gt;
					<a href="http://localhost:9090/PI/BemVindo.jsp">&lt;button&gt;HOME&lt;/button&gt;</a>
					<a >&lt;button&gt;LOGIN&lt;/button&gt;</a>
					<a >&lt;button&gt;SOBRE&lt;/button&gt;</a>
				&lt;/div&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;
	<br/>
	<br/>
	<br/>
		&lt;table border="1" align="center"&gt;
		&lt;tr&gt;
		  &lt;td&gt;
			&lt;div align="center"&gt;
				&lt;form style="border-color: red" action="SuaQuery.jsp" method="post"&gt;
		        	<p>Usuario:</p> 
		        	&lt;input style="border: outset;" align="middle" type="text" name="usuario"/&gt;<br>
		        	<p>Senha:</p>   
		        	&lt;input  style="border: outset;" type="password" name="senha"/&gt;<p></p>
		        	&lt;input type="submit" value="Login"/&gt;
		        	&lt;input type="reset" value="Limpar"/&gt;	
				&lt;/form&gt;
			&lt;/div&gt;
		  &lt;/td&gt;	
		&lt;/tr&gt;	
		&lt;/table&gt;
		&lt;%
		String usuario = request.getParameter("usuario");
		String senha = request.getParameter("senha");
		UsuarioSenha user = new UsuarioSenha(); 
		%&gt;
&lt;/body&gt;
&lt;/html&gt;

SuaQuery

&lt;%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%&gt;
    &lt;%@ page import="java.util.*, PI.*" %&gt;
    
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
&lt;title&gt;Digite Query&lt;/title&gt;
&lt;/head&gt;
&lt;body bgcolor="gray"&gt;
	&lt;table border="1" align="center"&gt;
		&lt;tr &gt;
			&lt;td&gt;
				&lt;div align="center" style="border-color: red; border-top-width: 1cm; border-width: 10cm"  &gt;
					&lt;h4&gt;MENU&lt;/h4&gt;
					<a href="http://localhost:9090/PI/BemVindo.jsp">&lt;button&gt;HOME&lt;/button&gt;</a>
					<a >&lt;button&gt;LOGIN&lt;/button&gt;</a>
					<a >&lt;button&gt;SOBRE&lt;/button&gt;</a>
				&lt;/div&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;
	<p>
	&lt;div align="center"&gt;
		<font size="5">
		&lt;%
		String nome = request.getParameter("usuario"); 
		out.println(nome);
		%&gt;
		</font>
	&lt;/div&gt;
	&lt;div align="center"&gt;
		<font>
		
			<p>Seja Bem Vindo<p>
			a<p>Nossa Pagina Inicial<p>
			Digite sua Query<p>
			&lt;form action="SuaQuery.jsp" method="post"&gt;
				&lt;textarea name="query" rows="10" cols="50"&gt;
				&lt;/textarea&gt;
				<br>
				&lt;input type="submit" value="Enter com Query" &gt;&lt;input type="reset"&gt;
			&lt;/form&gt;
		</font>
	&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;

Essa ultima seria a principal onde enviaria a query e devolveria o resultado.
Mas não funciona…

Aplicação WEB funciona na forma de Requisição / Resposta

Deve ser feita uma requisição HTTP e assim retornar uma Resposta.

ex: tela
input 1
input 2

botao submit (aciona requisição http para uma Servlet ou JSP [ideal é que seja uma servlet. O ideal mesmo é que utilize um framework, mas deixe para depois])

Sua servlet pega os valores do input 1 e 2 e realiza a operacao.

realizada a operação, vc coloca o resultado como atributo da request (request.setAttribute(nome,valor)) e redireciona para a pagina de resposta.

A Pagina de resposta pega o resultado colocado na request e gera o html bonitinho para o usuário.

Entendi…
±… vou tentar e falo!!!

Mas uma coisa, se vc ver meu código…
o Main pede o usuario, senha e a Query.
Então faz os procedimentos, como devo proceder com WEB.
Quando mando a requisção, com um <form> por exemplo consigo pegar tranquilamente no Java
com (variavel) = request.getParameter(“variavel”) o que ainda não entendi é como pegar o resultado
e imprimir na WEB por ex. tem que ser uma textarea? Gostaria de imprimir o resultado do Select em uma
datagrid como adapto??
Obrigado.

Tudo bem Gilmar?

Usando jsp puro você terá que pegar a variavel resultando e formata-la em html. Se voce usar alguns frameworks (veja o finalzinho do 21 com o struts 2, ou o vraptor, gwt, jsf etc) você pode usar componentes prontos que voce da o objeto e ele iterage e monta um “componente” na tela.

Agora com o primeiro passo que ja deu (de visualizar a questao request/response) o segundo passo é mostar o resultado mesmo. Voce chegou a fazer os exs da apostila tambem? Acho que eles devem ajudar a visualizar pois eles passam por exemplos de form similares.

Abraco!

Boa Tarde.

Gostaria de agradecer a todos pela pronta ajuda. Quero falar que consegui concluir meu Projeto de forma satisfatoria sei que não organizei o código como se deve fazer, mas ele esta com a funcionalidade correta!

Mas uma vez Obrigado.

:wink: