Tenho um trabalho que precisa criptografar a senha cadastrada, o meu aplicativo desktop está fazendo a encriptação mas o aplicativo web está dando esse erro depois que clica em enviar:
Jul 30, 2013 6:13:47 PM javax.faces.component.UIViewRoot$ViewMap put
WARNING: Definindo valor de atributo não serializável em ViewMap (chave: funcionarioController, classe do valor: controller.FuncionarioController).
Jul 30, 2013 6:14:03 PM com.sun.faces.lifecycle.InvokeApplicationPhase execute
WARNING: /index.xhtml @37,191 actionListener="#{funcionarioController.inserir()}": java.lang.NullPointerException
javax.el.ELException: /index.xhtml @37,191 actionListener="#{funcionarioController.inserir()}": java.lang.NullPointerException
Jul 30, 2013 6:14:03 PM com.sun.faces.context.ExceptionHandlerImpl log
1100: JSF1073: javax.faces.FacesException obtido durante o processamento de INVOKE_APPLICATION 5: UIComponent-ClientId=, Message=/index.xhtml @37,191 actionListener="#{funcionarioController.inserir()}": java.lang.NullPointerException
Jul 30, 2013 6:14:03 PM com.sun.faces.context.ExceptionHandlerImpl log
1100: /index.xhtml @37,191 actionListener="#{funcionarioController.inserir()}": java.lang.NullPointerException
javax.faces.FacesException: /index.xhtml @37,191 actionListener="#{funcionarioController.inserir()}": java.lang.NullPointerException
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:147)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:818)
at javax.faces.component.UICommand.broadcast(UICommand.java:300)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NullPointerException
at controller.FuncionarioController.inserir(FuncionarioController.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
... 29 more
O formulário fiz na index mesmo
[code]<?xml version='1.0' encoding='UTF-8' ?>
Trabalho <h:outputLabel value="Tel.: "/>
<h:inputText size="20" id="telFunc" value="#{funcionarioController.funcionario.telFunc}"
required="true" requiredMessage="Digite seu telefone!"/>
<h:message for="telFunc"/>
<h:outputLabel value="Cargo: "/>
<h:inputText size="20" id="profissaoFunc" value="#{funcionarioController.funcionario.profissaoFunc}"
required="true" requiredMessage="Digite seu cargo!"/>
<h:message for="profissaoFunc"/>
<h:outputLabel value="Login: "/>
<h:inputText id="login" value="#{funcionarioController.funcionario.login}" required="true" requiredMessage="Digite seu login!"/>
<h:message for="login"/>
<h:outputLabel value="Senha: "/>
<h:inputSecret id="senha" value="#{funcionarioController.funcionario.senha}" required="true" requiredMessage="Digite a senha!"/>
<h:message for="senha"/>
</h:panelGrid>
<h:commandButton title="Salvar" style="text-align:center" value="Enviar" actionListener="#{funcionarioController.inserir()}" action="#{funcionarioController.showMessage()}"/>
</h:form>
</h:body>
<p:dialog header="Cadastrado com sucesso!" modal="true" closable="true"
widgetVar="confirmation" width="170">
</p:dialog>
<p:dialog header=“Não Foi Cadastrado!” modal=“true” closable="true"
widgetVar=“falha” width=“170”>
</p:dialog>
[/code]
FuncionarioController
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package controller;
import bean.Funcionario;
import dao.FuncionarioDao;
import exception.DaoException;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import org.primefaces.context.RequestContext;
@ManagedBean(name=“funcionarioController”)
@SessionScoped
@ViewScoped
public class FuncionarioController {
private FuncionarioDao funcionarioDao;
private Funcionario funcionario;
// private DataModel clientes;
public void novo(){
}
public FuncionarioController(){
funcionario = new Funcionario();
}
public String inserir() throws DaoException{
String resultado = "falha";
funcionarioDao = new FuncionarioDao();
boolean retorno = funcionarioDao.inserirFuncionarios(funcionario);
if(retorno){
resultado = "cadastroCliente";
RequestContext context = RequestContext.getCurrentInstance();
//execute javascript
context.execute("confirmation.show();");
}else{
resultado = "cadastroCliente";
RequestContext context = RequestContext.getCurrentInstance();
context.execute("falha.show();");
}
return resultado;
}
public void showMessage() {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cadastro", "Salvo com sucesso!");
FacesContext contexto = FacesContext.getCurrentInstance();
contexto.addMessage(null, message);
}
public Funcionario getFuncionario() {
return funcionario;
}
public void setFuncionario(Funcionario funcionario) {
this.funcionario = funcionario;
}
}
[/code]
Funcionario bean
[code]package bean;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
@ManagedBean(name=“FuncionarioBean”)
@SessionScoped
public class Funcionario {
private Integer numFunc;
private String nomeFunc;
private String telFunc;
private String profissaoFunc;
private String login;
private String senha;
//Métodos
public Integer getNumFunc() {
return numFunc;
}
public void setNumFunc(Integer numFunc) {
this.numFunc = numFunc;
}
public String getNomeFunc() {
return nomeFunc;
}
public void setNomeFunc(String nomeFunc) {
this.nomeFunc = nomeFunc;
}
public String getTelFunc() {
return telFunc;
}
public void setTelFunc(String telFunc) {
this.telFunc = telFunc;
}
public String getProfissaoFunc() {
return profissaoFunc;
}
public void setProfissaoFunc(String profissaoFunc) {
this.profissaoFunc = profissaoFunc;
}
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;
}
}[/code]
FuncionarioDao
[code]package dao;
import java.security.NoSuchAlgorithmException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import util.Criptografia;
import exception.DaoException;
import util.DbUtil;
import bean.Funcionario;
public class FuncionarioDao {
private static final String EXCLUIR_FUNCIONARIO =
“delete from tbfuncionario where numFunc = ?”;
private static final String INSERIR_FUNCIONARIO =
"insert into tbfuncionario(nomeFunc, telFunc, profissaoFunc, "+
"login_funcionario, senha_funcionario) " +
"values (?,?,?,?,?)";
private static final String ATUALIZAR_FUNCIONARIO =
"update tbfuncionario set " +
"nomeFunc = ?, " +
"telFunc = ?, " +
"profissaoFunc = ?, " +
"login_funcionario = ?, " +
"senha_funcionario = ? " +
"where numFunc = ? ";
private static final String VALIDAR_LOGIN_SENHA =
"select "+
"count(numFunc) as total " +
"from "+
"tbfuncionario f "+
"where "+
"f.login_funcionario = ? and " +
"f.senha_funcionario = ?";
private static final String CONSULTA_FUNCIONARIOS =
"select * from tbfuncionario order by numFunc";
private static final String CONSULTA_FUNCIONARIO_ID =
"select * from tbfuncionario where numFunc = ?";
private static final String CONSULTA_FUNCIONARIOS_NOME =
"select * from tbfuncionario where nomeFunc like ? order by nomeFunc";
public boolean getAutenticacao(String nome, String senha) throws DaoException {
Connection conn = DbUtil.getConnection();
PreparedStatement statement = null;
ResultSet result = null;
int numReg = 0;
boolean autenticado = false;
try {
statement = conn.prepareStatement(VALIDAR_LOGIN_SENHA);
statement.setString(1, nome);
// statement.setString(2, senha); //habilitar essa linha quando for acessar o sistema pela 1ª vez e desabilitar o try e catch abaixo
try {
statement.setString(2, Criptografia.cripta(senha)); //Encripta a senha para poder comparar com a senha salva no BD
} catch (NoSuchAlgorithmException e) {
}
result = statement.executeQuery();
if (result.next()) {
numReg = result.getInt("total");
}
} catch (SQLException e) {
throw new DaoException(e);
} finally {
DbUtil.close(conn, statement, result);
}
if(numReg != 0){
return autenticado = true;
}else{
return autenticado;
}
}
public List<Funcionario> consultarFuncionarios() throws DaoException{
Connection conn = DbUtil.getConnection();
PreparedStatement statement = null;
ResultSet result = null;
List<Funcionario> listaFunc = new ArrayList<Funcionario>();
try {
statement = conn.prepareStatement(CONSULTA_FUNCIONARIOS);
result = statement.executeQuery();
while (result.next()) {
Funcionario objFunc = new Funcionario();
objFunc.setNumFunc(result.getInt(1));
objFunc.setNomeFunc(result.getString(2));
objFunc.setTelFunc(result.getString(3));
objFunc.setProfissaoFunc(result.getString(4));
objFunc.setLogin(result.getString(5));
objFunc.setSenha(result.getString(6));
listaFunc.add(objFunc);
}
} catch (SQLException e) {
throw new DaoException(e);
} finally {
DbUtil.close(conn, statement, result);
}
return listaFunc;
}
public Funcionario consultarFuncionarioID(int idFunc) throws DaoException{
Funcionario objFunc = new Funcionario();
Connection conn = DbUtil.getConnection();
PreparedStatement statement = null;
ResultSet result = null;
try {
statement = conn.prepareStatement(CONSULTA_FUNCIONARIO_ID);
statement.setInt(1, idFunc);
result = statement.executeQuery();
while (result.next()) {
objFunc.setNumFunc(result.getInt(1));
objFunc.setNomeFunc(result.getString(2));
objFunc.setTelFunc(result.getString(3));
objFunc.setProfissaoFunc(result.getString(4));
objFunc.setLogin(result.getString(5));
objFunc.setSenha(result.getString(6));
}
} catch (SQLException e) {
throw new DaoException(e);
} finally {
DbUtil.close(conn, statement, result);
}
return objFunc;
}
public List<Funcionario> consultarFuncionarios(String nome) throws DaoException{
Connection conn = DbUtil.getConnection();
PreparedStatement statement = null;
ResultSet result = null;
List<Funcionario> listaFunc = new ArrayList<Funcionario>();
try {
if(nome.equals("")){
statement = conn.prepareStatement(CONSULTA_FUNCIONARIOS);
}else{
statement = conn.prepareStatement(CONSULTA_FUNCIONARIOS_NOME);
statement.setString(1, "%"+nome+"%");
}
result = statement.executeQuery();
while (result.next()) {
Funcionario objFunc = new Funcionario();
objFunc.setNumFunc(result.getInt(1));
objFunc.setNomeFunc(result.getString(2));
objFunc.setTelFunc(result.getString(3));
objFunc.setProfissaoFunc(result.getString(4));
objFunc.setLogin(result.getString(5));
objFunc.setSenha(result.getString(6));
listaFunc.add(objFunc);
}
} catch (SQLException e) {
throw new DaoException(e);
} finally {
DbUtil.close(conn, statement, result);
}
return listaFunc;
}
public boolean inserirFuncionarios(Funcionario obj) throws DaoException{
Connection conn = DbUtil.getConnection();
PreparedStatement statement = null;
ResultSet result = null;
try {
statement = conn.prepareStatement(INSERIR_FUNCIONARIO);
statement.setString(1, obj.getNomeFunc());
statement.setString(2, obj.getTelFunc());
statement.setString(3, obj.getProfissaoFunc());
statement.setString(4, obj.getLogin());
try {
statement.setString(5, Criptografia.cripta(obj.getSenha())); //criptografando a senha
} catch (NoSuchAlgorithmException e) {
}
} catch (SQLException e) {
throw new DaoException(e);
} finally {
DbUtil.close(conn, statement, result);
}
return true;
}
public boolean atualizarFuncionario(Funcionario objFunc) throws DaoException{
Connection conn = DbUtil.getConnection();
PreparedStatement statement = null;
ResultSet result = null;
try {
statement = conn.prepareStatement(ATUALIZAR_FUNCIONARIO);
statement.setString(1, objFunc.getNomeFunc());
statement.setString(2, objFunc.getTelFunc());
statement.setString(3, objFunc.getProfissaoFunc());
statement.setString(4, objFunc.getLogin());
try {
statement.setString(5, Criptografia.cripta(objFunc.getSenha())); //criptografando a senha
} catch (NoSuchAlgorithmException e) {
}
statement.setInt(6, objFunc.getNumFunc());
statement.executeUpdate();
} catch (SQLException e) {
throw new DaoException(e);
} finally {
DbUtil.close(conn, statement, result);
}
return true;
}
public boolean excluirFuncionarios(int idFuncioanrio) throws DaoException{
Connection conn = DbUtil.getConnection();
PreparedStatement statement = null;
ResultSet result = null;
try {
statement = conn.prepareStatement(EXCLUIR_FUNCIONARIO);
statement.setInt(1, idFuncioanrio);
statement.executeUpdate();
} catch (SQLException e) {
throw new DaoException(e);
} finally {
DbUtil.close(conn, statement, result);
}
return true;
}
}[/code]