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: 这里我们采用具有操作的表单名称,即处理请求的 servlet,servlet 名称为 guru_register.java。请求将通过 POST 方法处理。
代码行14-16: 这里我们将输入类型设为文本,名称为名字
代码行18-20: 这里我们将输入类型设为文本,名称为姓氏
代码行22-24: 这里我们将输入类型设为文本,名称为用户名
代码行26-28: 这里我们将输入类型作为密码(输入时会隐藏密码)并将名称作为密码
代码行30-32: 这里我们将输入类型设为文本,将名称设为地址
代码行34-36: 这里我们将输入类型设为文本,将名称设为联系人
代码行37: 这里我们采用一个类型为提交的按钮,值也是提交。单击此按钮时,操作将转到相应的 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: 这里我们定义了扩展 HttpServlet 的 guru_servlet。
代码行18: 这个动作 doPost()
当我们在上面的 JSP 表单的 action 属性中提到 POST 时,该方法将被调用。
代码行20-25: 在这里,我们使用 request.getParameter 从请求中获取值,即 first_name、last_name、用户名、密码、地址和联系人。
代码行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: 这里我们取一个具有操作的表单名称,即它传递到的 servlet 是 guru_login.java。它将通过该方法传递其 POST。
代码行13-16: 这里我们采用文本类型的输入字段“用户名”。
代码行17-20: 这里我们采用一个输入字段“密码”,其类型为密码。
代码行22: 这里我们使用一个值为“Login”的“提交”按钮,点击后会转到 servlet 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: 这里我们采用扩展 HttpServlet 的 guru_login servlet。
代码行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时,我们会得到两个字段“用户名”和“密码”以及一个登录按钮。
单击“登录”按钮后,您将收到以下消息并带有“注销”按钮。
单击注销按钮后,您将返回登录页面
使用 getParameter() 进行 JSP 表单处理
JSP 表单处理:
表单是网页处理中常用的方法。我们需要将信息发送到网页服务器,然后获取该信息。
有两种常用的方法向 Web 服务器发送和返回信息。
GET 方法:
- 这是将信息从浏览器传递到 Web 服务器的默认方法。
- 它将以 ? 字符分隔的编码信息附加到 URL 页面并发送。
- 它也有大小限制,我们只能在请求中发送 1024 个字符。
- 我们应该避免通过GET方法发送密码和敏感信息。
POST 方法:
- Post方法是向服务器发送信息最可靠的方法。
- 它将信息作为单独的消息发送。
- 它以文本字符串的形式发送 URL 中的 ? 后面的内容。
- 它通常用于发送敏感信息。
JSP 使用以下方法处理表单数据:
getParameter()
:用于获取表单参数的值。getParameterValues()
:用于返回参数的多个值。getParameterNames()
:用于获取参数的名称。getInputStream()
:用于读取客户端发送的二进制数据。
计费示例:
在这个例子中,我们采用了一个包含两个字段的表单。“用户名”和“密码”,并带有一个提交按钮
动作表单.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>
动作表单流程.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. 在动作参数中,我们添加需要通过 GET 方法处理的 JSP。
这里我们使用 GET 方法来传递信息,即用户名和密码。
代码行11-14: 这里我们采用诸如用户名和密码之类的文本字段,并从用户那里获取输入。
可以使用 getParameter 方法获取此输入。此外,我们有一个提交类型的提交按钮,它可以帮助我们将字段值传递到 action_form_process.jsp 中
动作表单流程.jsp
代码行14: 这里我们使用请求对象的 getParameter 方法从 action_form.jsp 获取输入字段的值。
当我们执行上述代码时,我们得到以下输出:
输出:
当我们执行action_form.jsp时,我们会得到一个包含两个字段用户名和密码以及一个提交按钮的表单。然后在输入用户名和密码后,我们可以单击提交,然后它会处理到下一页,输出为带有欢迎消息的表单处理页面。