Cookieはどれぐらい知っていますか?
一、クッキーとは?①:Cookie翻訳はビスケットである.②:Cookieはサーバからクライアントに対してキーパッドの保存を通知する技術である.③:各Cookieの大きさは4 kbを超えてはいけない。毎回要求する時、クライアントがCookieがある限り、サーバーに送信される。
二、どうやってCookieを作りますか?①:サーバ端new Cookie(name,value);②:レスポンス.addCookie(cookie)を呼び出します。クライアントCookieの保存(または変更)を通知します。
二、どうやってCookieを作りますか?①:サーバ端new Cookie(name,value);②:レスポンス.addCookie(cookie)を呼び出します。クライアントCookieの保存(または変更)を通知します。
/**
* cookie
* @param request
* @param response
*/
public void createCookie(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 1、 cookie,
Cookie cookie = new Cookie("key","value");
// 2、 response.addCookie( cookie ); Cookie ( )
response.addCookie(cookie);
Cookie cookie1 = new Cookie("cccKey","cccValue");
response.addCookie(cookie1);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(" cookie, ");
}
三、サーバはどうやってクライアントから送られてきたCookieを取得しますか?①:ブラウザがサーバに要求を送信する場合、ブラウザにクッキーがあります。要求があれば、クッキーに関する情報をサーバに送信します。(要求ヘッダを介して)②:サーバがブラウザから渡されたクッキーを取得します。appi-)request.get Cookie():Cookie[]を使用するだけで、すべてのCookie/cookie.co.getNameを得ることができます。Cookieのキーまたは名前の値/cookie.getValue()を取得し、現在のCookieの値を取得します。/**
* cookie
* @param request
* @param response
* @throws IOException
*/
public void getCookies(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html;charset=UTF-8");
// 1、 cookie
Cookie[] cookies = request.getCookies();
if(cookies != null && cookies.length > 0){
for (Cookie cookie:cookies) {
// 2、 cookie
response.getWriter().write(cookie.getName() +":"+ cookie.getValue() + "
");
}
}
// 3、 cookie
Cookie cookie = CookieUtils.findCookie("key",cookies);
if(cookie != null){
System.out.println(cookie.getName());
response.getWriter().write(" . Cookie
");
}
}
四、cookieは①を修正する価値があります。直接サーバ端に同名のcookieオブジェクトを作成し、作成したコンストラクタ方法に直接新しい値を割り当てて、respnse.addCookie(cookie)を呼び出します。クライアント保存の変更を通知します。②変更が必要なCookieオブジェクトを確認して、setValue()メソッド設定の新しい値を呼び出します。 /**
* cookie
* @param request
* @param response
*/
public void upCookie(HttpServletRequest request, HttpServletResponse response){
/**
* :
* 1 cookie === aaa aaaNewValue
* 2
*/
Cookie cookie = new Cookie("cccKey","cccNewKey");
response.setContentType("text/html;charset=UTF-8");
response.addCookie(cookie);
/**
* :
* 1 Cookie
* 2 setValue()
* 3 response.addCookie()
*/
Cookie cookie1 = CookieUtils.findCookie("key",request.getCookies());
// : Cookie , BASE64
cookie1.setValue("newValue");
response.addCookie(cookie1);
}
五、cookieライフサイクルCookieも生存時間が長いものがあります。Cookieの生存時間は一つのapiによって設定されます。set MaxAge()1正数は指定された秒数の後にブラウザが削除される(または無効になる)2負の値はブラウザが閉まります。Cookieは削除されます(デフォルト値も-1)3 0はブラウザが応答した後、すぐにCookieを削除します。 /**
* cookie
* setMaxAge()
* 1 ( )
* 2 ,Cookie ( -1 )
* 3 , Cookie
* @param request
* @param response
*/
public void cookieLife(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 1、 cookie
Cookie cookie = new Cookie("life3600","life3600");
// 2、 cookie
cookie.setMaxAge(60 * 60);
response.addCookie(cookie);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(" cookie");
}
六、Cookie有効経路PathのCookieのパスを設定し、Cookieはどのような要求の下でサーバーに送信するかを設定できます。①:Cookie 1のパスは要求アドレスを表しています。http://ip:port/プロジェクトパス/すべての資料はサーバーに送信されます。②:cookie 2のパスは:/工程パス/abcは要求住所を表しています。http://ip:port/工程経路/abc/*は、現在Cookie Coが2つあります。okie A path=/工程経路Cookie B path/工程経路/abc要求は以下のいくつかあります。http://ip:port/工程経路/a.Cookie AはCookieBを発行しません。http://ip:port/工程経路/abc/a.CookieAはCookieBを発行します。 /**
* cookie
* @param request
* @param response
* @throws IOException
*/
public void testCookiePath(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html;charset=UTF-8");
Cookie cookieA = new Cookie("cookieAKey","cookieAValue");
// cookieA :/atguigu8_cookieAndsession
cookieA.setPath(request.getContextPath());
response.addCookie(cookieA);
Cookie cookieB = new Cookie("cookieBKey","cookieBValue");
// cookieB :/atguigu8_cookieAndsession/abc
cookieB.setPath(request.getContextPath() + "/abc");
response.addCookie(cookieB);
response.getWriter().write(" Cookie ");
}
}
七、ユーザー名の登録を免除します。cookieで完成した機能を使ってユーザー名を免除します。一つのフォームです。ユーザーが初めて訪問する時はログインが必要です。一回目のログインが成功すると、ユーザー名が記録されます。ユーザーが二回目の訪問する時は、このフォームに直接に前に登録したユーザ名の情報があります。パスワードを入力するだけでいいです。/**
*
*/
@WebServlet(name = "UserServlet" ,urlPatterns = "/userServlet")
public class UserServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
if("admin".equals(username) && "admin".equals(password)){
Cookie cookie = new Cookie("username",username);
// cookie
cookie.setMaxAge(60 * 60 * 24 * 7);
resp.addCookie(cookie);
resp.getWriter().write(" ");
}else {
req.getRequestDispatcher("/login.jsp").forward(req,resp);
}
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title> -</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/userServlet" method="post">
:<input type="text" id="username" name="username" value="${cookie.username.value}" /><br>
:<input type="password" name="password" id="password" /> <br>
<input type="submit" value=" ">
</form>
</body>
</html>