Blz.
Estou com um problema, estou tentando fazer uma tela de login(usando struts no jbuilder8) mas está dandos erro.
Alguém tem algum exemplo? ou se for o caso eu posso mandar o que estou fazendo para alguém dá uma olhada?.
Oi
bcno, olha só, se teu exemplo não for muito grande, tu pode postar aí que a gente da uma olhada…
T+
Opa.
Espero poder receber alguma ajuda.
O login.jsp
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html>
<head><title>Crabzy::Login</title></head>
<body>
<html:errors/>
<html:form action="/efetuarConsultaLogin" method="POST">
<TABLE cellSpacing="0" cellPadding="0" width="88" border="1">
<TR>
<TD>Login</TD>
</TR>
<TR>
<TD><html:text property="usuStLogin"/></TD>
</TR>
<TR>
<TD>Senha</TD>
</TR>
<TR>
<TD><html:text property="usuStSenha"/></TD>
</TR>
<TR>
<TD><html:submit>Ok</html:submit></TD>
</TR>
</TABLE>
</html:form>
</body>
</html>
O LoginForm.java
package crabzy.form;
import org.apache.struts.action.*;
import javax.servlet.http.*;
public class LoginForm extends ActionForm {
//Variáveis de instância
private String usuStLogin;
private String usuStSenha;
//Métodos getters e
public void setUsuStLogin(String usuStLogin) {
this.usuStLogin = usuStLogin;
}
public String getUsuStLogin() {
return usuStLogin;
}
public void setUsuStSenha(String usuStSenha) {
this.usuStSenha = usuStSenha;
}
public String getUsuStSenha() {
return usuStSenha;
}
//Método de validação
public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
return null;
}
//Método para limpar os campos do formulário
public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
usuStLogin = null;
usuStSenha = null;
}
}
O LoginAction.java
package crabzy.action;
import org.apache.struts.action.*;
import javax.servlet.http.*;
import java.sql.*;
import crabzy.form.LoginForm;
public class LoginAction extends Action {
//Método que processa a requisição HTTP especificada e cria a resposta HTTP
//correspondente (ou encaminha para um outro componente que a ira criar)
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
//Declarações
HttpSession session = request.getSession();
ActionErrors erros = new ActionErrors();
Connection con = null;
Statement st = null;
ResultSet rs = null;
LoginForm loginForm = (LoginForm) form;
//Efetuar as operações do mapeamento '/consultaUsuarioEfetuarConsulta'
if ("/efetuarConsultaLogin".equals(mapping.getPath())) {
try {
//Verifica se o usuário existe
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:Reserva");
st = con.createStatement();
StringBuffer sql = new StringBuffer();
sql.append("SELECT * FROM Usu_Usuario WHERE usu_st_login= '");
sql.append(loginForm.getUsuStLogin());
sql.append("' and usu_st_senha = '");
sql.append(loginForm.getUsuStSenha());
sql.append("'");
rs = st.executeQuery(sql.toString());
if (rs.next()) {
session.setAttribute("usuario", rs.getString("usu_nr_id"));
}
}
catch (ClassNotFoundException cnfe) {
erros.add(ActionErrors.GLOBAL_ERROR, new ActionError("validacao.erro", cnfe.getMessage()));
}
catch (SQLException sqle) {
erros.add(ActionErrors.GLOBAL_ERROR, new ActionError("validacao.erro", sqle.getMessage()));
}
}
//Se encontrar erros, redireciona para o formulário de entrada
if (!erros.isEmpty()) {
saveErrors(request, erros);
return (mapping.getInputForward());
}
// Eliminando o form bean obsoleto
if (mapping.getAttribute() != null) {
if ("request".equals(mapping.getScope())) {
request.removeAttribute(mapping.getAttribute());
}
else {
session.removeAttribute(mapping.getAttribute());
}
}
//Redirecionando para sucesso
return (mapping.findForward("sucesso"));
}
}
O struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
<struts-config>
<form-beans>
<form-bean name="loginForm" type="crabzy.form.LoginForm" />
</form-beans>
<action-mappings>
<action name="loginForm" type="crabzy.action.LoginAction" validate="true" input="/login.jsp" scope="request" path="/efetuarConsultaLogin">
<forward name="sucesso" path="principal.jsp" />
</action>
</action-mappings>
</struts-config>
[color=“red”]Editado para conter o BBCode CODE - jeveaux[/color]
Oi
bcno… Nao parece ter problemas cara…
Posta aí o erro que está dando tb…
T+
César.
Em primeiro lugar, muito obrigado pela atenção!
Mas vamos lá.
O primeiro erro é.
javax.servlet.ServletException: Error instantiating servlet class org.apache.struts.action.ActionServlet
O segundo erro é.
org.apache.jasper.JasperException: Cannot find ActionMappings or ActionFormBeans collection
org.apache.jasper.JasperException: Cannot find ActionMappings or ActionFormBeans collection
Eu tive um erro assim cara!! no meu arquivo struts-config.xml, tava faltando essa liha abaixo. eu coloquei ela funcionou.
Aproveitando o exemplo do jeveaux…
Em vez de colocar código SQL para checar a existencia do usuário no banco, talvez seja melhor por o Tomcat para fazer isso. Como? Criando um Realm. Assim o LoginAction só é chamado quando o Tomcat valida a existência do usuario no banco.