Salve a tutti, ho un piccolo dilemma. Devo creare una servlet "Profilo" che:
nel caso l'utente non sia loggato debba mostrare un messaggio di errore, in caso contrario deve mostrare un form per la modifica dei dati dell'utente. Ho gi� fatto la servlet per il login, tuttavia non riesco nella creazione della servlet profilo, nel caso pi� specifico la parte del messaggio di accesso negato. Di seguito il codice gi� fatto:
codice:
// Servlet login
@WebServlet (name="Login", urlPatterns = {"/login.html"})
public class Login extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
if (request.getParameter("Submit")!= null){
String username = request.getParameter("username");
String password = request.getParameter("psw");
ArrayList<Iscritto> listaIscritti = IscrittoFactory.getInstance().getIscrittoList();
for (Iscritto i : listaIscritti){
if(i.getUsername().equals(username) && i.getPsw().equals(password)){
HttpSession session = request.getSession(true);
session.setAttribute("iscritto", i);
if (i instanceof Iscritto){
} if (i.getNome().equals("") || i.getCognome().equals("") || i.getFrase().equals("") || i.getNascita().equals("")){
request.setAttribute("iscritto", i);
request.getRequestDispatcher("profilo.jsp").forward(request, response);
} else{
request.setAttribute("iscritto", i);
request.getRequestDispatcher("bacheca.jsp").forward(request, response);
}
}
}
for (Iscritto i2 : listaIscritti){
if (!i2.getUsername().equals(username) || !i2.getPsw().equals(password)) {
request.setAttribute("errore", "credenziali di accesso errate");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}
request.getRequestDispatcher("login.jsp").forward(request, response);
//pagina login.jsp
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
<div class="contenitore">
<nav class="navbar">
<ul class="nav_bar">
<li id="head"><a href="descrizione.jsp">Sito</a></li>
<li><a href="descrizione.jsp">Descrizione</a></li>
<li><a href="profilo.jsp">Profilo</a></li>
<li><a href="bacheca.jsp">Bacheca</a></li>
</ul>
</nav>
<br>
<div class="log_in">
<img id="utente" alt="profile" src="imm.jpg">
<h2 id="titolo_form">Login a Sito</h2>
</div>
<div class="form_box_login">
<form action="Login" method="post">
<br>
<label for="username">Username</label>
<input type="text" name="username" id="username" placeholder="Inserisci Username" required/>
<br>
<label for="psw">Password</label>
<input type="text" name="psw" id="psw" placeholder="Inserisci Password" required/>
<br>
<button class="conferma" name="Submit" type="submit">Login</button>
<button class="cancella" type="reset">Cancella Campi</button>
<label for="errore">
<c:if test="${!empty errore}">
<c:out value="${errore}"/>
</c:if>
</label>
</form>
</div>
</div>
<jsp:include page="footer.jsp" />
</body>
</html>
//profilo.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
<div class="contenitore">
<nav class="navbar">
<ul class="nav_bar">
<li id="head"><a href="#sito">Sito</a></li>
<li><a href="descrizione.jsp">Descrizione</a></li>
<li><a href="login.jsp">Login</a></li>
</ul>
<ul id="nav_user">
<li><h3>${iscritto.username}</h3></li>
<li><a href="#logout">Logout</a></li>
</ul>
</nav>
<div id="profile">
<jsp:include page="sidebar.jsp" />
<br>
<div class="box_profilo">
<div class="sign_in">
<img id="utente2" alt="immagine del profilo" src="Immagini/utenti.png">
</div>
<c:if test="${!empty accesso}">
<c:out value="${accesso}"/>
</c:if>
<div class="form_box">
<form class="form_signin" action="Profilo" method="post">
<label for="nome">Nome</label>
<input type="text" id="nome" name="nome" value="${iscritto.nome}" required>
<br>
<label for="cognome">Cognome</label>
<input type="text" id="cognome" name="cognome" value="${iscritto.cognome}" required>
<br>
<label for="url_img">Indirizzo immagine profilo</label>
<input type="url" id="url_img" name="url_img" value="${iscritto.urlImmProfilo}" placeholder="Inserisci url" required>
<br>
<label for="frase">Frase di Presentazione</label>
<textarea rows="7" cols="20" id="frase" name="frase" value="${iscritto.frase}" placeholder="Inserisci frase" required></textarea>
<br>
<label for="data">Data di Nascita</label>
<!--lo strumento di validazione mi da un warning, in quanto il tipo di input "date" non � supportato da tutti i browser -->
<input type="date" id="data" name="01/01/1990" value="${iscritto.nascita}" required>
<br>
<label for="username">Username</label>
<input type="text" id="username" name="username" value="${iscritto.username}" required>
<br>
<label for="psw">Password</label>
<input type="password" id="psw" name="psw" value="oscurato" placeholder="Inserisci password" required>
<br>
<label for="c_psw">Conferma Password</label>
<input type="password" id="c_psw" name="c_psw" value="oscurato" placeholder="Conferma password" required>
<br>
<button id="conferma" type="submit" name="conferma">Aggiorna</button>
<button id="cancella" type="reset" name="cancella">Cancella Campi</button>
</form>
</div>
</div>
</div>
</div>
<jsp:include page="footer.jsp" />
</body>
</html>
//Servlet Profilo
@WebServlet (name="Profilo", urlPatterns = {"/profilo.html"})
public class Profilo extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
HttpSession session = request.getSession(false);
Iscritto utente = (Iscritto)session.getAttribute("iscritto");
request.setAttribute("avviso", "accesso negato");
if (utente != null){
request.getRequestDispatcher("profilo.jsp").forward(request, response);
}
if (utente == null){
session.setAttribute("iscritto", false);
request.getRequestDispatcher("login.jsp").forward(request, response);
}
Iscritto iscritto = new Iscritto();
if (request.getParameter("conferma") != null){
String username = request.getParameter("username");
String password = request.getParameter("psw");
String c_password = request.getParameter("c_psw");
String nome = request.getParameter("nome");
String cognome = request.getParameter("cognome");
String urlImmProfilo = request.getParameter("url_img");
String nascita = request.getParameter("data");
String frase = request.getParameter("frase");
String user = request.getParameter(nome);
int userId;
if (user != null){
userId = Integer.parseInt(user);
}
iscritto.setNome(nome);
iscritto.setCognome(cognome);
iscritto.setUrlImmProfilo(urlImmProfilo);
iscritto.setFrase(frase);
iscritto.setNascita(nascita);
iscritto.setUsername(username);
if (password.equals(c_password)){
iscritto.setPsw(password);
iscritto.setC_Psw(c_password);
} else {
request.getRequestDispatcher("profilo.jsp").forward(request, response);
}
request.getRequestDispatcher("bacheca.jsp").forward(request, response);
}
}
So che il testo � molto lungo ma volevo essere il pi� preciso possibile. Vi ringrazio in anticipo per qualsiasi consiglio possiate darmi.