Ho terminato di scrivere la Servlet e funziona ma ho problemi con il filtro.
Non capisco perché getSession(false) venga segnato in rosso da IntelliJ anche se l’oggetto javax.servlet.http.HttpSession sia stato correttamente importato. Questo avviso non mi permette di compilare l’applicazione.
FiltroB.java
codice:
package web1;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpSession;
public class FiltroB implements Filter {
public void init(FilterConfig arg0) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpSession session = request.getSession(false);
String SessionUserID = (String) session.getAttribute("UserID");
if(SessionUserID == null){
response.sendRedirect(String.format("%s%s", request.getContextPath(), "/index.jsp"));
} else {
response.sendRedirect(String.format("%s%s", request.getContextPath(), "/privatezone.jsp"));
}
try {
chain.doFilter(request, response);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void destroy() {
}
}
LoginFiltrata.java
codice:
package web1;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
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 javax.servlet.http.HttpSession;
@WebServlet(urlPatterns = "/privatezone.jsp")
public class LoginFiltrata extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
String SessionUserID = (String) session.getAttribute("UserID");
String UserID = request.getParameter("UserID");
String Password = request.getParameter("Password");
if (SessionUserID==null){
FromStringToHash HashText = new FromStringToHash(Password,"pall0");
ServletContext context = getServletContext();
String fullPath = context.getRealPath("/WEB-INF/users.txt");
File fileUtenti = new File(fullPath);
UserDB udb = new UserDB();
udb.loadFile(fileUtenti);
if (udb.authenticateUser(UserID, HashText.getHashText())) {
session.setAttribute("UserID", UserID);
SessionUserID = (String) session.getAttribute("UserID");
}
}
if (SessionUserID!=null && SessionUserID.equals(UserID)) {
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.println("<html><body>");
writer.println("Benvenuto " + UserID + "!");
writer.println("</body></html>");
writer.close();
} else {
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.println("<html><body>");
writer.println("Utente non registrato!");
writer.println("</body></html>");
writer.close();
}
}
}