Olá. Aproveitando os outros tópicos aqui já discutidos, estou implementando um login. Porém ta complicado.
Vou colocar os arquivos que ja implementei e minhas perguntas referentes a eles. Sou iniciante em java e principalmnete jsp.
arquivo index.jsp
<html>
<head><title>JSP Page</title></head>
<body>
<CENTER>
<h1>Projeto Votorantin</h1><BR><BR><BR><BR>
<form name="login" action="/LoginServlet" method="post">
Usuário: <input type="text" name="username"/>
<br/>
Senha: <input type="password" name="password"/>
<imput type="submit" value="Logar">
</form>
</CENTER>
</body>
</html>
arquivo LoginServlet.java
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LoginServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void destroy() {
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.close();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter( "username" );
String password = request.getParameter( "password" );
if ( login(username, password) ) {
request.getSession().setAttribute( "user", username );
request.getServletDispatcher( "/projetos.jsp" ).
forward( request, respose );
} else { // dados de login inválido
request.getServletDispatcher( "/index.jsp" ).
forward( request, respose );
}
}
public boolean login( String nome, String senha) {
try {
Class.forName("org.postgresql.Driver").newInstance(); // carrega o driver
} catch ( ClassNotFoundException e ) {
System.out.println( e.toString() );
} catch (InstantiationException e) {
System.out.println( e.toString() );
} catch (IllegalAccessException e) {
System.out.println( e.toString() );
}
Connection con = DriverManager.getConnection( "jdbc:postgresql://localhost","strelow","MinhaSenha" );
Statement stm = con.createStatement();
try {
Connection con = DriverManager.getConnection( "testebd" );
Statement stm = con.createStatement();
String sql = "SELECT nome_users, password_users FROM users " +
"WHERE nome_users = " + rn.devStr( nome ) +
" AND password_users = " + rn.devStr( senha ) ;
PreparedStatement stmt_at = con.prepareStatement(sql);
ResultSet res = stmt_at.executeQuery();
if ( res.next() ) // se resultSet possuir registros então usuário foi reconhecido
{
res.close();
stm.close();
con.close();
return true;
}
res.close();
stm.close();
con.close();
} catch ( SQLException e ) {
System.out.println( e.toString() );
} catch ( Exception e ) {
System.out.println( e.toString() );
}
return false;
}
public String getServletInfo() {
return "Short description";
}
}
arquivo projetos.jsp
<html>
<head><title>JSP Page</title></head>
<body>
<%
if ( session.getAttribute( "user" ) == null ) {
// o usuario nao esta logado
// redirecionar para login.jsp
}
%>
Escolha o Projeto !!!
</body>
</html>
Minhas dúvidas são a seguinte:
No arquivo LoginServlet eu editei o método doPost. Isso ta certo? É dessa maneira?
Tambem adicionei aquele mesmo servlet o método login, mas não sei se não deveria ter criado outro servlet…
Tipo, tudo o que se refere ao acesso ao banco de dados tem o seguinte erro:
C:\Arquivos de programas\Apache Software Foundation\Tomcat 5.5\webapps\ROOT\Votorantin\src\com\foo\LoginServlet.java:99: cannot find symbol
symbol : class Connection
location: class com.foo.LoginServlet
Connection con = DriverManager.getConnection( “jdbc:postgresql://localhost”,“strelow”,“minhaSenha” );
Outra coisa que ta com erro é o seguinte:
request.getServletDispatcher( "/projetos.jsp" ).
forward( request, respose );
erro:
C:\Arquivos de programas\Apache Software Foundation\Tomcat 5.5\webapps\ROOT\Votorantin\src\com\foo\LoginServlet.java:79: cannot find symbol
symbol : variable respose
location: class com.foo.LoginServlet
forward( request, respose );
Agradeço se puderem me dar um help. Valeu pessoal.
