Ciao a tutti. Vorrei costruire una piccola web application che effettui l'autenticazione di un utente. Nello specifico:
1.Una jsp con una form per la login che accetta i parametri user e pwd
2.ActionForm che recuperi i dati
3.Action che esegua una query sul db passando alla query soltanto la user della form, ed eseguire il controllo sulla pwd successivamente
4.Una jsp che stampi la user dell'utente + msg di benvenuto se questi era già registrato
Sto utilizzando mysql, ho importato in eclipse il driver relativo (connector-j) ed ho poi creato un pool di connessioni su struts-config:
codice:
<data-sources>
<data-source type="org.apache.tomcat.dbcp.dbcp.BasicDataSource">
<set-property
property="driverClassName"
value="com.mysql.jdbc.Driver" />
<set-property
property="url"
value="jdbc:mysql://localhost:3306/azienda?autoReconnect=true" />
<set-property
property="username"
value="root" />
<set-property
property="password"
value="artemska" />
<set-property
property="maxActive"
value="10" />
<set-property
property="maxWait"
value="5000" />
<set-property
property="defaultAutoCommit"
value="false" />
<set-property
property="defaultReadOnly"
value="false" />
<set-property
property="validationQuery"
value="SELECT COUNT(*) FROM test" />
</data-source>
</data-sources>
Action:
codice:
package org.authentication;
import javax.servlet.http.*;
import javax.sql.DataSource;
import org.apache.struts.action.*;
import org.connessione.LoginForm;
import java.sql.*;
public class AuthenticationAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response)throws Exception{
LoginForm parametri=(LoginForm) form;
String userName=parametri.getUserName();
String password=parametri.getPassword();
DataSource dataSource=null;
java.sql.Connection myConnection=null;
try
{
dataSource = getDataSource(request,"azienda");
myConnection = dataSource.getConnection();
Statement stmt=myConnection.createStatement();
ResultSet rst=stmt.executeQuery("SELECT user FROM utenti WHERE user='"+ userName + "'" );
if (rst!=null){
request.setAttribute("message", parametri.getUserName());
}else{
return mapping.findForward("no");
}
}
catch(SQLException e)
{
}
finally {
myConnection.close();
}
return mapping.findForward("ok");
}
private DataSource getDataSource(HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
}
}
Quando runno l'applicazione ed inserisco il campo user, viene fuori l'errore:
codice:
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.NullPointerException
org.authentication.AuthenticationAction.execute(AuthenticationAction.java:42)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717
Dove sbaglio?