JSP 程序示例:注册和登录表单

在本教程中,我将带您开发JSP示例程序并在此教程中实现MVC架构。
将开发以下程序示例
- 注册表单
- 登录和注销表单
- JSP表单
通过JSP使用注册表单
在注册表中,我们将有一个填写所有详细信息的表单,其中包含姓名、用户名、密码、地址、联系电话等。
此表单将帮助我们注册该应用程序。它们获取我们的所有详细信息并将其存储在数据库或缓存中。
在此示例中,我们将采用“Guru注册表单”,其中包含以下字段
- 名字
- 姓
- 用户名
- 密码
- 地址
- 联系电话
填写所有这些详细信息后,我们将有一个提交按钮,单击该按钮将存储所有详细信息。
示例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行代码:此处我们取了一个表单名称,其action(操作)是指请求将被处理的servlet,servlet名称为guru_register.java。请求将通过POST方法处理。
第14-16行代码:此处我们取了输入类型为文本,姓名为first name。
第18-20行代码:此处我们取了输入类型为文本,姓名为last name。
第22-24行代码:此处我们取了输入类型为文本,姓名为username。
第26-28行代码:此处我们取了输入类型为密码(输入时会隐藏密码),姓名为password。
第30-32行代码:此处我们取了输入类型为文本,姓名为address。
第34-36行代码:此处我们取了输入类型为文本,姓名为contact。
第37行代码:此处我们取了一个提交类型的按钮,其值为submit。单击此按钮后,操作将转到相应的guru_register servlet,其中所有参数值都将传递到请求中。
示例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()方法,当我们在上面的JSP表单的action属性中提到POST时,将调用此方法。
第20-25行代码:此处我们使用request.getParameter从请求中获取值,即first_name、last_name、username、password、address和contact。
第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。
执行上述代码后,您将获得以下输出
输出
当我们单击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行代码:此处我们取了一个表单名称,其action(操作)是指传递给它的servlet是guru_login.java。它将通过POST方法传递。
第13-16行代码:此处我们取了一个名为“username”的输入字段,其类型为文本。
第17-20行代码:此处我们取了一个名为“password”的输入字段,其类型为密码。
第22行代码:此处我们取了一个值为“Login”的“submit”按钮,单击后它会转到servlet guru_login,其中使用request对象获取这两个字段。
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 servlet,它继承自HttpServlet。
第21行代码:此处我们使用doPost()方法,因为我们在表单中使用了POST方法。
第23-24行代码:此处我们使用request对象获取参数,即username和password。
第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行代码:此处我们通过request对象将参数“username”获取到字符串对象username中。
第13行代码:此处我们显示了带有用户名的欢迎消息。
第14行代码:此处我们链接到注销表单,该表单重定向到register_3.jsp。
执行上述代码后,您将获得以下输出
输出
此处,当我们单击register_3.jsp时,我们会看到两个字段“username”和“password”以及一个登录按钮。
单击登录按钮后,您将看到以下消息和一个注销按钮。
单击注销按钮后,您将返回登录页面
使用getParameter()处理JSP表单
JSP表单处理
表单是Web处理的常见方法。我们需要将信息发送到Web服务器,并将该信息。
有两种常用的方法可以将信息发送到Web服务器并取回。
GET方法
- 这是将信息从浏览器传递到Web服务器的默认方法。
- 它将编码后的信息通过?字符附加到URL页面发送。
- 它还有大小限制,我们只能在请求中发送1024个字符。
- 我们应该避免通过GET方法发送密码和敏感信息。
POST方法
- POST方法是向服务器发送信息的最可靠方法。
- 它将信息作为单独的消息发送。
- 它在URL的?之后作为文本字符串发送。
- 它通常用于发送敏感信息。
JSP使用以下方法处理表单数据
getParameter():用于获取表单参数的值。getParameterValues():用于返回参数的多个值。getParameterNames():用于获取参数的名称。getInputStream():用于读取客户端发送的二进制数据。
示例
在此示例中,我们采用了具有两个字段“username”和“password”以及提交按钮的表单。
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。在action参数中,我们添加了需要通过GET方法处理的JSP。
此处我们使用GET方法传递信息,即用户名和密码。
第11-14行代码:此处我们取了像username和password这样的字段,它们是文本字段,我们从用户那里获取输入。
可以使用getParameter方法获取此输入。此外,我们还有一个类型为submit的提交按钮,它有助于我们将字段值传递到action_form_process.jsp。
Action_form_process.jsp
第14行代码:此处我们使用request对象的getParameter方法从action_form.jsp获取输入字段的值。
当我们执行上面的代码时,我们会得到以下输出。
输出
当我们执行action_form.jsp时,我们会得到一个包含两个字段username和password以及一个提交按钮的表单。然后,在输入username和password后,我们可以单击提交,它将处理到下一个页面,显示“表单处理页面”以及欢迎消息。







