Salve a tutti.
Sto realizzando un semplice sistema di gestione dei contatti in rubrica.
Una pagina JSP/JSTL è stata scritta per visualizzare i contatti associati all'utente loggato, i cui dati sono tenuti in un attributo di sessione.
Alla pagina JSP è associata una servlet:
codice:
package it.biagio.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import it.biagio.model.Contact;
import it.biagio.model.User;
import it.biagio.service.UserService;
@WebServlet("/showContacts")
public class showContacts extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
User user = (User)request.getSession().getAttribute("id");
UserService us = new UserService();
RequestDispatcher requestDispatcher;
try
{
// get list of contacts
List<Contact> listOfContacts = us.getContacts(user.getId());
// set session parameter
request.getSession().setAttribute("contacts", listOfContacts);
// forward
requestDispatcher = request.getRequestDispatcher("contacts.jsp");
requestDispatcher.forward(request, response);
}
catch(Exception e)
{
requestDispatcher = request.getRequestDispatcher("failure.jsp");
requestDispatcher.forward(request, response);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
I contatti vengono visualizzati correttamente ed accanto a ciascuno di essi è possibile cliccare su un link che porta ad un'altra pagina JSP in cui il contatto può essere modificato.
Anche a quest'altra pagina è associata una servlet:
codice:
package it.biagio.servlet;
import java.io.IOException;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import it.biagio.model.Contact;
import it.biagio.model.User;
import it.biagio.service.UserService;
/**
* Servlet implementation class updateContact
*/
@WebServlet("/updateContact")
public class updateContact extends HttpServlet {
private static final long serialVersionUID = 1L;
private int contactId;
private UserService service;
private Logger logger = Logger.getLogger(updateContact.class.getName());
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
contactId = Integer.parseInt(request.getParameter("contactId"));
service = new UserService();
try
{
Contact contact = service.getContact(contactId);
request.getSession().setAttribute("contact", contact);
}
catch(Exception e)
{
logger.info(e.getMessage());
}
request.getRequestDispatcher("updateContact.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// get info about contact
String name = request.getParameter("name");
String surname = request.getParameter("surname");
String telephone = request.getParameter("telephone");
String email = request.getParameter("email");
// prepare a new contact
Contact contact = new Contact();
contact.setEmail(email);
contact.setName(name);
contact.setSurname(surname);
contact.setTelephone(telephone);
contact.setId(contactId);
String result;
try
{
result = service.editContact(contact);
}
catch(Exception e)
{
result = e.getMessage();
}
logger.info(result);
request.getRequestDispatcher("contacts.jsp").forward(request, response);
}
}
Quando l'utente conferma le modifiche, queste vengono correttamente salvate sul DB ma, quando la prima servlet viene richiamata, i contatti visualizzati non sono aggiornati.
Da cosa può dipendere?
Grazie.