Salve avrei bisogno di una mano per un problema che mi sta tormentando da una settimana in pratica uso tomcat 8.039 con postgresql 9.4 e hibernate 5, ho due progetti uno standard java e uno dinamic, li collego tra di loro mediante il deployment automatico in eclipse mars carico tutti i jar relativi creo le varie cartelle html,js,css, e login.html nella cartella web-content il problema sommariamente sta in questo:
create le mie due servlet di prova TestServlet e LoginServlet nella cartella del progetto standard deployato e compilato nel progetto dinamico carico, configurato nel web.xml e tutto sul server inserisco url path
http://localhost:8080/Corso2/html/servlet.htm e tutto funziona regolare solo che stiamo parlando di una servlet richiamata TestServlet che scrive codice nella servlet con metodo getwriter, non appena lancio il login.html si apre il form inserisco username e password mi esce questa fastidiosa pagina 404 pagina non trovata e' come se la servlet di login che dovrebbe richiamare altre due pagine in html loginOk.html o loginError.html in base alla query che deve trovare nella classe utente con classe Dao non funge in pratica sulla consolle di eclipse non ce nessuna attivita' di query. ora vi posto tutto.
librerie
antlr-2.7.7.jar
dom4j-1.6.1.jar
geronimo-jta_1.1_spec-1.1.1-sources.jar
hibernate-commons-annotations-5.0.0.Final.ja
hibernate-core-5.0.2.Final.jar
hibernate-jpa-2.1-api-1.0.0.final.jar
jandex-2.0.0.Final.jar
javassist-3.20.0-GA.jar
jboss-logging-3.3.0.Final.jar
jdbc-stdext-2.0.jar
jta.jar
ojdbc14.jar
postgresql-9.4.1212.jar
xml-apis-2.0.2.jar
antlr-2.7.7.jar
dom4j-1.6.1.jar
geronimo-jta_1.1_spec-1.1.1-sources.jar
hibernate-commons-annotations-5.0.0.Final.ja
antlr-2.7.7.jar
dom4j-1.6.1.jar
geronimo-jta_1.1_spec-1.1.1-sources.jar
hibernate-commons-annotations-5.0.0.Final.ja
aopalliance-1.0.jar
aspectj-weaver.jar
aspectjrt.jar
bsf-2.3.0.jar
commons-beanutils-1.9.2.jar
commons-chain-1.2.jar
commons-dbcp-1.4.jar
commons-digester-2.1.jar
commons-fileupload-1.3.2.jar
commons-io-1.1.jar
commons-logging-1.1.1.jar
commons-pool2-2.0.jar
commons-validator-1.4.0.jar
ehcache.jar
jakarta-oro.jar
oro-2.0.8.jar
servlet
standard-1.0.6.jar
struts-1.3.10-all.jar
struts-core-1.3.10.jar
struts-el-1.3.10.jar
struts-extras-1.3.10.jar
struts-faces-1.3.10.jar
struts-mailreader-dao-1.3.10.jar
struts-scripting-1.3.10.jar
struts-taglib-1.3.10.jar
struts-tiles-1.3.10.jar
file xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instanc" xmlns="
http://xmlns.jcp.org/xml/ns/javae" xsi:schemaLocation="
http://xmlns.jcp.org/xml/ns/javae http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xs" id="WebApp_ID" version="3.1">
<display-name>Corso2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>html/ciao.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>com.azienda.esempiCorso.sessione15.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.azienda.esempiCorso.sessione15.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Login</title>
</head>
<body>
<div align="center" style="padding-top: 150px;">
<form action="/Corso2/login" method="post">
<table border="0" width="300px" height="100px" cellspacing="5" style="background-color:silver">
<tr>
<td align ="right">
Username
</td>
<td align="left">
<input type="text" name="username">
</td>
</tr>
<tr>
<td align="right">
Password
</td>
<td align="left">
<input type="text" name="password">
</td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" value="Login">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
servlet testServlet
package com.azienda.esempiCorso.sessione15;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.azienda.progettoCorso.dao.DaoHibernate;
import com.azienda.progettoCorso.dao.DaoInterface;
import com.azienda.progettoCorso.model.Utente;
public class LoginServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
{
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
{
String userName = request.getParameter("userName");
String password = request.getParameter("password");
if ( userName != null && !userName.isEmpty() && password != null && !password.isEmpty() )
{
Utente utente = new Utente();
utente.setUserName(userName);
utente.setPassword(password);
DaoInterface dao = new DaoHibernate();
try
{
Utente utenteFromDb = dao.retrieveById(utente.getId(),true);
if ( utenteFromDb != null && utenteFromDb.getPassword().equals(password) )
{
request.getSession().setAttribute("userLogged","YES");
String requestUrl = (String) request.getSession().getAttribute("requestUrl");
if ( requestUrl != null && !requestUrl.isEmpty() )
{
request.getSession().removeAttribute("requestUrl");
request.getRequestDispatcher(requestUrl).forward(request,response);
}
else
{
request.getRequestDispatcher("/html/loginOk.html").forward(request,response);
}
}
else
{
request.getRequestDispatcher("/html/loginError.html").forward(request,response);
}
}
catch ( Exception ex )
{
ex.printStackTrace();
request.getRequestDispatcher("/html/loginError.html").forward(request,response);
}
finally
{
((DaoHibernate) dao).getSession().getSessionFactory().close();
}
}
else
{
request.getRequestDispatcher("/html/login.html").forward(request,response);
}
}
}
CLASSE UTENTE E UTENTE ID CON I RELATIVI HASCHCODE INUTILE CHE VE LA POSTO
package com.azienda.progettoCorso.model;
import java.io.Serializable;
public class Utente implements Serializable{
private static final long serialVersionUID = 1L;
private UtenteId id = null;
private String password = null;
private String profilo = null;
public UtenteId getId() {
return id;
}
public void setId(UtenteId id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserName()
{
if ( id != null )
{
return id.getUserName();
}
return null;
}
public void setUserName(String userName)
{
if ( id == null )
{
id = new UtenteId();
}
id.setUserName(userName);
}
public String getProfilo() {
return profilo;
}
public void setProfilo(String profilo) {
this.profilo = profilo;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Utente other = (Utente) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
}
CLASSE DAO PER LA RICERCA IN DB DI DUE UTENTI INSERITI IN POSTGRSQL ADMIN E USER 1
@Override
public List<Utente> retrieve(Utente utente,boolean openTransaction) {
List<Utente> result = new ArrayList<Utente>();
if ( openTransaction )
{
Transaction transaction = null;
try
{
transaction = session.beginTransaction();
result = retrieveInTransaction(utente);
transaction.commit();
}
catch( Exception ex )
{
ex.printStackTrace();
transaction.rollback();
}
}
else
{
result = retrieveInTransaction(utente);
}
return result;
}
public List<Utente> retrieveInTransaction(Utente utente)
{
List<Utente> result = new ArrayList<Utente>();
Criteria criteria = session.createCriteria(Utente.class);
if ( utente.getUserName() != null )
{
criteria.add(Restrictions.ilike("id.userName",utente.getUserName(),MatchMode.ANYWHERE));
}
if ( utente.getProfilo() != null )
{
criteria.add(Restrictions.ilike("profilo",utente.getProfilo(),MatchMode.ANYWHERE));
}
criteria.addOrder(Order.asc("id.userName"));
result = criteria.list();
return result;
}
@Override
public Utente retrieveById(UtenteId utenteId,boolean openTransaction) {
Utente result = null;
Transaction transaction = null;
if ( openTransaction )
{
try
{
transaction = session.beginTransaction();
result = retrieveByIdInTransaction(utenteId);
transaction.commit();
}
catch( Exception ex)
{
ex.printStackTrace();
transaction.rollback();
}
}
else
{
result = retrieveByIdInTransaction(utenteId);
}
return result;
}
public Utente retrieveByIdInTransaction(UtenteId utenteId) {
Utente result = null;
if ( utenteId != null )
{
Criteria criteria = session.createCriteria(Utente.class);
criteria.add(Restrictions.eq("id",utenteId));
List<Utente> list = criteria.list();
if ( ! (list != null && list.size() == 1 ) )
{
throw new RuntimeException("Non e' stato travato uno ed un solo utente con id " + utenteId.getUserName());
}
result = list.get(0);
}
return result;
}