Boa noite pessoal,
Sou novo tanto aqui no forum quanto em Java, estou encontrando certas dificuldades em implementar meu TCC, estou montando um portal sobre Lógica de Programação, onde o mesmo contém um BD p/cadastro, login e senha (usando Filters) e outras coisinhas mais.
Se possível gostaria que vcs dessem uma olhada no meu código e ver se o mesmo está ok. Estou grandes dúvidas em relação a classe Filtro, pois é atráves dessa classe que eu restrinjo o acesso as outras páginas do site, caso o usuário tente acessar diretamente pela url.
A estrutura do projeto está da seguinte maneira:
Nome do Projeto
WEB-INF: (contém as demais paginas do site (separadas por pastas) e a página logado.jsp (dentro do WEB-INF) e as libs.
Web-Content: contém a index.jsp (caso o usuário efetue o login corretamente ele deveria ser redirecionado para a página logado.jsp, conforme descrito acima.
Desde já agradeço!
package com.cadastro;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Cadastro extends HttpServlet {
private static final long serialVersionUID = 1L;
private String nome;
private String email;
private String login;
private String senha;
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
public Cadastro() {
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String nome = request.getParameter("nome");
String email = request.getParameter("email");
String login = request.getParameter("login");
String senha = request.getParameter("senha");
String senha2 = request.getParameter("senha2");
if (senha.equals(senha2)) {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(
"jdbc:mysql://localhost/e_learning", "root", "root");
stmt = con
.prepareStatement("insert into cadastro (nome,email,login,senha)values(?,?,?,?)");
stmt.setString(1, nome);
stmt.setString(2, email);
stmt.setString(3, login);
stmt.setString(4, senha);
stmt.execute();
stmt.close();
response.sendRedirect("index.jsp");
} catch (Exception e) {
out.print(e.getMessage());
}
}
}
package com.filtro;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import com.login.Login;
public class Filtro implements Filter {
String page = "index.jsp";
public void init(FilterConfig filterConfig) throws ServletException {
if (filterConfig.getInitParameter("page") != null) {
page = filterConfig.getInitParameter("page");
}
}
public void doFilter(ServletRequest req, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpSession session = request.getSession();
Login login = (Login) session.getAttribute("login");
RequestDispatcher dispatcher = null;
if (login == null) {
dispatcher = req.getRequestDispatcher("index.jsp");
} else {
// dispatcher = req.getRequestDispatcher(request.getRequestURI());
dispatcher = req.getRequestDispatcher(StringUtils.removeStart(
request.getRequestURI(), "WEB-INF/pages/logado.jsp"));
}
dispatcher.forward(req, response);
}
public void destroy() {
}
}
package com.login;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.faces.context.FacesContext;
import javax.servlet.ServletException;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
private String login;
private String senha;
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
public Login() {
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try {
String login = request.getParameter("login");
String senha = request.getParameter("senha");
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(
"jdbc:mysql://localhost/e_learning", "root", "root");
stmt = con
.prepareStatement("select login,senha from cadastro where login=? and senha=?");
stmt.setString(1, login);
stmt.setString(2, senha);
rs = stmt.executeQuery();
if (rs.next()) {
HttpSession session = (HttpSession) FacesContext
.getCurrentInstance().getExternalContext().getSession(
false);
session.setAttribute("login", login);
response.sendRedirect("pages/logado.jsp");
} else {
response.sendRedirect("index.jsp");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void logout() {
HttpSession session = null;
((ServletResponse) session).reset();
}
}
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>E_Learning</display-name>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>Cadastro</servlet-name>
<servlet-class>com.cadastro.Cadastro</servlet-class>
</servlet>
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.login.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Cadastro</servlet-name>
<url-pattern>/Cadastro</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>10</session-timeout>
</session-config>
<listener>
<listener-class>
org.apache.myfaces.webapp.StartupServletContextListener
</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>Filtro</filter-name>
<filter-class>com.filtro.Filtro</filter-class>
</filter>
<filter-mapping>
<filter-name>Filtro</filter-name>
<url-pattern>/faces/*</url-pattern>
</filter-mapping>
</web-app>