Primjeri JSP programa: Obrazac za registraciju i prijavu

U ovom tutorijalu, provest ฤu vas kroz razvojping primjeri programa s JSP-om i implementacija MVC arhitekture u ovom tutorialu.
Razvit ฤe se sljedeฤi primjeri programa:
- Obrazac za prijavu
- Obrazac za prijavu i odjavu
- JSP obrazac
Koriลกtenje obrasca za registraciju kroz JSP
U obrascu za registraciju imat ฤemo obrazac za ispunjavanje svih detalja koji ฤe sadrลพavati ime, korisniฤko ime, lozinku, adresu, kontakt broj itd.
Ovaj obrazac ฤe nam pomoฤi da se registriramo uz aplikaciju. Uzimaju sve naลกe podatke i pohranjuju ih u baza podataka ili predmemorija.
U ovom primjeru uzet ฤemo "Guru "Obrazac za registraciju" koji ima sljedeฤa polja:
- Ime
- Prezime
- Korisniฤko ime
- Lozinka
- Adresa
- Kontakt broj:
Nakon ispunjavanja svih ovih podataka imamo gumb za slanje, klikom na taj gumb svi detalji ฤe biti pohranjeni.
Primjer 1: Registar_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>
Objaลกnjenje koda:
Code Redak 11: Ovdje uzimamo naziv obrasca koji ima radnju, tj. servlet na koji ฤe se zahtjev obraditi, a naziv servleta je guru_register.java. Zahtjev ฤe biti obraฤen metodom POST.
Code Redak 14-16: Ovdje uzimamo vrstu unosa kao tekst, a ime je ime
Code Redak 18-20: Ovdje uzimamo vrstu unosa kao tekst, a ime je prezime
Code Redak 22-24: Ovdje uzimamo vrstu unosa kao tekst, a ime je korisniฤko ime
Code Redak 26-28: Ovdje uzimamo vrstu unosa kao lozinku (ovo ฤe sakriti lozinku kada se upiลกe) i ime kao lozinku
Code Redak 30-32: Ovdje uzimamo vrstu unosa kao tekst, a ime kao adresu
Code Redak 34-36: Ovdje uzimamo vrstu unosa kao tekst, a ime kao kontakt
Code Redak 37: Ovdje uzimamo tipku submit i vrijednost je takoฤer submit. Klikom na ovaj gumb akcija ฤe iฤi na odgovarajuฤi guru_register servlet gdje ฤe se sve vrijednosti parametara proslijediti u zahtjevu.
Primjer 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);
}
}
}
Objaลกnjenje koda:
Code Redak 14: Ovdje definiramo guru_servlet koji proลกiruje HttpServlet.
Code Redak 18: Ova akcija doPost() metoda koja ฤe biti pozvana kada spomenemo POST in action atribut u gornjem JSP obrascu.
Code Redak 20-25: Ovdje dohvaฤamo vrijednosti iz zahtjeva i.efirst_name, last_name, username, password, address i contact koristeฤi request.getParameter.
Code Redak 27-32: Ovdje uzimamo if uvjet u kojem provjeravamo bilo koji od parametara koji se dohvaฤaju iz zahtjeva jesu li prazni ili ne. Ako je bilo koji od parametara prazan, tada ฤe uฤi u ovaj uvjet ( first_name.isEmpty() || last_name.isEmpty || username.isEmpty || password.isEmpty || address.isEmpty || contact.isEmpty()) i imamo za dohvaฤanje objekta RequestDispatcher koristeฤi objekt zahtjeva koji ฤe proslijediti zahtjev u register_1.jsp. Ovdje takoฤer ukljuฤujemo objekte zahtjeva i odgovora.
Code Redak 33-37: Ovaj sluฤaj ฤe se izvrลกiti kada bilo koji od parametara nije prazan. Morat ฤemo dohvatiti objekt requestDispatcher pomoฤu objekta zahtjeva koji ฤe proslijediti zahtjev u register_2.jsp. Ovdje prosljeฤujemo objekte zahtjeva i odgovora.
Primjer 3: Registar_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>
Objaลกnjenje koda:
Code Redak 10: Ovdje ลพelimo dobrodoลกlicu korisniku. Ovaj JSP ฤe biti pozvan kada su svi parametri popunjeni.
Kada izvrลกite gornji kod, dobit ฤete sljedeฤi izlaz:
Izlaz:
Kada kliknemo na register_1.jsp, dobit ฤemo obrazac koji ฤe sadrลพavati detalje kao ลกto su ime, prezime, korisniฤko ime, lozinka, adresa, kontakt. Svi detalji su popunjeni. Kada kliknemo na gumb za slanje, dobivamo poruku kao "Dobrodoลกao korisnik"
Obrazac za prijavu i odjavu
Kao i obrazac za registraciju, imat ฤemo obrazac za prijavu i odjavu.
U ovom primjeru uzeli smo obrazac za prijavu gdje imamo dva polja "korisniฤko ime" i "lozinka" s gumbom za slanje.
Kada kliknemo na gumb za slanje, dobivamo poruku dobrodoลกlice s gumbom za odjavu.
Kada kliknemo na gumb za odjavu, vraฤamo se na obrazac za prijavu.
Primjer 1: Registar_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>
Objaลกnjenje koda:
Code Redak 10: Ovdje uzimamo naziv obrasca koji ima akciju, tj. servlet kojem je proslijeฤen je guru_login.java. Metoda kroz koju ฤe proฤi svoj POST.
Code Redak 13-16: Ovdje uzimamo polje za unos "korisniฤko ime" koje je tipa tekst.
Code Redak 17-20: Ovdje uzimamo polje za unos "lozinka" koje je tipa lozinka.
Code Redak 22: Ovdje uzimamo gumb "poลกalji" s vrijednoลกฤu "Prijava" na koji kliknemo, a zatim ide na servlet guru_login gdje se oba polja uzimaju pomoฤu objekta zahtjeva.
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);
}
}
}
Objaลกnjenje koda:
Code Redak 5-9: Ovdje uvozimo potrebne uvoze u kod.
Code Redak 14: Ovdje uzimamo guru_login servlet koji proลกiruje HttpServlet.
Code Redak 21: Ovdje koristimo doPost() metodu kao u obrascu koristimo POST metodu.
Code Redak 23-24: Ovdje uzimamo parametre koristeฤi objekt zahtjeva, tj. korisniฤko ime i lozinku.
Code Redak 25-29: Na ovaj naฤin, uzimamo "if" uvjet gdje provjeravamo korisniฤko ime i lozinku jesu li prazni ili ne. U ovom sluฤaju ako je prazan tada dobivamo objekt requestdispatcher koji prosljeฤuje register_3.jsp s objektima zahtjeva i odgovora.
Code Redak 30-34: Ovo ฤe se izvrลกiti ako oba nisu prazna, tada prosljeฤuje zahtjev u register_4.jsp s objektima zahtjeva i odgovora.
Primjer 2: Registar_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>
Objaลกnjenje koda:
Code Redak 12: Ovdje dobivamo parametar โkorisniฤko imeโ iz objekta zahtjeva u korisniฤkom imenu objekta niza.
Code Redak 13: Ovdje imamo poruku dobrodoลกlice s korisniฤkim imenom.
Code Redak 14: Ovdje se povezujemo na obrazac za odjavu koji preusmjerava na register_3.jsp.
Kada izvrลกite gornji kod, dobit ฤete sljedeฤi izlaz:
Izlaz:
Ovdje kada kliknemo na register_3.jsp dobivamo dva polja "korisniฤko ime" i "lozinka" s gumbom za prijavu.
Nakon klika na gumb Prijava dobit ฤete donju poruku s gumbom Odjava.
Kada kliknete na gumb za odjavu, vraฤate se na stranicu za prijavu
Obrada JSP obrasca pomoฤu getParameter()
Obrada obrasca JSP:
Obrasci su uobiฤajena metoda u web obradi. Moramo poslati informacije na web posluลพitelj i te informacije.
Postoje dvije najฤeลกฤe koriลกtene metode za slanje i vraฤanje informacija na web posluลพitelj.
GET metoda:
- Ovo je zadana metoda za prijenos informacija iz preglednika na web posluลพitelj.
- ล alje kodirane informacije odvojene znakom ? dodanim na URL stranica.
- Takoฤer ima ograniฤenje veliฤine i moลพemo poslati samo 1024 znaka u zahtjevu.
- Trebali bismo izbjegavati slanje lozinki i osjetljivih informacija metodom GET.
POST metoda:
- Post metoda je najpouzdanija metoda slanja informacija na posluลพitelj.
- ล alje informacije kao zasebnu poruku.
- ล alje se kao tekstualni niz nakon znaka ? u URL.
- Obiฤno se koristi za slanje osjetljivih informacija.
JSP obraฤuje podatke obrasca pomoฤu sljedeฤih metoda:
getParameter(): Koristi se za dobivanje vrijednosti parametra obrasca.getParameterValues(): Koristi se za vraฤanje viลกestrukih vrijednosti parametara.getParameterNames(): Koristi se za dobivanje imena parametara.getInputStream(): Koristi se za ฤitanje binarnih podataka koje ลกalje klijent.
Primjer:
U ovom primjeru uzeli smo obrazac s dva polja."korisniฤko ime" i "lozinka" s gumbom za slanje
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>
Objaลกnjenje koda: Action_form.jsp
Code Redak 10: Ovdje smo definirali formu i kroz koju smo radnju prenijeli na neku drugu JSP. U akcijskom parametru dodajemo taj JSP na koji se mora obraditi GET metodom.
Ovdje koristimo GET metodu za prosljeฤivanje informacija tj. korisniฤkog imena i lozinke.
Code Redak 11-14: Ovdje uzimamo polja kao ลกto su korisniฤko ime i lozinka koja su tekstualna polja, a unos dobivamo od korisnika.
Ovaj unos se moลพe dohvatiti pomoฤu metode getParameter. Takoฤer, imamo gumb za slanje s tipom submit type koji nam pomaลพe da prenesemo vrijednosti polja u action_form_process.jsp
Action_form_process.jsp
Code Redak 14: Ovdje dobivamo vrijednosti polja za unos iz action_form.jsp pomoฤu metode getParameter objekta zahtjeva.
Kada izvrลกimo gornji kod, dobivamo sljedeฤi izlaz:
Izlaz:
Kada izvrลกimo action_form.jsp, dobivamo obrazac s dva polja korisniฤko ime i lozinka i gumb za slanje. Zatim, nakon unosa korisniฤkog imena i lozinke, moลพemo kliknuti na poลกalji, a on se obraฤuje na sljedeฤu stranicu koja daje izlaz kao stranica za obradu obrasca s poruka dobrodoลกlice.







