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

Servlet登錄實(shí)例

在這里,我們將創(chuàng)建一個(gè)使用servlet創(chuàng)建登錄表單的簡(jiǎn)單示例,在這個(gè)示例中使用MySQL作為數(shù)據(jù)庫(kù)。

實(shí)現(xiàn)的主要功能:

  • 顯示登錄表單輸入框(用戶(hù)名,密碼)。
  • 在表單中填寫(xiě)用戶(hù)名,密碼并提交。
  • 在Servlet中接收提交的用戶(hù)名和密碼,與數(shù)據(jù)庫(kù)表中的數(shù)據(jù)進(jìn)行比較。
  • 匹配用戶(hù)名和密碼,則提示成功;不匹配則提示失敗。

需要?jiǎng)?chuàng)建一個(gè)用戶(hù)表:servlet_user。 此外,它必須包含一些數(shù)據(jù)。表結(jié)構(gòu)及數(shù)據(jù)記錄如下:

DROP TABLE IF EXISTS `servlet_user`;
CREATE TABLE `servlet_user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL DEFAULT '',
  `passwd` varchar(32) NOT NULL DEFAULT '',
  `email` varchar(32) DEFAULT NULL,
  `city` varchar(24) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of servlet_user
-- ----------------------------
INSERT INTO `servlet_user` VALUES ('1', 'maxsu', '123456', 'maxsu@yiibai.com', '廣州');
INSERT INTO `servlet_user` VALUES ('2', 'minsu', '233123', 'minsu@gmail.com', '???#39;);
INSERT INTO `servlet_user` VALUES ('3', 'avguser', 'fdsa123', 'avguser@qq.com', '廣州');
INSERT INTO `servlet_user` VALUES ('4', 'sumuser', 'fdsj124', 'sumuser@qq.com', '北京');

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

以下是這個(gè)項(xiàng)目中的幾個(gè)主要的代碼文件。

  • index.html
  • LoginServlet.java
  • LoginDao.java
  • WelcomeServlet.java
  • web.xml

以下是各個(gè)文件中的實(shí)現(xiàn)代碼。

文件:index.html -

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用戶(hù)登錄示例</title>
</head>
<body>
    <div style="margin: auto; text-align: center;">
        <form action="login" method="post">
            用戶(hù)名:<input type="text" name="username" /> 密 碼:<input
                type="password" name="passwd" /> <input type="submit"
                value="登 錄" />
        </form>
    </div>
</body>
</html>

文件:LoginServlet.java -

package com.yiibai.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.yiibai.dao.LoginDao;

public class LoginServlet extends HttpServlet {
    public 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();

        String username = request.getParameter("username");
        String passwd = request.getParameter("passwd");

        if (LoginDao.doLogin(username, passwd)) {
            HttpSession session = request.getSession();
            session.setAttribute("username", username);
            RequestDispatcher rd = request.getRequestDispatcher("welcome");
            rd.forward(request, response);
        } else {
            out.print("用戶(hù)名或密碼錯(cuò)誤~!");
            RequestDispatcher rd = request.getRequestDispatcher("index.html");
            rd.include(request, response);
        }
        out.close();
    }
}

文件:LoginDao.java -

package com.yiibai.dao;

import java.sql.*;

public class LoginDao {

    public static boolean doLogin(String username, String passwd) {
        System.out.println("UserName : "+username+", Passwd:"+passwd);
        boolean status = false;
        Connection con = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost/testdb?useSSL=false&characterEncoding=utf8", "root", "123456");
            // 用戶(hù)名及密碼是否正確?
            PreparedStatement ps = con.prepareStatement("SELECT * FROM servlet_user WHERE name=? AND passwd=?");
            ps.setString(1, username);
            ps.setString(2, passwd);
            ResultSet rs = ps.executeQuery();
            status = rs.next();
        } catch (Exception e) {
            System.out.println(e);
        }
        return status;
    }
}

文件:WelcomeServlet.java -

package com.yiibai.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class WelcomeServlet extends HttpServlet {

    public 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();
        HttpSession session = request.getSession();
        String username = (String) session.getAttribute("username");
        out.print("登錄成功~!<br/>");
        out.print("歡迎您," + username);
        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>ServletLogin</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.yiibai.servlet.LoginServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>WelcomeServ</servlet-name>
        <servlet-class>com.yiibai.servlet.WelcomeServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>WelcomeServ</servlet-name>
        <url-pattern>/welcome</url-pattern>
    </servlet-mapping>
</web-app>

在編寫(xiě)上面代碼后,部署此Web應(yīng)用程序(在項(xiàng)目名稱(chēng)上點(diǎn)擊右鍵->”Run On Server…”),打開(kāi)瀏覽器訪(fǎng)問(wèn)URL: http://localhost:8080/ServletLogin/ ,如果沒(méi)有錯(cuò)誤,應(yīng)該會(huì)看到以下結(jié)果 -

登錄成功后的界面,如下所示 -