Java Servlet教程—使用隐藏表单字段的Servlet登录和登出示例

使用隐藏表单字段的Servlet登录和登出示例
在隐藏表单字段的情况下,使用一个隐藏(不可见)的文本字段来维护用户的状态。
在这种情况下,我们在隐藏字段中存储信息,并从另一个servlet获取它。如果我们在所有页面上都要提交表单,并且不想依赖浏览器,那么这种方法更好。
让我们看看在隐藏字段中存储值的代码。
`<input type="hidden" name="uname" value="Vimal Jaiswal">`
这里,uname是隐藏字段的名称,Vimal Jaiswal是隐藏字段的值。
隐藏表单字段的实际应用
它广泛用于网站的评论表单中。在这种情况下,我们将页面ID或页面名称存储在隐藏字段中,以便每个页面都可以被唯一识别。
隐藏表单字段的优点
- 无论Cookie是否禁用,它都会工作。
隐藏表单字段的缺点:
- 它在服务器端维护。
- 每个页面都需要额外的表单提交。
- 只能使用文本信息。
使用隐藏表单字段的示例
在这个示例中,我们在一个隐藏的文本字段中存储用户的名称,并从另一个servlet获取该值。
index.html
<form action="servlet1">
Name:<input type="text" name="userName"/><br/>
<input type="submit" value="go"/>
</form>
FirstServlet.java
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");
PrintWriter out = response.getWriter();
String n=request.getParameter("userName");
out.print("Welcome "+n);
//creating form that have invisible textfield
out.print("<form action='servlet2'>");
out.print("<input type='hidden' name='uname' value='"+n+"'>");
out.print("<input type='submit' value='go'>");
out.print("</form>");
out.close();
}catch(Exception e){System.out.println(e);}
}
}
SecondServlet.java
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");
PrintWriter out = response.getWriter();
//Getting the value from the hidden field
String n=request.getParameter("uname");
out.print("Hello "+n);
out.close();
}catch(Exception e){System.out.println(e);}
}
}
web.xml
<web-app>
<servlet>
<servlet-name>s1</servlet-name>
<servlet-class>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>SecondServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>s2</servlet-name>
<url-pattern>/servlet2</url-pattern>
</servlet-mapping>
</web-app>