Olá pessoal, estou criando este tópico, pq coseguindo resolver meu problema.
O que quero saber é simples pra muitos de vcs.Eu nunca programei pra esse fim, talvez por isso eu não esteja sabendo o que fazer.
Não estou utilizando nenhum framework.Estou fazendo na forma tradicional, pois é um projeto em que tenho que “construir” a aplicação [color=red]sem a utilização de recursos como esse[/color].
Vamos ao problema:
Contrui um sistema web que tem o seguinte:
1- página de login;
2- após fazer a validação do login, tenho 4 jsps, uma pra cadastros, uma pra inserções, uma pra atualizações de dados e uma pra logoff.
Eu segui alguns exemplos que colhi pela internet, mas não obtive sucesso em redirecionar da página restrita para as demais.
Dentro da aplicação tem uma pasta chamada “administrator” que guarda as páginas com as funções que mencionei acima, páginas que desejo que só possam ser acessadas se o usuário efetue Login.
Vejam o código que fiz:
Login.jsp
Código:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>Login Page for Examples</title>
<body bgcolor="white">
<form method="POST" action="valida-login" >
<table border="0" cellspacing="5">
<tr>
<th align="right">Usuário: </th>
<td align="left"><input type="text" name="user"></td>
</tr>
<tr>
<th align="right">Senha: </th>
<td align="left"><input type="password" name="password"></td>
</tr>
<%
String[] erros = {"Usuario ou senha invalidos!", "Voce esta logado!"};
String erro = request.getParameter("erro");
if(erro != null)
{
%>
<tr>
<td><%= erros[Integer.parseInt(erro) - 1] %></td>
</tr>
<% } %>
<tr>
<td align="right"><input type="submit" value="Entrar"></td>
<td align="left"><input type="reset" value="Limpar"></td>
</tr>
</table>
</form>
</body>
</html>
Erro.jsp
Código:
<html>
<head>
<title>Pagina de Erro</title>
</head>
<body bgcolor="white">
Usuario ou senha inválidos!!!<a href= "login.jsp">Tente outra vez</a>.
</body>
</html>
Servlet ValidaLogin
Código:
package com.cgi.JavaBeans;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ValidaLogin extends HttpServlet
{
/**
*
*/
private static final long serialVersionUID = 1L;
private String userTeste = "zoom";
private String passwordTeste = "123";
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
PrintWriter out = response.getWriter();
Usuarios usuario = new Usuarios();
out.println("<html>");
isLogado(usuario, request, response);
out.println("</html>");
}
public HttpServletResponse isLogado(Usuarios usuario, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
String user = request.getParameter("user");
String password = request.getParameter("password");
usuario.setUser(user);
usuario.setPassword(password);
if((!usuario.getUser().equals(userTeste)) || (!usuario.getPassword().equals(passwordTeste)))
{
request.getSession().setAttribute("msg", "Login ou senha incorretos!");
RequestDispatcher rd = request.getRequestDispatcher("error.jsp");
rd.forward(request, response);
return response;
}
else
{
request.getSession().setAttribute("usuario", usuario);
RequestDispatcher rd = request.getRequestDispatcher("administrator/index.jsp");
rd.forward(request, response);
return response;
}
}
}
Filtro de Segurança
Código:
package com.cgi.JavaBeans;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class FiltroSeguranca implements Filter
{
public void destroy()
{
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
// TODO Auto-generated method stub
HttpSession session = ((HttpServletRequest) request).getSession();
Usuarios usuario = (Usuarios) session.getAttribute("user");
if(usuario == null)
{
session.setAttribute("msg", "Olá, " + usuario + "!Voce esta logado!");
((HttpServletResponse) response).sendRedirect("../index.jsp");
}
else
{
chain.doFilter(request, response);
}
}
public void init(FilterConfig arg0) throws ServletException
{
// TODO Auto-generated method stub
}
}
Web.xml
Código:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 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" version="2.4">
<display-name>
Aplicação Web Simples com JSP
</display-name>
<filter>
<filter-name>Filtro de Segurança de Login</filter-name>
<filter-class>com.cgi.JavaBeans.FiltroSeguranca</filter-class>
</filter>
<filter-mapping>
<filter-name>Filtro de Segurança de Login</filter-name>
<url-pattern>/administrator/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>validar</servlet-name>
<servlet-class>com.cgi.JavaBeans.ValidaLogin</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>validar</servlet-name>
<url-pattern>/valida-login</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>home.htm</welcome-file>
<welcome-file>home.html</welcome-file>
<welcome-file>home.jsp</welcome-file>
</welcome-file-list>
</web-app>
Nota:
- O sistema faz logon e logoff normalmente, mas só tenho acesso a nehuma das páginas dentro de administretor(diretorio restrito). Não é possível acessar nenhuma outra nem por URL.
Pergunta:
-O que tenho que fazer pra acessar as outras páginas?
[color=red]Lembrando que não posso utilizar frameworks!!! [/color]
Agradeço a todos pela atenção.
Abraço.