Примери за JSP програма: Форма за регистрация и вход

jsp примерни програми

В този урок ще ви преведа през разработването на примерни програми с JSP и внедряването на MVC архитектурата в този урок.

Ще бъдат разработени следните примерни програми:

  • Форма за регистрация
  • Форма за влизане и излизане
  • JSP формуляр

Използване на регистрационна форма чрез JSP

Във формуляра за регистрация ще имаме формуляр за попълване на всички подробности, които ще съдържат име, потребителско име, парола, адрес, номер за контакт и т.н.

Този формуляр ще ни помогне да се регистрираме в приложението. Те вземат всички наши данни и ги съхраняват в a база данни или кеш.

В този пример ще вземем „Формуляр за регистрация на гуру“, който има следните полета:

  1. Собствено име
  2. Фамилия
  3. Потребител
  4. Парола
  5. Адрес
  6. Номер за контакт

След попълване на всички тези данни имаме бутон за изпращане, при щракване върху този бутон всички подробности ще бъдат съхранени.

Пример 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>

Обяснение на кода:

Кодов ред 11: Тук вземаме име на формуляр, което има действие, т.е. сървлетът, към който ще бъде обработена заявката, а името на сервлета е guru_register.java. Заявката ще бъде обработена чрез POST метод.

Кодов ред 14-16: Тук приемаме типа на въвеждане като текст, а името е първо име

Кодов ред 18-20: Тук приемаме типа на въвеждане като текст, а името е фамилното име

Кодов ред 22-24: Тук приемаме типа на въвеждане като текст, а името е потребителско име

Кодов ред 26-28: Тук приемаме типа на въвеждане като парола (това ще скрие паролата при въвеждане) и име като парола

Кодов ред 30-32: Тук приемаме типа на въвеждане като текст и името като адрес

Кодов ред 34-36: Тук приемаме типа на въвеждане като текст и името като контакт

Кодов ред 37: Тук вземаме бутон от типа submit и стойност също е submit. При щракване върху този бутон действието ще премине към съответния сервлет guru_register, където всички стойности на параметрите ще бъдат предадени в заявката.

Пример 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);
		}
	}

}

Обяснение на кода:

Кодов ред 14: Тук дефинираме guru_servlet, който разширява HttpServlet.

Кодов ред 18: Това действие doPost() метод, който ще бъде извикан, когато споменем атрибута POST в действие в горния JSP формуляр.

Кодов ред 20-25: Тук извличаме стойностите от заявка i.efirst_name, last_name, потребителско име, парола, адрес и контакт с помощта на request.getParameter.

Кодов ред 27-32: Тук вземаме условие if, при което проверяваме някой от параметрите, които се извличат от заявка, дали са празни или не. Ако някой от параметъра е празен, той ще влезе в това условие ( first_name.isEmpty() || last_name.isEmpty || username.isEmpty || password.isEmpty || address.isEmpty || contact.isEmpty()) и имаме за извличане на обект RequestDispatcher с помощта на обект на заявка, който ще препрати заявката към register_1.jsp. Тук също включваме обекти за заявка и отговор.

Кодов ред 33-37: Този случай ще се изпълни, когато някой от параметърите не е празен. Ще трябва да извлечем обект на requestDispatcher, като използваме обект на заявка, който ще препрати заявката към register_2.jsp. Тук препращаме обекти на заявка и отговор.

Пример 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>

Обяснение на кода:

Кодов ред 10: Тук казваме добре дошъл потребител. Този JSP ще бъде извикан, когато всички параметри са попълнени.

Когато изпълните горния код, получавате следния изход:

Използване на регистрационен формуляр чрез JSP

Използване на регистрационен формуляр чрез JSP

Изход:

Когато щракнем върху register_1.jsp, ще получим формуляр, който ще съдържа подробности като собствено име, фамилия, потребителско име, парола, адрес, контакт. Всички подробности са попълнени. Когато щракнем върху бутона за изпращане, получаваме съобщение като „Добре дошъл потребител“

Форма за влизане и излизане

Подобно на формата за регистрация, ние ще имаме форма за влизане и излизане.

В този пример сме взели формуляр за влизане, където имаме две полета „потребителско име“ и „парола“ с бутон за изпращане.

Когато щракнем върху бутона за изпращане, получаваме поздравително съобщение с бутон за излизане.

Когато щракнем върху бутона за излизане, се връщаме към формата за вход.

Пример 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>

Обяснение на кода:

Кодов ред 10: Тук вземаме име на форма, което има действие, т.е. сървлетът, към който е преминал, е guru_login.java. Методът, през който ще премине своя POST.

Кодов ред 13-16: Тук вземаме поле за въвеждане „потребителско име“, което е от типа текст.

Кодов ред 17-20: Тук вземаме поле за въвеждане „парола“, което е от типа парола.

Кодов ред 22: Тук вземаме бутон „изпращане“ със стойност „Влизане“, върху който щракваме, след което отива към сервлета guru_login, където и двете полета се вземат с помощта на обект на заявка.

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);
		}
	}

}

Обяснение на кода:

Кодов ред 5-9: Тук импортираме необходимите импортирания в кода.

Кодов ред 14: Тук вземаме сервлета guru_login, който разширява HttpServlet.

Кодов ред 21: Тук използваме doPost() метод, както във формата използваме POST метод.

Кодов ред 23-24: Тук вземаме параметри, използвайки обект на заявка, т.е. потребителско име и парола.

Кодов ред 25-29: По този начин приемаме условие „if“, при което проверяваме потребителското име и паролата дали са празни или не. В този случай, ако е празно, тогава получаваме обект requestdispatcher, който препраща към register_3.jsp с обекти за заявка и отговор.

Кодов ред 30-34: Това ще бъде изпълнено, ако и двете не са празни, тогава препраща заявката към register_4.jsp с обекти за заявка и отговор.

Пример 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>

Обяснение на кода:

Кодов ред 12: Тук получаваме параметър „потребителско име“ от обекта на заявката в потребителското име на низовия обект.

Кодов ред 13: Тук имаме приветствено съобщение с потребителското име.

Кодов ред 14: Тук имаме връзка за излизане от формуляра, който пренасочва към register_3.jsp.

Когато изпълните горния код, получавате следния изход:

Изход:

Тук, когато щракнем върху register_3.jsp, получаваме две полета „потребителско име“ и „парола“ с бутон за влизане.

Форма за влизане и излизане

След като щракнете върху бутона за влизане, ще получите съобщението по-долу с бутон за излизане.

Форма за влизане и излизане

Когато щракнете върху бутона за излизане, се връщате на страницата за вход

Форма за влизане и излизане

Обработка на JSP формуляр с помощта на getParameter()

Обработка на JSP формуляр:

Формулярите са често срещаният метод в уеб обработката. Трябва да изпратим информация до уеб сървъра и тази информация.

Има два често използвани метода за изпращане и връщане на информация към уеб сървъра.

Метод GET:

  • Това е методът по подразбиране за предаване на информация от браузър към уеб сървър.
  • Той изпраща кодираната информация, разделена със знака ?, добавен към URL страницата.
  • Освен това има ограничение на размера и можем да изпратим само 1024 знака в заявката.
  • Трябва да избягваме изпращането на парола и чувствителна информация чрез метода GET.

Метод POST:

  • Методът на публикуване е най-надеждният метод за изпращане на информация до сървъра.
  • Той изпраща информация като отделно съобщение.
  • Изпраща като текстов низ след ?в URL адреса.
  • Обикновено се използва за изпращане на информация, която е чувствителна.

JSP обработва обработката на данни от формуляри, като използва следните методи:

  1. getParameter(): Използва се за получаване на стойността на параметъра на формуляра.
  2. getParameterValues(): Използва се за връщане на множеството стойности на параметрите.
  3. getParameterNames(): Използва се за получаване на имената на параметрите.
  4. getInputStream(): Използва се за четене на двоичните данни, изпратени от клиента.

Пример:

В този пример сме взели формуляр с две полета. "потребителско име" и "парола" с бутон за изпращане

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>

Обяснение на кода: Action_form.jsp

Кодов ред 10: Тук сме дефинирали форма и чрез която сме преработили действието към друго JSP. В параметъра за действие добавяме този JSP, към който трябва да бъде обработен чрез GET метод.

Тук използваме метода GET за предаване на информацията, т.е. потребителско име и парола.

Кодов ред 11-14: Тук вземаме полета като потребителско име и парола, които са текстови полета, и получаваме въведените данни от потребителя.

Този вход може да бъде извлечен чрез метода getParameter. Освен това имаме бутон за изпращане с тип submit type, който ни помага да предадем стойностите на полето в action_form_process.jsp

Action_form_process.jsp

Кодов ред 14: Тук получаваме стойностите на полетата за въвеждане от action_form.jsp, използвайки метода getParameter на обекта на заявката.

Когато изпълним горния код, получаваме следния изход:

Обработка на JSP формуляр

Обработка на JSP формуляр

Изход:

Когато изпълним action_form.jsp, получаваме формуляр с две полета потребителско име и парола и бутон за изпращане. След това, след като въведем потребителско име и парола, можем да щракнем върху изпращане и той обработва следващата страница, която дава резултат като страница за обработка на формуляр с приветствено съобщение.