<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    live and learn

    big big world
    posts - 5, comments - 27, trackbacks - 0, articles - 1
       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    JSP+JAVABEAN+SERVLE開發的登錄系統

    Posted on 2008-11-16 00:25 小人物 閱讀(2954) 評論(5)  編輯  收藏
    開發用的工具Myeclipse6.0,JDK1.5,TOMCAT5.5,SQLSERVLET2000;用的是最基礎的j2ee:jsp+javabean+servlet
    1,現在在系統完成后的包類:


    2,com.he.db里的DB.java,作用是連接數據庫和創建stament和resultset和關閉他們。以及增刪查該的執行
     1 package com.he.db;
     2 
     3 import java.sql.Connection;
     4 import java.sql.DriverManager;
     5 import java.sql.PreparedStatement;
     6 import java.sql.ResultSet;
     7 import java.sql.SQLException;
     8 import java.sql.Statement;
     9 
    10 public class DB {
    11     
    12     private static DB db = null;
    13     private static Connection conn = null;
    14     private static Statement stmt = null;
    15     
    16     //單例模式,new DB類的時候,創建唯一對象,只初始化一次,
    17     //注意:不要顯式交閉此static中的Connection和Statement對象,否則拋空指針異常
    18     static{
    19         try {
    20             String driverClass = "net.sourceforge.jtds.jdbc.Driver";
    21             String url = "jdbc:jtds:sqlserver://localhost:1433;DatabaseName=login";
    22             String username = "sa";        //edit
    23             String password = "";    //edit
    24             Class.forName(driverClass);
    25             conn = DriverManager.getConnection(url,username,password);
    26             stmt = conn.createStatement();
    27             System.out.println("--------初始化---------");
    28         } catch (ClassNotFoundException e) {
    29             System.out.println("---------- 加載數據庫驅動類時發生異常: ----------");
    30             e.printStackTrace();
    31         } catch (SQLException e) {
    32             System.out.println("------------ getConnection()方法發生異常--------------");
    33         }
    34     }
    35     
    36     //創建PrepareStatement對象
    37     public PreparedStatement prepareStmt(String sql){
    38         PreparedStatement pstmt = null;
    39         try {
    40             pstmt = conn.prepareStatement(sql);
    41         } catch (SQLException e) {
    42             System.out.println("-------------prepareStmt()方法發生異常-------------------");
    43             e.printStackTrace();
    44         }
    45         return pstmt;
    46     }
    47     
    48     //執行查詢所有記錄操作
    49     public ResultSet exeQuery(String sql){
    50         ResultSet rs = null;
    51         try {
    52             rs = stmt.executeQuery(sql);
    53         } catch (SQLException e) {
    54             System.out.println("------------exeQuery()方法發生異常: --------------------");
    55             e.printStackTrace();
    56         }
    57         return rs;
    58     }
    59     
    60     //執行保存、更新、刪除操作
    61     public void exeUpdate(String sql){
    62         try{
    63             stmt.executeUpdate(sql);
    64         } catch(SQLException e){
    65             System.out.println("------------- exeUpdate()方法發生異常------------------");
    66             e.printStackTrace();
    67         }
    68     }
    69     
    70     
    71     //關閉PreparedStatement對象
    72     public void closePstmt(PreparedStatement pstmt){
    73         try{
    74             pstmt.close();
    75             pstmt = null;
    76         }catch(SQLException e){
    77             System.out.println("-------------------- DB.closePstmt()方法發生異常 -------------------------");
    78             e.printStackTrace();
    79         }
    80     }
    81     
    82     //關閉ResultSet對象
    83     public void closeRs(ResultSet rs){
    84         try{
    85             rs.close();
    86             rs = null;
    87         }catch(SQLException e){
    88             System.out.println("-------------------- DB.closePstmt()方法發生異常 -------------------------");
    89             e.printStackTrace();
    90         }
    91     }
    92     
    93 
    94 }
    95 

    3,com.he.manager里的Manager.java,作用是實現登錄系統所需要用到的各項功能。例如添加帳號,查看是否數據庫里有同名帳號等。。
     1 package com.he.manager;
     2 
     3 import java.sql.PreparedStatement;
     4 import java.sql.ResultSet;
     5 import java.sql.SQLException;
     6 import java.util.ArrayList;
     7 import java.util.Iterator;
     8 import java.util.List;
     9 import java.util.regex.Pattern;
    10 
    11 import com.he.db.DB;
    12 import com.he.pojo.Account;
    13 import com.sun.org.apache.xerces.internal.impl.xs.identity.Selector.Matcher;
    14 
    15 public class Manager {
    16 
    17     DB db = new DB();
    18 
    19     // 添加帳號
    20     public void addAccount(Account account) {
    21         PreparedStatement pstmt = null;
    22         String sql = "insert into account(name,pwd,addtime) values(?,?,?)";
    23         pstmt = db.prepareStmt(sql);
    24         try {
    25             pstmt.setString(1, account.getName());
    26             pstmt.setString(2, account.getPwd());
    27             pstmt.setString(3, account.getAddtime());
    28             pstmt.executeUpdate();
    29 
    30         } catch (SQLException e) {
    31             System.out
    32                     .println("-----------------Manager.addAccount()方法異常-------------------------");
    33             e.printStackTrace();
    34         } finally {
    35             db.closePstmt(pstmt);
    36         }
    37     }
    38 
    39     // 查看數據庫里是否有指定name的相同記錄;
    40     public static boolean HasAccount(String name) {
    41         DB db = new DB();
    42         ResultSet rs = null;
    43         int count = 0;
    44         String sql = "select count(*) from account where name = '" + name + "'";
    45         rs = db.exeQuery(sql);
    46         try {
    47             while (rs.next()) {
    48                 count = rs.getInt(1);
    49             }
    50         } catch (SQLException e) {
    51             System.out
    52                     .println("------------Manager.HasAccount()方法異常------------------------");
    53             e.printStackTrace();
    54         } finally {
    55             db.closeRs(rs);
    56         }
    57         if (count > 0) {
    58             return true;
    59         } else
    60             return false;
    61     }
    62 
    63     // 判斷提交的帳號密碼是否有相應的記錄在數據庫中;
    64     public static boolean CheckAccount(String name, String pwd) {
    65         DB db = new DB();
    66         ResultSet rs = null;
    67         int count = 0;
    68         String sql = "select count(*) from account where name = '" + name
    69                 + "' and pwd = '" + pwd + "";
    70         rs = db.exeQuery(sql);
    71         try {
    72             while (rs.next()) {
    73                 count = rs.getInt(1);
    74             }
    75         } catch (SQLException e) {
    76             System.out
    77                     .println("-----------Manager.CheckAccount()方法異常--------------");
    78         } finally {
    79             db.closeRs(rs);
    80         }
    81         if (count > 0) { // 如果結果大于0;
    82             return true// 表示此用戶存在;
    83         } else
    84             return false// 表示此用戶不存在;
    85     }
    86 
    87     // 判斷提交的帳號密碼是否符合要求;
    88     public static boolean CheckForm(String name, String pwd) {
    89         String regEx="[a-zA-Z0-9]{4,8}+";//正則表達示:四到八位的數字或字母
    90         if(name.matches(regEx)&&pwd.matches(regEx)) return true;
    91         else return false;
    92     }
    93 
    94 }
    95 

    4,com.he.pojo里的Account.java,作用是臨時存放并傳遞帳號的各項屬性。
     1 package com.he.pojo;
     2 
     3 public class Account {
     4     private int id;
     5     private String name;
     6     private String pwd;
     7     private String addtime;
     8     
     9     public int getId() {
    10         return id;
    11     }
    12     public void setId(int id) {
    13         this.id = id;
    14     }
    15     
    16     public String getName() {
    17         return name;
    18     }
    19     public void setName(String name) {
    20         this.name = name;
    21     }
    22     
    23     public String getPwd() {
    24         return pwd;
    25     }
    26     public void setPwd(String pwd) {
    27         this.pwd = pwd;
    28     }
    29     
    30     public String getAddtime() {
    31         return addtime;
    32     }
    33     public void setAddtime(String addtime) {
    34         this.addtime = addtime;
    35     }
    36     
    37 }
    38 

    5.com.he.bean里的makeCertpic.java,作用是生成驗證碼的圖片。
     1 package com.he.bean;
     2 
     3 import java.awt.Color;
     4 import java.awt.Font;
     5 import java.awt.Graphics;
     6 import java.awt.image.BufferedImage;
     7 import java.io.IOException;
     8 import java.io.OutputStream;
     9 import java.util.Random;
    10 import javax.imageio.ImageIO;
    11 
    12 /**
    13  * @author dzy 生成驗證碼圖片
    14  */
    15 public class makeCertPic {
    16     // 驗證碼圖片中可以出現的字符集,可根據需要修改
    17     private char mapTable[] = { 'a''b''c''d''e''f''g''h''i',
    18             'j''k''l''m''n''o''p''q''r''s''t''u''v',
    19             'w''x''y''z''0''1''2''3''4''5''6''7''8',
    20             '9' };
    21 
    22     /**
    23      * 功能:生成彩色驗證碼圖片 參數width為生成的圖片的寬度,參數height為生成的圖片的高度,參數os為頁面的輸出流
    24      */
    25     public String getCertPic(int width, int height, OutputStream os) {
    26         if (width <= 0)
    27             width = 60;
    28         if (height <= 0)
    29             height = 20;
    30         BufferedImage image = new BufferedImage(width, height,
    31                 BufferedImage.TYPE_INT_RGB);
    32         // 獲取圖形上下文
    33         Graphics g = image.getGraphics();
    34         // 設定背景色
    35         g.setColor(new Color(0xDCDCDC));
    36         g.fillRect(00, width, height);
    37         // 畫邊框
    38         g.setColor(Color.black);
    39         g.drawRect(00, width - 1, height - 1);
    40         // 取隨機產生的認證碼
    41         String strEnsure = "";
    42         // 4代表4位驗證碼,如果要生成更多位的認證碼,則加大數值
    43         for (int i = 0; i < 4++i) {
    44             strEnsure += mapTable[(int) (mapTable.length * Math.random())];
    45         }
    46         // 將認證碼顯示到圖象中,如果要生成更多位的認證碼,增加drawString語句
    47         g.setColor(Color.black);
    48         g.setFont(new Font("Atlantic Inline", Font.PLAIN, 18));
    49         String str = strEnsure.substring(01);
    50         g.drawString(str, 817);
    51         str = strEnsure.substring(12);
    52         g.drawString(str, 2015);
    53         str = strEnsure.substring(23);
    54         g.drawString(str, 3518);
    55         str = strEnsure.substring(34);
    56         g.drawString(str, 4515);
    57         // 隨機產生10個干擾點
    58         Random rand = new Random();
    59         for (int i = 0; i < 10; i++) {
    60             int x = rand.nextInt(width);
    61             int y = rand.nextInt(height);
    62             g.drawOval(x, y, 11);
    63         }
    64         // 釋放圖形上下文
    65         g.dispose();
    66         try {
    67             // 輸出圖象到頁面
    68             ImageIO.write(image, "JPEG", os);
    69         } catch (IOException e) {
    70             return "";
    71         }
    72         return strEnsure;
    73     }
    74 }
    75 

    6。com.he.servlet里的LoginServlet.java,作用是驗證登錄。
     1 package com.he.servlet;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 import java.security.MessageDigest;
     6 
     7 import javax.servlet.ServletException;
     8 import javax.servlet.http.HttpServlet;
     9 import javax.servlet.http.HttpServletRequest;
    10 import javax.servlet.http.HttpServletResponse;
    11 import javax.servlet.http.HttpSession;
    12 
    13 import com.he.manager.Manager;
    14 
    15 public class LoginServlet extends HttpServlet {
    16     public void doGet(HttpServletRequest request, HttpServletResponse response)
    17             throws ServletException, IOException {
    18         PrintWriter out = response.getWriter();
    19         String name = (String) request.getParameter("name");
    20         name = name.trim();            //去掉字符串首尾空格
    21         String pwd = (String) request.getParameter("pwd");        
    22         pwd = pwd.trim();
    23         boolean Check = Manager.CheckForm(name, pwd);        //驗證輸入的帳號密碼是否符合規則
    24         System.out.println(Check);
    25         if (Check) {
    26             // 將密碼轉為MD5加密
    27             try {
    28                 // -------生成MessageDigest對象MD-------
    29                 MessageDigest MD = MessageDigest.getInstance("MD5");
    30                 // --------傳入要計算的字符---------------
    31                 MD.update(pwd.getBytes("UTF8"));
    32                 // --------計算信息摘要----------------
    33                 byte[] pwdMD5Byte = MD.digest();
    34                 pwd = new String(pwdMD5Byte);
    35             } catch (Exception e) {
    36                 e.printStackTrace();
    37             }
    38             String certCode = request.getParameter("certCode");
    39             //查看輸入的帳號密碼是否在數據庫里有記錄
    40             boolean tag = Manager.CheckAccount(name, pwd);
    41             // 執行輸出操作(彈出成功的對話框)
    42             response.setCharacterEncoding("gbk"); // 解決中文顯示問題
    43             HttpSession session = request.getSession();
    44             if (certCode.equals((String) session.getAttribute("certCode"))) {
    45                 if (tag) {
    46                     session.setAttribute("name", name);            //驗證成功的話設置session
    47                     out
    48                             .print("<script language=javascript>alert('Login Succeed!!');window.location.href='SucceedLogin.jsp';</script>");
    49                 } else {
    50                     out
    51                             .print("<script language=javascript>alert('account or password error!!');window.location.href='index.jsp';</script>");
    52                 }
    53             } else {
    54                 out
    55                         .print("<script language=javascript>alert('certCode error!!');window.location.href='index.jsp';</script>");
    56             }
    57         } else {
    58             out
    59                     .print("<script language=javascript>alert('rule error!!');window.location.href='index.jsp';</script>");
    60         }
    61     }
    62 
    63     public void doPost(HttpServletRequest request, HttpServletResponse response)
    64             throws ServletException, IOException {
    65         doGet(request, response);
    66     }
    67 
    68 }

    7。com.he.servlet里的Registe.java作用是進行注冊操作。
     1 package com.he.servlet;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 import java.util.Date;
     6 import java.security.MessageDigest;
     7 import java.text.SimpleDateFormat;
     8 
     9 import javax.servlet.ServletException;
    10 import javax.servlet.http.HttpServlet;
    11 import javax.servlet.http.HttpServletRequest;
    12 import javax.servlet.http.HttpServletResponse;
    13 import javax.servlet.http.HttpSession;
    14 
    15 import com.he.manager.Manager;
    16 import com.he.pojo.Account;
    17 
    18 public class RegisteServlet extends HttpServlet {
    19     public void doGet(HttpServletRequest request, HttpServletResponse response)
    20             throws ServletException, IOException {
    21         Date currTime = new Date(); // 添加帳號的時間
    22         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    23         String time = new String(formatter.format(currTime).getBytes(
    24                 "iso-8859-1")); // 時間格式化
    25         String name = (String) request.getParameter("name");
    26         name = name.trim(); // 去除字符串首尾空格
    27         String pwd = (String) request.getParameter("pwd");
    28         pwd = pwd.trim();
    29         boolean Check = Manager.CheckForm(name, pwd); // 驗證輸入的帳號密碼是否符合規則
    30         System.out.println(Check);
    31         if (Check) {
    32             // 在寫入數據庫之前將密碼轉為MD5加密
    33             try {
    34                 // -------生成MessageDigest對象MD-------
    35                 MessageDigest MD = MessageDigest.getInstance("MD5");
    36                 // --------傳入要計算的字符---------------
    37                 MD.update(pwd.getBytes("UTF8"));
    38                 // --------計算信息摘要----------------
    39                 byte[] pwdMD5Byte = MD.digest();
    40                 pwd = new String(pwdMD5Byte);
    41             } catch (Exception e) {
    42                 e.printStackTrace();
    43             }
    44             boolean tag = Manager.HasAccount(name); // 查看數據庫里有沒相同的用戶名記錄
    45             if (tag) {
    46                 response.setCharacterEncoding("gbk"); // 解決中文顯示問題
    47                 PrintWriter out = response.getWriter();
    48                 out
    49                         .print("<script language=javascript>alert('用戶名已被占用');window.location.href='registe.jsp';</script>");
    50             } else {
    51                 // new 一個Account對象,并將表單傳過來的值填充它
    52                 Account account = new Account();
    53                 account.setName(request.getParameter("name"));
    54                 account.setPwd(pwd);
    55                 account.setAddtime(time);
    56                 // 執行持久化操作,保存到數據庫
    57                 Manager manager = new Manager();
    58                 manager.addAccount(account);
    59                 // 執行輸出操作(彈出成功的對話框)
    60                 response.setCharacterEncoding("gbk"); // 解決中文顯示問題
    61                 HttpSession session = request.getSession();
    62                 session.setAttribute("name", request.getParameter("name"));
    63                 PrintWriter out = response.getWriter();
    64                 out
    65                         .print("<script language=javascript>alert('注冊成功!');window.location.href='SucceedLogin.jsp';</script>");
    66             }
    67         } else {
    68             response.setCharacterEncoding("gbk"); // 解決中文顯示問題
    69             PrintWriter out = response.getWriter();
    70             out
    71                     .print("<script language=javascript>alert('帳號或密碼必須是四到八位的數字或字母!!');window.location.href='registe.jsp';</script>");
    72         }
    73     }
    74 
    75     public void doPost(HttpServletRequest request, HttpServletResponse response)
    76             throws ServletException, IOException {
    77         doGet(request, response);
    78     }
    79 
    80 }
    81 

    8。index.jsp,登錄界面。
    <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
    <%
    String path 
    = request.getContextPath();
    String basePath 
    = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      
    <head>
        
    <base href="<%=basePath%>">
        
        
    <title>My JSP 'index.jsp' starting page</title>
        
    <meta http-equiv="pragma" content="no-cache">
        
    <meta http-equiv="cache-control" content="no-cache">
        
    <meta http-equiv="expires" content="0">    
        
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        
    <meta http-equiv="description" content="This is my page">
        
    <!--
        
    <link rel="stylesheet" type="text/css" href="styles.css">
        
    -->
      
    </head>
          
    <script language="JavaScript">

        function check()
        {
           
    if( form.name.value=="" )
            {
               alert(
    "\請輸入您的用戶名!!")
                   form.name.focus();
               
    return false;
            }
        

        
           
           
    if( form.pwd.value==""  )
               {
                   alert(
    "\請輸入您的登陸密碼!!")
                       form.pwd.focus();
                   
    return false;
           }
        
    return true;
        }

        
    </script>
      
      
      
    <body>
        
    <h1>用戶登錄</h1>
        
    <form name="form" id="form" onSubmit="return check()" method="post" action="LoginServlet">
            
    <p>&nbsp;&nbsp;號:<input type="text" name="name" /></p>
            
    <p>&nbsp;&nbsp;碼:<input type="password" name="pwd" /></p>
            
    <P>驗證碼:<input type="text" name="certCode" /><img src="makeCertPic.jsp" /></P>
            
    <p><input type="submit" name="submit" value="登錄">
                
    <input type="button" onClick="location='registe.jsp'" value="注冊" class="btn"/>
            
    </p>
        
    </form>
      
    </body>
    </html>

    9。registe.jsp,注冊界面
    <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
    <%
    String path 
    = request.getContextPath();
    String basePath 
    = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      
    <head>
        
    <base href="<%=basePath%>">
        
        
    <title>注冊</title>
        
    <!--
        
    <link rel="stylesheet" type="text/css" href="styles.css">
        
    -->

      
    </head>
      
        
    <script language="JavaScript">

        
    function check()
        {
           
    if( form.name.value=="" )
            {
               alert(
    "\請輸入您的用戶名!!")
                   form.name.focus();
               
    return false;
            }
        

        
           
           
    if( form.pwd.value==""  )
               {
                   alert(
    "\請輸入您的登陸密碼!!")
                       form.pwd.focus();
                   
    return false;
           }
           
    if(form.repwd.value=="")
               {
                       alert(
    "\請輸入您的第二次密碼!!")
                           form.repwd.focus();
                       
    return false;
               }
           
    if(form.pwd.value!=form.repwd.value)
               {
                       alert(
    "\兩次輸入的密碼不一致!!")
                           form.repwd.focus();
                       
    return false;
           }
        
    return true;
        }

        
    </script>
      
      
    <body>
        
    <h1>注冊</h1>
       
    <form name="form" id="form" onSubmit="return check()" method="post" action="RegisteServlet">
        
    <p>帳號:<input name="name" type="text" /></p>
        
    <P>密碼:<input name="pwd" type="password" /></P>
        
    <p>再次輸入密碼:<input name="repwd" type="password"></p>
        
    <p><input type="submit" value="注冊" /> <input type="reset" value="重置" /></p>
       
    </form>
      
    </body>
    </html>

    10。makeCertpic.jsp 驗證碼圖片的
    <%@page contentType="image/jpeg" pageEncoding="gbk" %>
    <jsp:useBean id="image" scope="page" class="com.he.bean.makeCertPic" />
    <%
        String str 
    = image.getCertPic(0,0,response.getOutputStream());
        
    // 避免getWriter()和responsegetOutputStream()沖突而產生異常
        out.clear();
        out 
    = pageContext.pushBody();
        
    // CREATE SESSION
        session.setAttribute("certCode", str); 
    %>

    11.SucceedLogin.jsp 登錄成功的頁面
     1 <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
     2 <%@ include file="CheckLogin.jsp" %>
     3 <%
     4 String path = request.getContextPath();
     5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     6 %>
     7 
     8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     9 <html>
    10   <head>
    11     <base href="<%=basePath%>">
    12     
    13     <title>SucceedLogin</title>
    14     
    15     <meta http-equiv="pragma" content="no-cache">
    16     <meta http-equiv="cache-control" content="no-cache">
    17     <meta http-equiv="expires" content="0">    
    18     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    19     <meta http-equiv="description" content="This is my page">
    20     <!--
    21     <link rel="stylesheet" type="text/css" href="styles.css">
    22     -->
    23 
    24   </head>
    25   
    26   <body>
    27      <h1>歡迎您</h1>
    28     ${sessionScope.name}
    29   </body>
    30 </html>
    31 

    12。CheckLogin.jsp 進行未登錄就進入登錄成功的界面的驗證
    1 
    2 <%
    3     if (session.getAttribute("name"== null
    4             || session.getAttribute("name").toString().length() == 0) {
    5         response.sendRedirect(request.getContextPath() + "/error.jsp");
    6     }
    7 %>

    13.web.xml文件
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
        xmlns
    ="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation
    ="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    >
      
    <servlet>
        
    <servlet-name>RegisteServlet</servlet-name>
        
    <servlet-class>com.he.servlet.RegisteServlet</servlet-class>
      
    </servlet>
      
    <servlet>
        
    <servlet-name>LoginServlet</servlet-name>
        
    <servlet-class>com.he.servlet.LoginServlet</servlet-class>
      
    </servlet>
      


      
    <servlet-mapping>
        
    <servlet-name>RegisteServlet</servlet-name>
        
    <url-pattern>/RegisteServlet</url-pattern>
      
    </servlet-mapping>
      
    <servlet-mapping>
        
    <servlet-name>LoginServlet</servlet-name>
        
    <url-pattern>/LoginServlet</url-pattern>
      
    </servlet-mapping>
      
    <welcome-file-list>
        
    <welcome-file>index.jsp</welcome-file>
      
    </welcome-file-list>
    </web-app>

    14.到此,我的注冊登錄系統基本完成了。新人作品,希望大家批評指正。


    此文為原創,如有轉載請注明出處http://www.tkk7.com/gdhqs/。如有錯誤,請大家批評指正,謝謝!


    評論

    # re: JSP+JAVABEAN+SERVLE開發的登錄系統  回復  更多評論   

    2008-11-17 12:24 by 心夢帆影
    好,寫得非常好,非常不錯!支持一下!

    # re: JSP+JAVABEAN+SERVLE開發的登錄系統  回復  更多評論   

    2008-11-18 18:35 by foolgirl
    支持支持~~~~~~~~~~~~~~~~~~~~~~~~~~~~~··

    # re: JSP+JAVABEAN+SERVLE開發的登錄系統  回復  更多評論   

    2010-04-28 14:03 by Puge
    完整源碼能發我一份嗎? 謝啦~
    zhaowyvern@yahoo.cn

    # re: JSP+JAVABEAN+SERVLE開發的登錄系統  回復  更多評論   

    2010-05-01 22:27 by SIU SOO MUN
    NB NAFFY~~~~NB NAFFY~~~~NB NAFFY~~~~NB NAFFY~~~~

    # re: JSP+JAVABEAN+SERVLE開發的登錄系統[未登錄]  回復  更多評論   

    2013-06-10 15:33 by Emma
    問一下,我用了樓主的登錄系統,怎么說表名附近有語法錯誤呢?還說rs......有空指針異常

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 在线免费观看毛片网站| a级黄色毛片免费播放视频| 亚洲一区免费在线观看| 亚洲av伊人久久综合密臀性色| 毛片免费视频播放| 成人国产mv免费视频| 中日韩亚洲人成无码网站| 最近免费中文字幕高清大全 | 国产精品深夜福利免费观看| 亚洲ts人妖网站| 成年私人影院免费视频网站| 97se亚洲国产综合自在线| 男男AV纯肉无码免费播放无码 | 91精品视频在线免费观看| 亚洲美女视频免费| 色se01短视频永久免费| 亚洲欧美aⅴ在线资源| 国产乱人免费视频| 免费又黄又爽又猛大片午夜| 国产亚洲情侣一区二区无| 成全在线观看免费观看大全| 亚洲综合久久1区2区3区| 四虎永久在线精品免费网址| 国产精品亚洲专区无码牛牛| 亚洲精品国产综合久久一线| 久久精品视频免费| 激情综合亚洲色婷婷五月APP| 国产精品视频免费一区二区三区| 免费夜色污私人影院网站电影 | 国产精品入口麻豆免费观看| 亚洲日韩一区二区一无码| 深夜国产福利99亚洲视频| 黄网站色视频免费在线观看的a站最新 | 亚洲黄色在线观看网站| 毛片在线看免费版| 一级特级aaaa毛片免费观看| 久久精品国产精品亚洲蜜月| A级毛片内射免费视频| 一级女人18片毛片免费视频 | 中文字幕在线日亚洲9| 亚洲狠狠爱综合影院婷婷|