在“隐藏表单字段”的情况下,使用一个隐藏(不可见)文本字段来维护用户的状态。
在这种情况下,我们将信息存储在隐藏字段中,并从另一个servlet获取信息。 如果必须在页面中提交表单,并且不想依赖浏览器,那么这种方法会更好。
让我们看一下将值存储在隐藏字段中的代码。
<input type="hidden" name="username" value="sayasu">
在这里,username
是隐藏字段的名称,sayasu
是隐藏字段的值。
1. 表单隐藏字段的应用
表单隐藏字段广泛用于网站的评论表单。在这种情况下,我们会将页面ID或页面名称存储在隐藏字段中,以便可以唯一地标识每个页面。
2. 隐藏表单字段的优点
- 无论是否禁用cookie,它都将始终有效。
3. 隐藏表单字段的缺点
- 它在服务器端维护。
- 每页都需要提交额外的表单信息。
- 只能使用文字信息。
4. 使用隐藏表单字段示例
在此示例中,我们将用户名存储在一个隐藏的文本字段中,并从另一个servlet获取该值。
启动Eclipse,创建一个动态Web应用项目:HiddenFormField,完整的目录结构如下:
在此应用程序中,需要创建以下几个文件:
文件:index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>隐藏表单字段示例 - By xntutor.com</title>
</head>
<body>
<form action="servlet1">
用户名:<input type="text" name="username" /><br /> <input type="submit"
value="提交" />
</form>
</body>
</html>
文件:FirstServlet.java
package com.xntutor.servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class FirstServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) {
try {
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String n = request.getParameter("username");
out.print("您好," + n);
// creating form that have invisible textfield
out.print("<form action='servlet2'>");
out.print("<input type='hidden' name='username' value='" + n + "'>");
out.print("<input type='submit' value='提交'>");
out.print("</form>");
out.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
文件:SecondServlet.java
package com.xntutor.servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SecondServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) {
try {
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
// Getting the value from the hidden field
String n = request.getParameter("username");
out.print("您好, " + n);
out.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
文件:web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>HiddenFormField</display-name>
<servlet>
<servlet-name>s1</servlet-name>
<servlet-class>com.xntutor.servlet.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>s1</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>s2</servlet-name>
<servlet-class>com.xntutor.servlet.SecondServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>s2</servlet-name>
<url-pattern>/servlet2</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
启动Tomcat服务器,打开浏览器访问下面URL: