Session : Augmenter la durée de vie de la session
Bonjour,
J'ai développé une application en Struts2 dans laquelle j'ai des jsp et où il y a des interrogation de base de donnée.
Dans mes jsp, j'ai mis des fonctions javascript. Jusque là, pas de soucis. Mon application fonctionne comme elle le devrait.
Là où j'ai un problème, c'est que certains utilisateur reste longtemps sur une même page, sans faire d'interrogation de base de données (ex : interruption par des personnes qui rentre dans leurs bureau et discute avec l'utilisateur, lenteur dans la saisi des informations dans le formulaire par l'utilisateur).
Ce qui fait, que au moment où il valide le formulaire, il se retrouve dans la page de connexion et rien n'est enregistré en base de donnée.
Je suppose (donc je ne suis pas sur) que le problème vient de la durée de vie de la session. Comment puis-je faire pour l'augmenter ?
LoginAction.java
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384
|
package com.maison.enfant.gestion.horaire.action;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.maison.enfant.gestion.horaire.display.PersonneDisplay;
import com.maison.enfant.gestion.horaire.dto.AbsenceDTO;
import com.maison.enfant.gestion.horaire.dto.CompteurDTO;
import com.maison.enfant.gestion.horaire.dto.DroitDTO;
import com.maison.enfant.gestion.horaire.dto.PersonneDTO;
import com.maison.enfant.gestion.horaire.dto.ServiceDTO;
import com.maison.enfant.gestion.horaire.dto.SpecialisationDTO;
import com.maison.enfant.gestion.horaire.dto.UniteDTO;
import com.maison.enfant.gestion.horaire.ecartReport.EcartReport;
import com.maison.enfant.gestion.horaire.ecartReport.IEcartRep;
import com.maison.enfant.gestion.horaire.service.ICompteur;
import com.maison.enfant.gestion.horaire.service.IPersonne;
import com.maison.enfant.gestion.horaire.service.IService;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Preparable;
public class LoginAction extends ActionSupport{
//bean présent dans spring-service.xml
private IPersonne personneService;
private ICompteur compteurService;
private IService serviceService;
private IEcartRep ecartReportService;
public IEcartRep getEcartReportService() {
return ecartReportService;
}
public void setEcartReportService(IEcartRep ecartReportService) {
this.ecartReportService = ecartReportService;
}
private List<PersonneDTO> listPersonneDtoByService;
private List<PersonneDisplay> listPersonneDisplayByService;
private List<PersonneDTO> listPersonneDto;
private PersonneDisplay persDisp;
private CompteurDTO compteurDto;
private String idCompteurToLoad;
private String validationCse; // Variable présente dans la jsp
private String modificationLoad;
private String observationLoad;
private String annotationload;
private String idCsemodif;
private DroitDTO droitPersonneInSession;
private PersonneDTO personneInSession ;
private UniteDTO uniteChefService;
//Attributs
String login;
String mdp;
// Indique si la popin d'edition doit etre affichee
private String popinIsLoaded;
// objets DTO : acces direct sans interface, ni implémentation
PersonneDTO persDto;
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getMdp() {
return mdp;
}
public void setMdp(String mdp) {
this.mdp = mdp;
}
public IPersonne getPersonneService() {
return personneService;
}
public void setPersonneService(IPersonne personneService) {
this.personneService = personneService;
}
public PersonneDTO getPersDto() {
return persDto;
}
public void setPersDto(PersonneDTO persDto) {
this.persDto = persDto;
}
public LoginAction(String login, String mdp) {
super();
this.login = login;
this.mdp = mdp;
}
public LoginAction() {
super();
}
//Méthode utilisée pou chager la popin pou valider la modification
public String loadPopin() throws Exception {
if (idCompteurToLoad!= null){
System.out.println("idCompteurToLoad : "+idCompteurToLoad);
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
PersonneDTO personneDto = personneService.getElmtOfAPersonne(this.login, this.mdp);
this.personneInSession = (PersonneDTO) session.getAttribute("personne");
ServiceDTO serviceChefService = this.serviceService.getServiceByIdPersonne(this.personneInSession.getIdPersonne());
//System.out.println("serviceChefService : "+serviceChefService.getNomService());
UniteDTO uniteChefService = this.serviceService.getUniteDtoByIdService(serviceChefService.getIdService());
//System.out.println("uniteChefService : "+uniteChefService.getNomUnite());
this.listPersonneDisplayByService = this.personneService.getPersonneDisplayByUniteId(uniteChefService.getIdUnite());
CompteurDTO compteurDtoFromDataBase = this.compteurService.getCompteurById(Integer.parseInt(idCompteurToLoad));
this.compteurDto = compteurDtoFromDataBase;
System.out.println("compteurDto : "+compteurDto.getIdCompteur());
this.popinIsLoaded = "Y";
return Action.NONE;
}
return Action.INPUT;
}
//Méthode pou enregistrer la validation
public String save() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
String mode = "save";
if (idCompteurToLoad != null && !"".equals(this.idCompteurToLoad)){
mode = "update";
System.out.println("update");
}
CompteurDTO compteurDto = new CompteurDTO();
compteurDto.setValidationCse(validationCse);
compteurDto.setModif(modificationLoad);
compteurDto.setObservation(observationLoad);
compteurDto.setAnnotationsCse(annotationload);
compteurDto.setIdCsemodif(Integer.parseInt(idCsemodif));
if ("update".equals(mode)){
compteurDto.setIdCompteur(Integer.parseInt(idCompteurToLoad));
}
//on enregistre ou on met ç jour dans la BDD
this.compteurService.saveOrUpdateCompteur(compteurDto);
//on met à jour la liste avec la nouvelle entrée
this.listPersonneDisplayByService = this.personneService.getPersonneDisplayByUniteId((Integer) session.getAttribute("idUniteChefDeService"));
return Action.NONE;
}
//Méthode pour se connecter
public String execute(){
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
if(this.login != null && this.mdp !=null){
PersonneDTO personneDto = personneService.getElmtOfAPersonne(this.login, this.mdp);
if (personneDto != null){
System.out.println(" personneDto non null");
System.out.println(" nom : "+personneDto.getNom());
System.out.println(" droit : "+personneDto.getDroitDTO().getIdDroit());
session.setAttribute("personne", personneDto);
this.personneInSession = (PersonneDTO) session.getAttribute("personne");
boolean superUser = personneService.isSuperUser(personneInSession);
ServiceDTO serviceChefService = this.serviceService.getServiceByIdPersonne(personneInSession.getIdPersonne());
//System.out.println("serviceChefService : "+serviceChefService.getNomService());
UniteDTO uniteChefService = this.serviceService.getUniteDtoByIdService(serviceChefService.getIdService());
System.out.println("uniteChefService : "+uniteChefService.getNomUnite());
//pour afficher la liste de toutes les absences
session.setAttribute("idUniteChefDeService", uniteChefService.getIdUnite());
if ((superUser == true)&& (personneDto.getIdPersonne() != 3)) {
this.listPersonneDto = this.personneService.getListPersonne();
}
//Pour ne récupérer que la liste des personnes faisant parti de l'unite
else if((personneDto.getIdPersonne() == 3)||(personneDto.getDroitDTO().getIdDroit()==3)){
this.listPersonneDisplayByService = this.personneService.getPersonneDisplayByUniteId(uniteChefService.getIdUnite());
System.out.println("listPersonneDisplayByService size: "+listPersonneDisplayByService.size());
}
if (isFirstMonth()){
ecartReportService.reportDesEcart();
}
return Action.NONE;
}
return Action.INPUT;
}else {
session.setAttribute("personne", "");
return Action.INPUT;
}
}
//Méthode pour se déconnecter
public String disconnect(){
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
session.removeAttribute("personne");
return Action.INPUT;
}
//méthode pour réaliser un report des écarts des horaires réalisés
//Pour récupérer le jour ou le courrier est saisie
public boolean isFirstMonth(){
//Pour récupérer le jour ou le courrier est saisie
Date day = new Date();
int month = day.getMonth();
if(month == 1){
return true;
} else return false;
}
public List<PersonneDTO> getListPersonneDtoByService() {
return listPersonneDtoByService;
}
public void setListPersonneDtoByService(
List<PersonneDTO> listPersonneDtoByService) {
this.listPersonneDtoByService = listPersonneDtoByService;
}
public List<PersonneDTO> getListPersonneDto() {
return listPersonneDto;
}
public void setListPersonneDto(List<PersonneDTO> listPersonneDto) {
this.listPersonneDto = listPersonneDto;
}
public IService getServiceService() {
return serviceService;
}
public void setServiceService(IService serviceService) {
this.serviceService = serviceService;
}
public DroitDTO getDroitPersonneInSession() {
return droitPersonneInSession;
}
public void setDroitPersonneInSession(DroitDTO droitPersonneInSession) {
this.droitPersonneInSession = droitPersonneInSession;
}
public PersonneDTO getPersonneInSession() {
return personneInSession;
}
public void setPersonneInSession(PersonneDTO personneInSession) {
this.personneInSession = personneInSession;
}
public List<PersonneDisplay> getListPersonneDisplayByService() {
return listPersonneDisplayByService;
}
public void setListPersonneDisplayByService(
List<PersonneDisplay> listPersonneDisplayByService) {
this.listPersonneDisplayByService = listPersonneDisplayByService;
}
public String getIdCompteurToLoad() {
return idCompteurToLoad;
}
public void setIdCompteurToLoad(String idCompteurToLoad) {
this.idCompteurToLoad = idCompteurToLoad;
}
public String getPopinIsLoaded() {
return popinIsLoaded;
}
public void setPopinIsLoaded(String popinIsLoaded) {
this.popinIsLoaded = popinIsLoaded;
}
public ICompteur getCompteurService() {
return compteurService;
}
public void setCompteurService(ICompteur compteurService) {
this.compteurService = compteurService;
}
public CompteurDTO getCompteurDto() {
return compteurDto;
}
public void setCompteurDto(CompteurDTO compteurDto) {
this.compteurDto = compteurDto;
}
public PersonneDisplay getPersDisp() {
return persDisp;
}
public void setPersDisp(PersonneDisplay persDisp) {
this.persDisp = persDisp;
}
public String getValidationCse() {
return validationCse;
}
public void setValidationCse(String validationCse) {
this.validationCse = validationCse;
}
public String getModificationLoad() {
return modificationLoad;
}
public void setModificationLoad(String modificationLoad) {
this.modificationLoad = modificationLoad;
}
public String getObservationLoad() {
return observationLoad;
}
public void setObservationLoad(String observationLoad) {
this.observationLoad = observationLoad;
}
public UniteDTO getUniteChefService() {
return uniteChefService;
}
public void setUniteChefService(UniteDTO uniteChefService) {
this.uniteChefService = uniteChefService;
}
public String getAnnotationload() {
return annotationload;
}
public void setAnnotationload(String annotationload) {
this.annotationload = annotationload;
}
public String getIdCsemodif() {
return idCsemodif;
}
public void setIdCsemodif(String idCsemodif) {
this.idCsemodif = idCsemodif;
}
} |
Merci beaucoup de votre aide !