JSP-programeksempler: Registrerings- og loginformular

jsp eksempel programmer

I denne vejledning vil jeg guide dig gennem udvikling af eksempelprogrammer med JSP og implementering af MVC-arkitekturen i denne รธvelse.

Fรธlgende programeksempler vil blive udviklet:

  • Tilmeldingsblanket
  • Log ind og logout formular
  • JSP-formular

Brug af registreringsformular gennem JSP

I registreringsformularen vil vi have en formular til at udfylde alle detaljer, som vil indeholde navn, brugernavn, adgangskode, adresse, kontaktnummer osv.

Denne formular hjรฆlper os med at tilmelde os ansรธgningen. De tager alle vores detaljer og gemmer dem i en database eller cache.

I dette eksempel vil vi tage "Guru-registreringsformular", som har fรธlgende felter:

  1. Fornavn
  2. Efternavn
  3. Brugernavn
  4. Adgangskode
  5. Adresse
  6. Kontakt nummer

Efter at have udfyldt alle disse detaljer, har vi indsend-knappen, ved at klikke pรฅ den knap vil alle detaljer blive gemt.

Eksempel 1: Register_1.jsp

<%@ 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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Registration Form</title>
</head>
<body>
<h1>Guru Register Form</h1>
<form action="guru_register" method="post">
			<table style="with: 50%">
				<tr>
					<td>First Name</td>
					<td><input type="text" name="first_name" /></td>
				</tr>
				<tr>
					<td>Last Name</td>
					<td><input type="text" name="last_name" /></td>
				</tr>
				<tr>
					<td>UserName</td>
					<td><input type="text" name="username" /></td>
				</tr>
					<tr>
					<td>Password</td>
					<td><input type="password" name="password" /></td>
				</tr>
				<tr>
					<td>Address</td>
					<td><input type="text" name="address" /></td>
				</tr>
				<tr>
					<td>Contact No</td>
					<td><input type="text" name="contact" /></td>
				</tr></table>
			<input type="submit" value="Submit" /></form>
</body>
</html>

Forklaring af koden:

Kodelinje 11: Her tager vi et formularnavn, som har handling, dvs. den servlet, som anmodningen vil blive behandlet til, og servletnavnet er guru_register.java. Anmodningen vil blive behandlet via POST-metoden.

Kodelinje 14-16: Her tager vi inputtype som tekst og navn er fornavn

Kodelinje 18-20: Her tager vi inputtype som tekst og navn er efternavn

Kodelinje 22-24: Her tager vi inputtype som tekst og navn er brugernavn

Kodelinje 26-28: Her tager vi inputtype som adgangskode (dette vil skjule adgangskoden, nรฅr den indtastes) og navn som adgangskode

Kodelinje 30-32: Her tager vi inputtype som tekst og navn som adresse

Kodelinje 34-36: Her tager vi inputtype som tekst og navn som kontakt

Kodelinje 37: Her tager vi en knap af typen submit og vรฆrdi er ogsรฅ submit. Ved klik pรฅ denne knap vil handlingen gรฅ til den tilsvarende guru_register-servlet, hvor alle parametervรฆrdier vil blive videregivet i anmodningen.

Eksempel 2: Guru_register.java

package demotest;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class guru_register
 */
public class guru_register extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    
     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String first_name = request.getParameter("first_name");
		String last_name = request.getParameter("last_name");
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String address = request.getParameter("address");
		String contact = request.getParameter("contact");
		
		if(first_name.isEmpty() || last_name.isEmpty() || username.isEmpty() || 
				password.isEmpty() || address.isEmpty() || contact.isEmpty())
		{
			RequestDispatcher req = request.getRequestDispatcher("register_1.jsp");
			req.include(request, response);
		}
		else
		{
			RequestDispatcher req = request.getRequestDispatcher("register_2.jsp");
			req.forward(request, response);
		}
	}

}

Forklaring af koden:

Kodelinje 14: Her definerer vi guru_servlet, som udvider HttpServlet.

Kodelinje 18: Denne handling doPost() metode, som vil blive kaldt, nรฅr vi nรฆvner POST in action-attributten i ovenstรฅende JSP-formular.

Kodelinje 20-25: Her henter vi vรฆrdierne fra request i.efirst_name, last_name , brugernavn, adgangskode, adresse og kontakt ved hjรฆlp af request.getParameter.

Kodelinje 27-32: Her tager vi en betingelse, hvor vi kontrollerer nogen af โ€‹โ€‹de parametre, der hentes fra anmodning, som om de er tomme eller ej. Hvis nogen af โ€‹โ€‹parametrene er tomme, vil den indtaste denne betingelse (fornavn.isTom() || efternavn.isTom || brugernavn.isTom || password.isTom || adresse.isTom || kontakt.isTom()), og vi har at hente RequestDispatcher-objekt ved hjรฆlp af request-objekt, som videresender anmodning til register_1.jsp. Her medtager vi ogsรฅ anmodnings- og svarobjekter.

Kodelinje 33-37: Denne sag udfรธres, nรฅr nogen af โ€‹โ€‹parametrene ikke er tomme. Vi bliver nรธdt til at hente requestDispatcher-objektet ved hjรฆlp af request-objektet, som videresender anmodningen til register_2.jsp. Her videresender vi anmodnings- og svarobjekter.

Eksempel 3: Register_2.jsp

<%@ 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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Success Page</title>
</head>
<body>
           <a><b>Welcome User!!!!</b></a>
</body>
</html>

Forklaring af koden:

Kodelinje 10: Her siger vi velkommen bruger. Denne JSP vil blive kaldt, nรฅr alle parametre er udfyldt.

Nรฅr du udfรธrer ovenstรฅende kode, fรฅr du fรธlgende output:

Brug af registreringsformular via JSP

Brug af registreringsformular via JSP

Output:

Nรฅr vi klikker pรฅ register_1.jsp, fรฅr vi en formular, som vil have detaljer som fornavn, efternavn, brugernavn, adgangskode, adresse, kontakt. Alle detaljer er udfyldt. Nรฅr vi klikker pรฅ send-knappen, fรฅr vi beskeden som "Velkommen bruger"

Login og logout formular

Ligesom registreringsformularen vil vi have en login- og logoutformular.

I dette eksempel har vi taget Login-formularen, hvor vi har to felter "brugernavn" og "adgangskode" med en send-knap.

Nรฅr vi klikker pรฅ send-knappen, fรฅr vi en velkomstbesked med en logout-knap.

Nรฅr vi klikker pรฅ logout-knappen, vender vi tilbage til login-formularen.

Eksempel 1: Register_3.jsp

<%@ 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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Login Form</title>
</head>
<body>
<form action="guru_login" method="post">
		<table style="with: 50%">

			<tr>
				<td>UserName</td>
				<td><input type="text" name="username" /></td>
			</tr>
				<tr>
				<td>Password</td>
				<td><input type="password" name="password" /></td>
			</tr>
		</table>
		<input type="submit" value="Login" /></form>
</body>
</html>

Forklaring af koden:

Kodelinje 10: Her tager vi et formnavn, som har handling, dvs. den servlet, som den har passeret til, er guru_login.java. Metoden, hvorigennem den vil sende sin POST.

Kodelinje 13-16: Her tager vi et inputfelt "brugernavn", som er af typen tekst.

Kodelinje 17-20: Her tager vi et indtastningsfelt "adgangskode", som er af typen adgangskode.

Kodelinje 22: Her tager vi en "send" knap med vรฆrdien "Login", som vi klikker pรฅ, sรฅ gรฅr den til servlet guru_login, hvor begge felter tages ved hjรฆlp af request object.

Guru_login.java(servlet)

package demotest;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class guru_login
 */
public class guru_login extends HttpServlet {

    public guru_login() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		if(username.isEmpty() || password.isEmpty() )
		{
			RequestDispatcher req = request.getRequestDispatcher("register_3.jsp");
			req.include(request, response);
		}
		else
		{
			RequestDispatcher req = request.getRequestDispatcher("register_4.jsp");
			req.forward(request, response);
		}
	}

}

Forklaring af koden:

Kodelinje 5-9: Her importerer vi nรธdvendige importer i koden.

Kodelinje 14: Her tager vi guru_login servlet som udvider HttpServlet.

Kodelinje 21: Her bruger vi doPost() metode som i den form, vi bruger POST-metoden.

Kodelinje 23-24: Her tager vi parametre ved hjรฆlp af anmodningsobjekt, dvs. brugernavn og adgangskode.

Kodelinje 25-29: Pรฅ denne mรฅde tager vi "hvis"-tilstand, hvor vi tjekker brugernavn og adgangskode, om de er tomme eller ej. I dette tilfรฆlde, hvis det er tomt, fรฅr vi requestdispatcher-objekt, som videresender til register_3.jsp med anmodnings- og svarobjekter.

Kodelinje 30-34: Dette vil blive udfรธrt, hvis begge ikke er tomme, sรฅ videresender den anmodningen til register_4.jsp med anmodnings- og svarobjekter.

Eksempel 2: Register_4.jsp

<%@ 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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Logged In</title>
</head>
<body>
	<table style="with: 50%">
	<tr><td>
	<% String username = request.getParameter("username"); %>
<a>Welcome   <% out.println(username); %> User!!!! You have logged in.</a></td></tr>
<tr></tr><tr><td></td><td></td><td><a href="register_3.jsp"><b>Logout</b></a></td></tr>
</table>
</body>
</html>

Forklaring af koden:

Kodelinje 12: Her fรฅr vi parameter "brugernavn" fra anmodningsobjektet i strengobjektets brugernavn.

Kodelinje 13: Her har vi en velkomstbesked med brugernavnet.

Kodelinje 14: Her linker vi for at logge af formularen, som omdirigerer til register_3.jsp.

Nรฅr du udfรธrer ovenstรฅende kode, fรฅr du fรธlgende output:

Output:

Her nรฅr vi klikker pรฅ register_3.jsp fรฅr vi to felter "brugernavn" og "adgangskode" med en login-knap.

Log ind og logout formular

Efter at have klikket pรฅ Log ind-knappen fรฅr du nedenstรฅende besked med en knap Log ud.

Log ind og logout formular

Nรฅr du klikker pรฅ logout-knappen, gรฅr du tilbage til login-siden

Log ind og logout formular

JSP-formularbehandling ved hjรฆlp af getParameter()

JSP-formularbehandling:

Formularer er den almindelige metode i webbehandling. Vi skal sende information til webserveren og den information.

Der er to almindeligt anvendte metoder til at sende og fรฅ information tilbage til webserveren.

GET metode:

  • Dette er standardmetoden til at videregive information fra browser til webserver.
  • Den sender den kodede information adskilt af "tegn" tilfรธjet til URL-siden.
  • Det har ogsรฅ en stรธrrelsesbegrรฆnsning, og vi kan kun sende 1024 tegn i anmodningen.
  • Vi bรธr undgรฅ at sende adgangskode og fรธlsomme oplysninger via GET-metoden.

POST metode:

  • Post-metoden er den mest pรฅlidelige metode til at sende information til serveren.
  • Den sender information som separat besked.
  • Den sender som tekststreng efter ?i URL'en.
  • Det bruges almindeligvis til at sende oplysninger, der er fรธlsomme.

JSP hรฅndterer formdatabehandling ved at bruge fรธlgende metoder:

  1. getParameter(): Det bruges til at fรฅ vรฆrdien af โ€‹โ€‹formparameteren.
  2. getParameterValues(): Det bruges til at returnere de flere vรฆrdier af parametrene.
  3. getParameterNames(): Det bruges til at fรฅ navne pรฅ parametre.
  4. getInputStream(): Det bruges til at lรฆse de binรฆre data sendt af klienten.

Eksempel:

I dette eksempel har vi taget en formular med to felter."brugernavn" og "adgangskode" med en send-knap

Action_form.jsp

<%@ 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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Form</title>
</head>
<body>
<form action="action_form_process.jsp" method="GET">
UserName: <input type="text" name="username">
<br />
Password: <input type="text" name="password" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

Action_form_process.jsp

<%@ 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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<h1>Form Processing</h1>

<p><b>Welcome User:</b>
   <%= request.getParameter("username")%>
</p>

</body>
</html>

Forklaring af koden: Action_form.jsp

Kodelinje 10: Her har vi defineret en form, og hvorigennem vi har behandlet handlingen til en anden JSP. I handlingsparameter tilfรธjer vi den JSP, som den skal behandles til via GET-metoden.

Her bruger vi GET-metoden til at videregive oplysningerne, dvs. brugernavn og adgangskode.

Kodelinje 11-14: Her tager vi felter som brugernavn og adgangskode, som er tekstfelter, og vi fรฅr input fra brugeren.

Dette input kan hentes ved hjรฆlp af getParameter-metoden. Vi har ogsรฅ submit-knap med typen submit type, som hjรฆlper os med at overfรธre feltvรฆrdierne til action_form_process.jsp

Action_form_process.jsp

Kodelinje 14: Her fรฅr vi vรฆrdierne af inputfelterne fra action_form.jsp ved hjรฆlp af anmodningsobjektets getParameter-metode.

Nรฅr vi udfรธrer ovenstรฅende kode, fรฅr vi fรธlgende output:

JSP-formularbehandling

JSP-formularbehandling

Output:

Nรฅr vi udfรธrer action_form.jsp, fรฅr vi en formular med to felter brugernavn og adgangskode og en indsend-knap. Efter indtastning af brugernavn og adgangskode kan vi derefter klikke pรฅ send, og den behandler til nรฆste side, som giver output som formularbehandlingsside med en velkomstbesked.

Opsummer dette indlรฆg med: