2013-08-13 15 views
6

Stworzyłem prostą stronę logowania, na której użytkownik poda nazwę użytkownika i hasło, a następnie zostanie zapisany w sesji. Po kliknięciu przycisku "wyślij" pojawi się powitalny użytkownik lub nazwa. A jeśli użytkownik zaczeka kilka sekund, sesja wygaśnie i automatycznie powróci do strony logowania.Utwórz prostą stronę logowania za pomocą jsp i sesji

Oto moja strona logowania

<%@ page import="java.io.*,java.util.*" language="java" contentType="text/html;      
charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<jsp:useBean id="user" class="user.LoginUser" scope="session"></jsp:useBean> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 

<title>login</title> 
</head> 
<body> 

<h1><center>Give your login details</center></h1> 
<form method="post" action="check.jsp"> 
Username:<input type="text" name="username" size="20" value="<%=user.getUser() %>" >  <br> 
Password:<input type="password" name="password" size="20" value=<%=user.getPassword() %> ><br> 
<input type="submit"> 
</form> 

</body> 
</html> 

teraz w check.jsp robię moją część sprawdzanie nazwy użytkownika i hasła

<%@ page import="java.io.*,java.util.*" language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"> 
<jsp:useBean id="user" class="user.LoginUser" scope="session"></jsp:useBean> 
<jsp:setProperty name="user" property="*"/> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>login checking</title> 
</head> 
<body> 
<% 

String USER=user.getUsername(); 
int PASSWORD=user.getPassword(); 
if(USER.equals("abhirup")) 
{ 
if(PASSWORD==54321) 
{ 
    pageContext.forward("display.jsp"); 
} 
else 
{ 
    out.println("Wrong password"); 
    pageContext.include("login.jsp"); 
} 
pageContext.include("login.jsp"); 

} 



%> 

</body> 
</html> 

i wreszcie jestem wyświetlając go w display.jsp

<%@ page import="java.io.*,java.util.*" page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"> 
<jsp:useBean id="user" class="user.LoginUser" scope="session" ></jsp:useBean> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Display</title> 
</head> 
<body> 
<% String title="Welcome : successful login"; 
out.println(title);%> 
<h3><center>Your Name:Abhirup Parui</center></h3><br> 
Username<%=user.getUsername()%><br> 
<%session.setMaxInactiveInterval(20); 
pageContext.include("login.jsp"); 
%> 
</body> 
</html> 

, a także jest to mój plik LoginUser.java

package user; 

public class LoginUser { 
String username; 
int password; 

    public void setUsername(String value) 
    { 
      username=value; 
    } 
    public void setPassword(int value) 
    { 
     password=value; 
    } 
public String getUsername(){return username;} 
public int getPassword(){return password;} 

} 

Używam serwera Eclipse IDE i Tomcat. Eclipse nie wyświetlił żadnego błędu na żadnej ze stron, ale nadal jest wyświetlany po uruchomieniu strony login.jsp.

I am getting this error on running login.jsp

Śledzę ten link

pomóż mi znaleźć moje błędy.

Aktualizacja

można pomyślnie uruchomić moją stronę logowania. I am getting this error now, but could not figure out where is the error. last part of the error is this

jak naprawić ten błąd. help

Odpowiedz

4

Ponieważ próbujesz uzyskać dostęp do pliku login.jsp bezpośrednio z przeglądarki, musisz przenieść go z katalogu WEB-INF - pliki w WEB-INF nie są publicznie dostępne. Jeśli przeniesiesz login.jsp do jednego katalogu i wpiszesz http://localhost:8088/abhirup/login.jsp w przeglądarce, powinien on wywołać stronę. Jednak dość powszechną praktyką jest umieszczanie stron JSP pod WEB-INF/jsp lub czymś podobnym i używanie serwletu do przechwytywania i przetwarzania żądań, a następnie przekazywanie serwletu do odpowiedniej strony jsp.

Masz błąd składni w wierszu 1, kolumna 46 ekranu display.jsp, ponieważ przed deklaracją language masz słowo page. Zmień to:

<%@ page import="java.io.*,java.util.*" page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 

do tego:

<%@ page import="java.io.*,java.util.*" language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
+0

Tak, działa. Czy możesz wyjaśnić, dlaczego strony jsp są domyślnie przechowywane w folderze WEB-INF? – insanity

+0

Ludzie zazwyczaj umieszczają pliki JSP w WEB-INF, aby nie były publicznie dostępne. Serwlety są udostępniane za pośrednictwem publicznego adresu URL zdefiniowanego w web.xml, więc żądanie trafia do serwletu, servelet przetwarza go, a następnie przesyła dalej żądanie do strony jsp, używając czegoś takiego jak 'request.getRequestDispatcher (" path/to/my /page").forward(request, response); '. – clav

+0

dziękuję @clav – insanity

1

Próbowałem również ten sam kod i znalazłem jakiś błąd w dwóch plikach JSP

Moja login.jsp skorygowanych kod jest jak podano poniżej:

<%@ page import="java.io.*,java.util.*" language="java" contentType="text/html;      
charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<%@ page import="user.LoginUser"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> 
<jsp:useBean id="user" class="user.LoginUser" scope="session"></jsp:useBean> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 

<title>Login page</title> 
</head> 
<body> 

<h1><center>Give your login details</center></h1> 
<form method="post" action="check.jsp"> 
User name:<input type="text" name="username" size="20" value="<%=user.getUsername() %>"><br> 
Password:<input type="password" name="password" size="20" value="<%=user.getPassword()%>" ><br> 
Submit <input type="submit"> 
</form> 

</body> 
</html> 

poprawiono kod check.jsp jest następujący:

<%@ page import="java.io.*,java.util.*" language="java" contentType="text/html;charset=ISO-8859-1"pageEncoding="ISO-8859-1"%> 
<%@ page import="user.LoginUser"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> 


<jsp:useBean id="user" class="user.LoginUser" scope="session"></jsp:useBean> 
<jsp:setProperty name="user" property="*"/> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Login checking</title> 
</head> 
<body> 
<% 

String USER=user.getUsername(); 
String PASSWORD=user.getPassword(); 
if(USER.equals("admin")) 
    { 
if(PASSWORD.equals("admin")) 
    { 
pageContext.forward("display.jsp"); 
    } 
else 
    { 
out.println("Wrong password"); 
pageContext.include("login.jsp"); 
    } 
pageContext.include("login.jsp"); 
} 
%> 

</body> 
</html> 

Poprawiono wyświetlanie.Kod jsp:

<%@ page import="java.io.*,java.util.*" language="java" contentType="text/html;charset=ISO-8859-1"pageEncoding="ISO-8859-1"%> 
<%@ page import="user.LoginUser"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> 
<jsp:useBean id="user" class="user.LoginUser" scope="session" ></jsp:useBean> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Display</title> 
</head> 
<body> 
<% String title="Welcome : Successful Login"; 
out.println(title);%> 
<h3> <center> Your Name : Reneesh </center> </h3><br> 
User name : <%=user.getUsername()%><br> 
<%session.setMaxInactiveInterval(20); 
%> 
</body> 
</html> 

Mój plik Java LoginUser.java skorygowane kod jest następujący:

package user; 

public class LoginUser { 
String username; 
String password; 

public void setUsername(String value) 
    { 
     username=value; 
    } 

public void setPassword(String value) 
    { 
    password=value; 
    } 

public String getUsername() 
    { 
    return username; 
    } 

public String getPassword() 
    { 
    return password; 
    } 

} 

Prosimy spróbować z tym kodem, zrobiłem kilka zmian w kodzie poprzez przypisanie valuue String na hasło. Użyłem również Eclipse juno IDE i Apache Tom Cat v 7.0 do uruchomienia tego dynamicznego projektu internetowego. Mam nadzieję, że spróbujesz i dasz mi znać, jeśli wystąpi kolejny błąd.

+2

Prosimy o zaznaczenie wprowadzonych zmian lub opublikowanie tylko tej części odpowiedzi, którą zmieniliście. Przez to jest trudny do wykrycia. – 4dgaurav

+2

Gaurav Zrozumiałem. Przepraszam, że jestem nowy, aby przepełnić stos, dlatego to się stało. Od następnego postu zajmiemy się tym. Dziękuję za wyjaśnienie. – Reneesh