Login Java MVC utan databas
Hej!
Jag har en uppgift att ska skapa en webbapplikation som har minst 2 inloggningskonton. Inloggnings sessionen för varje konto bör kommas ihåg.
Applikationen ska följa MVC strukturen och ska ha minst en av varje MVC (JSP sida, en Servlet och en JavaBean)
Jag har log in / log ut klart och även "Profile.jsp" sidan men enligt lärarens video ska man när man är inloggad kunna skriva i URL:en typ index.jsp och komma till startsidan och där kraschar mitt program. Har suttit antagligen alldeles för länge med det men kan inte hitta vad som är fel. Någon som vet?
Tack på förhand!
Min kod:
>>>>Index.jsp<<<<
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>uppg2</title>
</head>
<body>
<%
// Kollar om det finns session
if (session.getAttribute("isLoggedIn") != null) {
response.sendRedirect("Profile.jsp");
}
%>
<h1>Log in</h1>
<!-- Login form -->
<form action="<%=request.getContextPath()%>/SessionServlet"
method="POST">
Username: <input type="text" name="username" placeholder="Username" />
<br>
Password: <input type="password" name="password" placeholder="Password" />
<br>
<input type="submit" value="Log in" />
</form>
</body>
</html>
>>>>Profile.jsp<<<<
<%@page import="model.JavaBean" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
//check if there is a session
if (session.getAttribute("isLoggedIn") != null) {
JavaBean javaBean = (JavaBean) request.getAttribute("JavaBean");
out.print("<p>You are now logged in!</p>");
out.print("<h1>Welcome to your profile " + javaBean.getUserName() + "!</h1>");
//Go to the RemoveSessionServlet
out.print("<p>Press the button to log out</p>");
out.print("<form action=\"" + request.getContextPath() + "/RemoveSessionServlet\" method=\"POST\">");
out.print("<input type=\"submit\" value=\"Log out\" />");
out.print("</form>");
} else {
response.sendRedirect("index.jsp");
}
%>
</body>
</html>
>>>>SessionServlet.java<<<<
package controller;
import java.io.IOException;
import java.io.PrintWriter;
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 javax.servlet.http.HttpSession;
import model.JavaBean;
/**
* Servlet implementation class SessionServlet
*/
@WebServlet("/SessionServlet")
public class SessionServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
String userName = request.getParameter("username");
String userpass = request.getParameter("password");
JavaBean javaBean = new JavaBean();
javaBean.setUserName(userName);
javaBean.setUserPass(userpass);
String name = javaBean.getUserName();
String pass = javaBean.getUserPass();
if(name.equals("admin") && pass.equals("123") || name.equals("frida") && pass.equals("abc")) {
JavaBean userBean = new JavaBean();
userBean.setUserName(name);
userBean.setUserPass(pass);
request.setAttribute("JavaBean", userBean);
HttpSession httpSession = request.getSession();
httpSession.setAttribute("isLoggedIn", userBean);
RequestDispatcher rd = request.getRequestDispatcher("./Profile.jsp");
rd.forward(request, response);
}
else {
out.println("<p>Wrong username or password</p>");
RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
rd.include(request, response);
}
}
}
>>>>RemoveSessionServlet.java<<<<
package controller;
import java.io.IOException;
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("/RemoveSessionServlet")
public class RemoveSessionServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Get the session
HttpSession httpSession = request.getSession();
// remove the user
httpSession.removeAttribute("isLoggedIn");
//Går till index.jsp
response.sendRedirect("index.jsp");
}
}
>>>>JavaBean<<<<
package model;
public class JavaBean.java {
private String userName;
private String userPass;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPass() {
return userPass;
}
public void setUserPass(String userPass) {
this.userPass = userPass;
}
}