猿教程 Logo

1)Servlet使用Cookie

Cookie是在多个客户端请求之间持久保存的一小块信息。

Cookie具有名称,单个值和可选属性,例如注释,路径和域限定符,过期时间和版本号。


Cookie如何工作

默认情况下,每个请求都被视为新请求。 在cookie技术中,我们从servlet返回的响应中添加cookie。 所以cookie存储在浏览器的缓存中。 之后,如果用户发送请求,cookie会默认添加在请求中。 这时,我们将此用户识别为旧用户。



Cookie类型

servlet中有2种类型的cookie。

  1. 非持久性cookie

  2. 持久性cookie

非持久性cookie

它仅对于单个会话有效。 每次用户关闭浏览器时都会删除。

持久性cookie

它对多个会话有效。 每次用户关闭浏览器时都不会删除它。 仅当用户注销时才会被删除。


Cookies的优点

  1. 保持状态的最简单的技术。
  2. Cookie在客户端维护。

Cookies的缺点

  1. 如果从浏览器禁用cookie,它将无法正常工作。

  2. 在Cookie对象中只能设置文本信息。

注意:Gmail使用Cookie技术进行登录。 如果您禁用cookie,gmail将无法正常工作。


Cookie类

javax.servlet.http.Cookie类提供了使用Cookie的功能。 它提供了很多有用的cookie的方法。

Cookie类的构造方法

构造方法描述
Cookie()构造一个cookie。
Cookie(String name, String value)构造具有指定名称和值的cookie。

Cookie类的有用方法

给出了一些常用的Cookie类的方法。

方法描述
public void setMaxAge(int expiry)设置Cookie的最长使用时间(以秒为单位)。
public String getName()返回Cookie的名称。 创建后不能更改名称。
public String getValue()返回Cookie的值。
public void setName(String name)更改cookie的名称。
public void setValue(String value)更改cookie的值。

使用Cookie所需的其他方法

为了添加cookie或从cookie获取值,我们需要一些由其他接口提供的方法。 它们是:

  1. public void addCookie(Cookie ck):HttpServletResponse接口的方法用于在响应对象中添加cookie。 

  2. public Cookie [] getCookies():HttpServletRequest接口的方法用于从浏览器返回所有的cookie。


如何创建Cookie?

让我们看看创建cookie的简单代码。

Cookie ck=new Cookie("user","sonoo jaiswal");//creating cookie object
	response.addCookie(ck);//adding cookie in the response

如何删除Cookie?

让我们看看删除cookie的简单代码。 它主要用于注销或注销用户。

Cookie ck=new Cookie("user","");//deleting value of cookie
        ck.setMaxAge(0);//changing the maximum age to 0 seconds
        response.addCookie(ck);//adding cookie in the response

如何获得Cookie?

让我们看看获取所有cookie的简单代码。

Cookie ck[]=request.getCookies();
        for(int i=0;i<ck.length;i++){
         out.print("<br>"+ck[i].getName()+" "+ck[i].getValue());//printing name and value of cookie
        }

Servlet Cookie的简单示例

在本示例中,我们将用户的名称存储在cookie对象中,并在另一个servlet中访问它。 我们知道会话对应于特定用户。 因此,如果您从太多的具有不同的值的浏览器访问,你会得到不同的值。


index.html

<form action="servlet1" method="post">
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 doPost(HttpServletRequest request, HttpServletResponse response){
	try{

	response.setContentType("text/html");
	PrintWriter out = response.getWriter();
		
	String n=request.getParameter("userName");
	out.print("Welcome "+n);

	Cookie ck=new Cookie("uname",n);//creating cookie object
	response.addCookie(ck);//adding cookie in the response

	//creating submit button
	out.print("<form action='servlet2'>");
	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 doPost(HttpServletRequest request, HttpServletResponse response){
	try{

	response.setContentType("text/html");
	PrintWriter out = response.getWriter();
	
	Cookie ck[]=request.getCookies();
	out.print("Hello "+ck[0].getValue());

	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>

输出





版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Servlet/cookies-in-servlet.html