鍍金池/ 教程/ Linux/ Servlet登錄注銷Cookies實(shí)例
Servlet web.xml welcome-file-list
Servlet從數(shù)據(jù)庫讀取記錄性能優(yōu)化
Servlet URL重寫帶參數(shù)
War文件
Web技術(shù)基礎(chǔ)
Servlet GenericServlet類
Servlet API
Servlet ServletInputStream類
使用MyEclipse創(chuàng)建Servlet
Servlet增刪改查
Servlet ServletConfig配置信息
Servlet Cookies
Servlet重定向
Servlet生命周期
Servlet HttpSession會(huì)話
Servlet HttpServlet類
Servlet注冊表單示例
Servlet表單隱藏字段
Servlet下載文件
Servlet教程
Servlet身份驗(yàn)證過濾器
Servlet ServletOutputStream類
Servlet HttpSession登錄注銷實(shí)例
Servlet啟動(dòng)時(shí)加載
Servlet事件和監(jiān)聽器
使用Eclipse創(chuàng)建Servlet
Servlet ServletContextEvent事件
Servlet HttpSessionEvent統(tǒng)計(jì)在線用戶數(shù)實(shí)例
Servlet RequestDispatcher請求轉(zhuǎn)發(fā)
Servlet使用注釋
Servlet過濾器示例
Servlet過慮器
Servlet ServletContext配置信息
Servlet登錄注銷Cookies實(shí)例
Servlet工作流程
Servlet會(huì)話跟蹤
Servlet登錄實(shí)例
Servlet ServletRequest接口
Servlet ServletRequestEvent類和接口
Servlet入門程序
Servlet查詢搜索數(shù)據(jù)示例
Servlet FilterConfig應(yīng)用示例
Servlet顯示所有頭信息
Servlet屬性設(shè)置
使用NetBeans創(chuàng)建Servlet
Servlet接口實(shí)現(xiàn)
Servlet上傳文件

Servlet登錄注銷Cookies實(shí)例

Cookie是存儲(chǔ)在客戶端的一種信息技術(shù)。

在上一頁中,我們學(xué)到了很多關(guān)于cookie的內(nèi)容 如何創(chuàng)建cookie,如何刪除cookie,如何獲取cookie等

在這里,我們將使用servlet cookie創(chuàng)建一個(gè)登錄和注銷示例。

在這個(gè)例子中,我們創(chuàng)建了3個(gè)鏈接:登錄,注銷和用戶資料。用戶在未登錄之前不能進(jìn)入個(gè)人資料頁面。如果用戶已經(jīng)注銷,則需要再次登錄才能訪問個(gè)人資料。

在這個(gè)應(yīng)用程序中,創(chuàng)建了以下文件。

  • index.html - Web應(yīng)用程序首頁。
  • link.html - 鏈接頁面。
  • login.html - 登錄頁面。
  • LoginServlet.java - 登錄Servlet處理。
  • LogoutServlet.java - 注銷Servlet處理。
  • ProfileServlet.java - 用戶個(gè)人資料Servlet。
  • web.xml - Servlet配置文件。

打開Eclipse,創(chuàng)建一個(gè)動(dòng)態(tài)Web項(xiàng)目:LoginWithCookies,其完整的項(xiàng)目結(jié)構(gòu)如下圖所示 -

按以下順序,分別編寫每個(gè)文件的源代碼。

文件:index.html -

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>使用Cookie登錄應(yīng)用程序</title>
</head>
<body style="text-algin: center;">
    <h2>歡迎使用Cookie登錄應(yīng)用程序</h2>
    <a href="login.html">登錄</a>|
    <a href="logout">注銷</a>|
    <a href="profile">個(gè)人信息</a>
</body>
</html>

文件:link.html -

<a href="login.html">登錄</a>|
<a href="logout">注銷</a>|
<a href="profile">個(gè)人信息</a>
<hr>

文件:login.html -

    <div style="text-algin: center; padding-top:12px;">
        <form action="login" method="post">
            用戶名:<input type="text" name="name">  密碼:<input type="password"
                name="password"><input type="submit" value="登錄">
        </form>
    </div>
</body>
</html>

文件:LoginServlet.java -

package com.yiibai;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setCharacterEncoding("UTF-8");  
        response.setContentType("text/html;charset=UTF-8"); 
        request.setCharacterEncoding("UTF-8");  
        PrintWriter out = response.getWriter();
        request.getRequestDispatcher("link.html").include(request, response);

        String name = request.getParameter("name");
        String password = request.getParameter("password");

        // 用戶名和密碼分別為:admin , 123456
        if (name.equals("admin") && password.equals("123456")) {
            out.print("您已成功登錄系統(tǒng)!");
            out.print("<br>歡迎您, " + name);
            Cookie ck = new Cookie("name", name);
            response.addCookie(ck);
        } else {
            out.print("<font style='color:red;'>用戶名或密碼錯(cuò)誤!</font>");
            request.getRequestDispatcher("login.html").include(request, response);
        }
        out.close();
    }

}

文件:LogoutServlet.java -

package com.yiibai;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LogoutServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setCharacterEncoding("UTF-8");  
        response.setContentType("text/html;charset=UTF-8"); 
        request.setCharacterEncoding("UTF-8");  
        PrintWriter out = response.getWriter();

        request.getRequestDispatcher("link.html").include(request, response);

        Cookie ck = new Cookie("name", "");
        ck.setMaxAge(0);
        response.addCookie(ck);

        out.print("您已成功注銷!");
    }
}

文件:ProfileServlet.java -

package com.yiibai;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ProfileServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();

        request.getRequestDispatcher("link.html").include(request, response);

        Cookie ck[] = request.getCookies();
        if (ck != null) {
            String name = ck[0].getValue();
            if (!name.equals("") || name != null) {
                out.print("<b>歡迎您來到個(gè)人信息中心</b>");
                out.print("<br>您好, " + name);
            }
        } else {
            out.print("<font style='color:red;'>請先登錄!</font>");
            request.getRequestDispatcher("login.html").include(request, response);
        }
        out.close();
    }
}

文件:web.xml -

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    id="WebApp_ID" version="3.1">
    <display-name>LoginWithCookies</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

    <!-- 登錄Servlet -->
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.yiibai.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>

    <!-- 注銷Servlet -->
    <servlet>
        <servlet-name>LogoutServlet</servlet-name>
        <servlet-class>com.yiibai.LogoutServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LogoutServlet</servlet-name>
        <url-pattern>/logout</url-pattern>
    </servlet-mapping>

    <!-- 用戶資料Servlet -->
    <servlet>
        <servlet-name>ProfileServlet</servlet-name>
        <servlet-class>com.yiibai.ProfileServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ProfileServlet</servlet-name>
        <url-pattern>/profile</url-pattern>
    </servlet-mapping>
</web-app>

在編寫所有上面文件代碼之后,部署這個(gè)Web應(yīng)用程序,打開瀏覽器訪問URL: http://localhost:8080/LoginWithCookies/ ,如果代碼沒有錯(cuò)誤,應(yīng)該會(huì)看到以下結(jié)果 -

點(diǎn)擊“登錄”鏈接,輸入用戶名和密碼:admin123456 ,應(yīng)該會(huì)看到以下結(jié)果 -

提交登錄成功后,看到以下結(jié)果 -

查看個(gè)人信息 -

其它如注銷,登錄密碼錯(cuò)誤請自己嘗試一下。