Escolar Documentos
Profissional Documentos
Cultura Documentos
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
Buscar
favorito(6)
marcarcomolido
tirardvidas
(1) (0)
JSP(JavaServerPages)ummecanismoqueauxiliaosdesenvolvedoresaimplementarempginasparainternetnoformatoHTMLouem
outrostipos,geradasdeformaautomaticamenteedinmica.NesseartigooambientededesenvolvimentoaserutilizadooNetbeans,pois
nele,almdeexistiroservidorparaaexecuodaaplicao,existemdriversespecficosparaaconectividadededadoscomo,porexemplo,
autilizaoPostgreSQL,queagilizamuitooenvioeatrocadeinformaesentreobancodedadoscriadoeaaplicaoweb.Oobjetivo
desseartigocriarumsistemadeautenticaobsiconoqualseroimplementadasduaspginas:umadeloginesenha(entrada)noestilo
padroeaoutrapginaprincipalcomaopodesairdosistema.
ParamanipularmosobancodedadossernecessriooSGBDmaisutilizadoparaoPostgreSQL,queopgAdmin.Ainstalaodo
mesmomuitosimples,porisso,partindoqueelejestejainstaladoemsuamquinaeaberto,serprecisocriarumnovobancodedados
comonomeAutentica.Paracriar,bastaclicarcomobotodireitoemDatabaseslocalizadonoObjectExploreredepoisemNewDatabase.
AparecerumajaneladeacordocomaFigura1.
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
1/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
Figura1.Telaparacriaodeumnovobancodedados.
BastacolocarnocampoNameAutenticaeclicaremOKquesercriado.
AgorasercriadoumatabelareferenteaUsuarioeemseguidaoscamposesuaspropriedades.
Paraisso,necessrioclicaremclimadobancodedadoscriadoeemseguidaclicarnoconeExecutearbitrarySQLqueries,localizado
abaixodabarrademenusecolocarocdigoparaacriaodatabelaeseuscampos,deacordocomaListagem1.
Listagem1.Comandoparaacriaodatabelausurio,seuscamposepropriedades.
CREATETABLEusuario
(
usu_codigointegerNOTNULL,
usu_nomecharactervarying(100)NOTNULL,
usu_logincharactervarying(6)NOTNULL,
usu_senhacharactervarying(6)NOTNULL,
usu_admbooleanNOTNULL,
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
2/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
CONSTRAINTusuario_pkeyPRIMARYKEY(usu_codigo),
CONSTRAINTusuario_usu_login_keyUNIQUE(usu_login)
)
WITH(
OIDS=FALSE
);
ALTERTABLEusuario
OWNERTOpostgres;
Paraconcluir,bastaclicarnobotoExecuteQuery(umasetaapontadaparaadireita),localizadoabaixodabarrademenus,ousepreferir,
aperteatecladeatalhoF5paraterminardecriaratabela.
Paraadicionaralgunsregistrosnatabela,coloqueoscomandosdescritosnaListagem2.
Listagem2.ComandosemSQLparainseroderegistros.
insertintousuario(usu_codigo,usu_nome,usu_login,usu_senha,usu_adm)values(1,'Administrador','admin','123456',true);
insertintousuario(usu_codigo,usu_nome,usu_login,usu_senha,usu_adm)values(2,'Convidado','guest','guest',false);
Figura2.ConfiguraodoNomedoProjeto
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
3/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
ColoquenocamponomecomodaoenocampolocalizaodoProjetocoloqueocaminhoD:\.NoesqueadedesmarcaraopoCriar
ClassePrincipal.
EmseguidabastaclicaremFinalizarqueoprojetodaoestarprontoparaserimplementado.
Apropostaagoracriartrspastas:sql,entidadeseao.
DentrodapastasqlsercriadaanovaclasseJavacomonomedeConexo.java.Dentrodapastaentidadessercriadaanovaclasse
JavacomonomedeUsuario.javaedentrodapastadaosercriadaumainterfacecomonomeDAO.javaeduasclassescomosnomes
DAOException.javaeUsuario.java.Paravermoscomoficartodaessacriao,olayoutdeveestarparecidocomaFigura3.
Figura3.LayoutdecomodevemestaraspastaseasclassesJavadentrodoprojetodao.
DentrodaclasseConexao.javaserimplementadoocdigodescritosnaListagem3.
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
4/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
Listagem3.ClasseresponsvelpelaconexocomobancodedadosAutentica.
packagesql;
importjava.sql.*;
importjava.util.logging.Level;
importjava.util.logging.Logger;
publicfinalclassConexao{
privatestaticfinalStringusuario="postgres";
privatestaticfinalStringsenha="postgres123";
privatestaticfinalStringurl="jdbc:postgresql://127.0.0.1:5432/Autentica";
publicstaticConnectionopen(){
try{
Class.forName("org.postgresql.Driver");
returnDriverManager.getConnection(url,usuario,senha);
}catch(SQLException|ClassNotFoundExceptionex){
Logger.getLogger(Conexao.class.getName()).log(Level.SEVERE,null,ex);
returnnull;
}
}
publicstaticvoidclose(ResultSetrs,Statementst,Connectionconn){
if(rs!=null){
try{
rs.close();
}catch(SQLExceptione){
}
}
if(st!=null){
try{
st.close();
}catch(SQLExceptione){
}
}
if(conn!=null){
try{
conn.close();
}catch(SQLExceptione){
}
}
}
publicstaticvoidclose(Statementst,Connectionconn){
close(null,st,conn);
}
publicstaticvoidclose(Connectionconn){
close(null,null,conn);
}
}
DentrodaclasseUsuario.javaserimplementadaoscdigosdescritonaListagem4.Essaclassetercomoobjetivoseromodeloda
aplicao,comaspropriedadesdoscampos,receberedefinirosdadosdeacordocomseutipo,encapsulandoosetambmcompararo
queestsalvocomosdadosinformadospelousurio.
Listagem4.ClasseModel
packageentidades;
importjava.io.Serializable;
importjava.util.Objects;
publicclassUsuario
implementsSerializable{
privateIntegercodigo;
privateStringnome;
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
5/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
privateStringlogin;
privateStringsenha;
privatebooleanadministrador;
publicUsuario(){
this(null,null,null,null,false);
}
publicUsuario(Integercodigo,Stringnome,Stringlogin,Stringsenha,booleanadministrador){
this.codigo=codigo;
this.nome=nome;
this.login=login;
this.senha=senha;
this.administrador=administrador;
}
publicIntegergetCodigo(){
returncodigo;
}
publicvoidsetCodigo(Integercodigo){
this.codigo=codigo;
}
publicStringgetNome(){
returnnome;
}
publicvoidsetNome(Stringnome){
this.nome=nome;
}
publicStringgetLogin(){
returnlogin;
}
publicvoidsetLogin(Stringlogin){
this.login=login;
}
publicStringgetSenha(){
returnsenha;
}
publicvoidsetSenha(Stringsenha){
this.senha=senha;
}
publicbooleanisAdministrador(){
returnadministrador;
}
publicvoidsetAdministrador(booleanadministrador){
this.administrador=administrador;
}
@Override
publicinthashCode(){
inthash=7;
hash=89*hash+Objects.hashCode(this.codigo);
returnhash;
}
@Override
publicbooleanequals(Objectobj){
if(obj==null){
returnfalse;
}
if(getClass()!=obj.getClass()){
returnfalse;
}
finalUsuarioother=(Usuario)obj;
if(!Objects.equals(this.codigo,other.codigo)){
returnfalse;
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
6/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
}
returntrue;
}
}
DentrodainterfaceDAO.javaserimplementadaoscdigosdescritosnaListagem5.
Listagem5.Interfaceresponsvelporcontermtodospararecuperarasinformaesdediversasmaneiras.
packagedao;
importjava.util.List;
publicinterfaceDAO<T>{
publicTgetSingle(Object...chave);
publicList<T>getList();
publicList<T>getList(inttop);
}
EdentrodaclasseDAOException.javaserimplementadaocdigodescritonaListagem6.
Listagem6.Classeresponsvelporlanarexceesduranteaaplicao,casohajaalgumimprevisto.
packagedao;
publicclassDAOExceptionextendsException{
publicDAOException(Throwablecause){
super(cause);
}
publicDAOException(Stringmessage,Throwablecause){
super(message,cause);
}
publicDAOException(Stringmessage){
super(message);
}
publicDAOException(){
super();
}
}
DentrodaclasseUsuarioDAO.javaserimplementadaoscdigosdescritonaListagem7.Essaclassepossuidiversosmtodosecadaum
responsvelporbuscaroregistrodeumaformadiferente.
Listagem7.ClasseUsusarioDAO
packagedao;
importentidades.Usuario;
importsql.Conexao;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.ArrayList;
importjava.util.List;
publicclassUsuarioDAO
implementsDAO<Usuario>{
publicUsuariogetSingle(Stringlogin){
Connectionconn=Conexao.open();
PreparedStatementps=null;
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
7/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
ResultSetrs=null;
try{
ps=conn.prepareStatement("selectusu_codigo,usu_nome,usu_login,usu_senha,usu_admfromusuariowhereusu_login=?");
ps.setString(1,login);
rs=ps.executeQuery();
if(rs.next()){
returnnewUsuario(rs.getInt("usu_codigo"),rs.getString("usu_nome"),rs.getString("usu_login"),rs.getString("usu_senha"),rs.getB
}
}catch(SQLExceptionex){
}finally{
Conexao.close(rs,ps,conn);
}
returnnull;
}
@Override
publicUsuariogetSingle(Object...chave){
if(chave[0]instanceofInteger){
Connectionconn=Conexao.open();
PreparedStatementps=null;
ResultSetrs=null;
try{
ps=conn.prepareStatement("selectusu_codigo,usu_nome,usu_login,usu_senha,usu_admfromusuariowhereusu_codigo=?");
ps.setInt(1,(Integer)chave[0]);
rs=ps.executeQuery();
if(rs.next()){
returnnewUsuario(rs.getInt("usu_codigo"),rs.getString("usu_nome"),rs.getString("usu_login"),rs.getString("usu_senha"),rs.
}
}catch(SQLExceptionex){
}finally{
Conexao.close(rs,ps,conn);
}
}
returnnull;
}
@Override
publicList<Usuario>getList(){
returngetList(0);
}
@Override
publicList<Usuario>getList(inttop){
if(top<0){
returnnull;
}
List<Usuario>lista=null;
Connectionconn=Conexao.open();
Statementps=null;
ResultSetrs=null;
try{
ps=conn.createStatement();
rs=ps.executeQuery("select"+(top>0?"top"+top:"")+"usu_codigo,usu_nome,usu_login,usu_senha,usu_admfromusuario");
lista=newArrayList<>();
while(rs.next()){
lista.add(newUsuario(rs.getInt("usu_codigo"),rs.getString("usu_nome"),rs.getString("usu_login"),rs.getString("usu_senha"),rs.g
}
}catch(SQLExceptionex){
}finally{
Conexao.close(rs,ps,conn);
}
returnlista;
}
}
8/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
OresultadodaconfiguraodoservidorseromesmoqueoapresentadopelaFigura4.
Figura4.Telaparaescolhadoservidorqueserexecutadooprojeto.
Porpadro,serselecionadooApacheTomcat,maspoderiaestarselecionadooGlassFishServer.AversodoJavaEEqueest
selecionadaaltimadisponvelnositedatecnologia.OcaminhodoContextopodedeixardojeitoquefoidefinidoautomaticamente.Aofinal
cliqueemFinalizarparaqueoesqueletodoprojetosejacriado.
Implementao do Projeto
Antesdecriarmosaspastasdeorganizaoparaoprojeto,adicionaremosoprojetoDAOdesenvolvidoanteriormente.Paraisso,basta
clicarcomobotodireitoemBibliotecaedepoisem:AdicionarProjeto.SelecioneoprojetocriadoedepoiscliqueemAdicionarArquivos
JARdeProjetoparafinalizaraimportao.
Concluindo,necessrioimportarodriverJDBCprontoeprprioparaoPostgreSQL,comoobjetivodeconectividadecomobancode
dados.Comisso,cliquecomobotodireitoemBibliotecaeselecioneaopoDriverJDBCdoPostgreSQL.CliqueemFinalizarqueodriver
seradicionadoautomaticamente.
Agoradefiniremosaspastasparamelhororganizaodoprojeto,comafinalidadedenohaverpercadecaminhos,arquivosoudetrocas
deinformaes.
Ento,dentrodapastaPacotesdeCdigosfonteserpropostocolocarquatroPacotesJava:filtro,logado,servlet,til.
NopacotefiltrointroduzaumnovoFiltro,clicandocomobotodireitoemcimadopacote,vparaaopo:Outros,selecioneacategoria:
WebeoTipodeArquivo:Filtro.CliqueemPrximoecoloqueonomeparaonovofiltrodeUsuarioLogado.ApsclicaremPrximo,
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
9/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
aparecerumajaneladeconfiguraodeimplantaodofiltro:cliqueemnovoedeixeconfiguradodomesmojeitoqueseencontraaFigura
5.
Figura5.ConfiguraodeImplantaodoFiltro.
Apsisso,cliqueemOKedepoisemFinalizar.
JnofiltrocriadoUsuarioLogado.java,sobrescrevaoseucontedopelocdigoqueseencontranaListagem8.
Listagem8.FiltroUsuarioLogado
packagefiltro;
importentidades.Usuario;
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.annotation.WebFilter;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
@WebFilter(filterName="UsuarioLogado",urlPatterns={"/logado/*"})
publicclassUsuarioLogadoimplementsFilter{
privateStringcontextPath;
publicUsuarioLogado(){
}
@Override
publicvoiddoFilter(ServletRequestrequest,
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
10/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
ServletResponseresponse,
FilterChainchain)
throwsIOException,ServletException{
HttpServletResponseres=(HttpServletResponse)response;
HttpServletRequestreq=(HttpServletRequest)request;
HttpSessionsession=req.getSession();
Usuariou=(Usuario)session.getAttribute("usuarioLogado");
if(u==null){
session.invalidate();
res.sendRedirect(contextPath+"/index.jsp");
}else{
res.setHeader("Cachecontrol","nocache,nostore");
res.setHeader("Pragma","nocache");
res.setHeader("Expires","1");
chain.doFilter(request,response);
}
}
@Override
publicvoiddestroy(){
}
@Override
publicvoidinit(FilterConfigfilterConfig){
this.contextPath=filterConfig.getServletContext().getContextPath();
}
Essefiltroresponsvelporcontrolartodasasaesduranteaautenticaodosistema,tornandoasrequisieseoacessoparaas
pginaswebmaisrefinada.
DentrodopacotelogadosercriadaumanovaclasseJavacomonomedeMenu.javaeteromesmocdigoqueomesmoencontradona
Listagem9.
Listagem9.ClasseMenu
packagelogado;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.RequestDispatcher;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
@WebServlet(name="Menu",urlPatterns={"/logado/menu.jsp"})
publicclassMenuextendsHttpServlet{
protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
RequestDispatcherrd=request.getRequestDispatcher(
"/WEBINF/view/logado/menu.jsp");
rd.forward(request,response);
}
@Override
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
processRequest(request,response);
}
@Override
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
processRequest(request,response);
}
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
11/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
@Override
publicStringgetServletInfo(){
return"Shortdescription";
}
Essecdigoresponsvelpordefinirosmodosderequisiesparaapginaprincipaleredirecionamentoscasoaautenticaoesteja
concludaeousurioestejalogadonosistema.
DentrodopacoteservletsercriadoumanovaclassechamadaIndex.javaeserimplementadacomoscdigosdescritosnaListagem10.
Listagem10.Classeindex
packageservlet;
importdao.UsuarioDAO;
importentidades.Usuario;
importutil.Erro;
importjava.io.IOException;
importjavax.servlet.RequestDispatcher;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
@WebServlet(name="Index",urlPatterns={"/index.jsp","/logout.jsp"})
publicclassIndexextendsHttpServlet{
protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
Erroerros=newErro();
if(request.getParameter("bOK")!=null){
Stringlogin=request.getParameter("login");
Stringsenha=request.getParameter("senha");
if(login==null||login.isEmpty()){
erros.add("Loginnoinformado!");
}
if(senha==null||senha.isEmpty()){
erros.add("Senhanoinformada!");
}
if(!erros.isExisteErros()){
UsuarioDAOdao=newUsuarioDAO();
Usuariouser=dao.getSingle(login);
if(user!=null){
if(user.getSenha().equalsIgnoreCase(senha)){
request.getSession().setAttribute("usuarioLogado",user);
response.sendRedirect("logado/menu.jsp");
return;
}else{
erros.add("Senhainvlida!");
}
}else{
erros.add("Usurionoencontrado!");
}
}
}
request.getSession().invalidate();
request.setAttribute("mensagens",erros);
StringURL="/WEBINF/view/index.jsp";
RequestDispatcherrd=request.getRequestDispatcher(URL);
rd.forward(request,response);
}
@Override
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
12/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
throwsServletException,IOException{
processRequest(request,response);
}
@Override
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
processRequest(request,response);
}
@Override
publicStringgetServletInfo(){
return"Shortdescription";
}
Essaclasseresponsvelportrataroenvioerecebimentodoredirecionamentodaspginasesuasdeclaraes,sendoarmazenadasno
servidorparaquehajaoprocessamentoeenfimvalidaodosdadosqueousurioinformou,fazendootratamentodeerroseadicionando
paraapropriedadedeerrosinstanciadacasoobtivererronaautenticao.
Eporfim,nopacoteutilsercriadaaclasseErro.javaeserimplementadaoscdigosdescritosnaListagem11.
Listagem11.ClasseErro
packageutil;
importjava.io.Serializable;
importjava.util.ArrayList;
importjava.util.List;
publicfinalclassErro
implementsSerializable{
privatefinalList<String>erros;
publicErro(){
erros=newArrayList<>();
}
publicErro(Stringmensagem){
erros=newArrayList<>();
erros.add(mensagem);
}
publicvoidadd(Stringmensagem){
erros.add(mensagem);
}
publicbooleanisExisteErros(){
return!erros.isEmpty();
}
publicList<String>getErros(){
returnerros;
}
}
Agoraapropostaapagaroarquivoindex.htmlquefoicriadoautomaticamente(porpadro)localizadodentrodapastaPginasWebe
criarumanovapastacomonomeviewparadentrodapastaWEBINF.Dentrodessapastaviewsercriadaapginaindex,squeno
formato.jsp.Almdisso,crieoutrapastacomonomelogadoedentrodessacrieumarquivo:.jspcomonomedeMenu.Paraefeitosde
design,dentrodapastaPginasWebcrieumanovapastachamadacssedentrocrieumarquivoCSS.Paraesseltimopasso,cliquecom
obotodireitoemcimadapastacriada:vemNovoOutrosenaparteCategoriasselecioneHTML5.Logoaps,emTiposdeArquivos,
selecioneaopoFolhadeEstiloemCascataedefinaonomedelayout.AoclicaremFinalizar,aestruturadoprojetowebdeveficarda
mesmamaneiraqueademonstradaaFigura6.
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
13/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
14/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
Figura6.HierarquiadoprojetoWeb.
Vamosagorapreencheroarquivomenu.jspcomocdigodescritonaListagem12.EssecdigoHTMLtagsemJSPresponsvel
responsvelporbuscaronomedousuriologado(autenticado)paraapginaprincipal.Elecontmtambmolinkparaologoutdosistema.
Listagem12.Menu.jsp
<%@pagecontentType="text/html"pageEncoding="UTF8"%>
<!DOCTYPEhtml>
<html>
<head>
<metahttpequiv="ContentType"content="text/html;charset=UTF8">
<title>MenudoSistema</title>
</head>
<body>
<h1>MenudoSistema</h1>
<p>Ol${sessionScope.usuarioLogado.nome}</p>
<ul>
<li>
<ahref="${pageContext.request.contextPath}/logout.jsp">Sair</a>
</li>
</ul>
</body>
</html>
Dentrodoarquivoindex.jspcoloqueoscdigosdescritosnaListagem13.
Listagem13.Index.jsp
<%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%>
<%@pagecontentType="text/html"pageEncoding="UTF8"%>
<!DOCTYPEhtml>
<html>
<head>
<metahttpequiv="ContentType"content="text/html;charset=UTF8">
<title>AutenticaodeUsurio</title>
<linkhref="${pageContext.request.contextPath}/css/layout.css"rel="stylesheet"type="text/css"/>
</head>
<body>
<h1>AutenticaodeUsurio</h1>
<c:iftest="${mensagens.existeErros}">
<divid="erro">
<ul>
<c:forEachvar="erro"items="${mensagens.erros}">
<li>${erro}</li>
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
15/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
</c:forEach>
</ul>
</div>
</c:if>
<formmethod="post"action="index.jsp">
<table>
<tr>
<th>Login:</th>
<td><inputtype="text"name="login"
value="${param.login}"/></td>
</tr>
<tr>
<th>Senha:</th>
<td><inputtype="password"name="senha"/></td>
</tr>
<tr>
<tdcolspan="2">
<inputtype="submit"name="bOK"value="Entrar"/>
</td>
</tr>
</table>
</form>
</body>
</html>
EssecdigoHTMLcomJSPresponsvelporexibiraousuriooscamposparainserodelogin,senhaebotoparaautenticao.Casoo
usurioinformedadosincorretosounoinforme,emitidoumamensagemnocantosuperiordizendoqueexistemerros.
Eparafinalizar,coloquedentrodoarquivolayout.cssocdigodescritonaListagem14.
Listagem14.Layout.css
#erro{
width:80%;
margin:0auto;
border:1pxsolidred;
backgroundcolor:beige;
}
Ocdigoresponsvelpordeixaraaparnciadamensagemmaisapresentvelaousurio.
Apsterfinalizado,bastasalvaroprojetoeexecutaromesmoapertandoF6.
Oresultadoserumformulriosimplesdeautenticao,comomostraaFigura7(noMozillaFirefox).
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
16/17
26/10/2016
JavaServerPages:AutenticaodelogincomJSPePostgreSQL
Figura7.Telainicialdosistemasendoexecutado.
Paraautenticar,bastacolocarosdadosqueforamcadastradosnatabelaanteriormenteedepoiscliqueemEntrar.
http://www.devmedia.com.br/javaserverpagesautenticacaodelogincomjspepostgresql/31849
17/17