UserManager


剛剛學習servlet,打算學做一個小項目把前邊學到的知識做一個總結.

由於只是實現了一些簡單的功能,所以美工就湊合着看吧(美工其實也不太會).

首先項目整體架構如圖

項目准備工作:

要用到mysql數據庫,所以要導入

直接復制在webroot/web-inf/lib下

然后創建Users庫,user表

CREATE DATABASE Users;
USE Users;
CREATE TABLE USER(
	id INT PRIMARY KEY AUTO_INCREMENT,//主鍵
	username VARCHAR(32) NOT NULL,//用戶名
	email VARCHAR(64) NOT NULL,//郵箱
	grade INT DEFAULT 1,//級別
	PASSWORD VARCHAR(32) NOT NULL//密碼

);

  事先插入一些用戶

INSERT INTO USER(username,email,PASSWORD) VALUES ("mahui","1130804967@sohu.com","123"),
("aaaa","1130804967@sina.com","123"),
("bbbb","1130804967@baidu.com","123"),
("cccc","1130804967@google.com","123"),
("dddd","1130804967@163.com","123");

 

 

1.LoginServlet.java

package com.mh.view;

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;

public class LoginServlet extends HttpServlet {

    

    private static final long serialVersionUID = 1L;


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset =UTF-8");
        request.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        
        out.println("<h1>登錄界面<h1>");
        
        out.println("<form action  = '/UsersManager/LoginClServlet' method = 'post'>");//form表單提交到LoginClServlet.java
        out.println("I D:<input type = 'text' name = 'id'/><br/>");
        out.println("密 碼:<input type = 'password' name = 'password'/><br/>");
        out.println("<input type = 'submit' value = 'Submit'/>");
        out.println("</form>");
        String errInfo =(String)request.getAttribute("err");//第一次該屬性為null,什么都不顯示
        if(errInfo != null){
            out.println("<font color = 'red'>"+errInfo+"<font>");//如果errinfo不為空,則輸出錯誤信息
        }
        
    }

    
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

    
    }

    
    
}

2.LoginClServlet.java(該servlet用於簡易的處理用戶登錄信息)

package com.mh.controller;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

public class LoginClServlet extends HttpServlet {


    private static final long serialVersionUID = 1L;
    
    public final static String URL = "jdbc:mysql://localhost:3306/Users";//建立連接
    
    public final static String USER = "root";//用戶
    
    public final static String PASSWORD = "334400";//密碼


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        
        String id = request.getParameter("id");//獲取id
        String pass = request.getParameter("password");//獲取密碼
        
        
        Connection conn = null;
        PreparedStatement prep = null;
        ResultSet set = null;
        try{
            Class.forName("com.mysql.jdbc.Driver");//加載驅動
            
            conn = DriverManager.getConnection(URL,USER,PASSWORD);//獲得與數據庫的連接對象conn
            
            prep = conn.prepareStatement("select * from User where id = ? and password = ?");//預處理語句
            
            prep.setString(1,id);//第一個?賦值
            prep.setString(2,pass);//第二個?賦值
            
            set = prep.executeQuery();//執行查詢
            
            if(set.next()){//如果結果集合存在用戶
                request.getRequestDispatcher("/MainFrame").forward(request,response);//轉發到/MainFrame主頁面
            }else{
                request.setAttribute("err", "用戶ID或密碼有誤!");//如果不存在該用戶,則設置err屬性的信息
                request.getRequestDispatcher("/LoginServlet").forward(request, response);//轉發到登錄界面
            }
            
            
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //以下為關閉資源
            if(set != null){
                try {
                    set.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(prep != null){
                try {
                    prep.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        
    }

    
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        doGet(request,response);
    }

}

 

3.MainFrame.java

package com.mh.view;

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;

public class MainFrame extends HttpServlet {


	private static final long serialVersionUID = 1L;


	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;charset=UTF-8");
		request.setCharacterEncoding("utf-8");
		PrintWriter out = response.getWriter();
		//這里沒什么好講的,都是一些鏈接
		out.println("<h1>登陸成功<h1>");
		out.println("<h3>請選擇一下操作<h3>");
		out.println("<a href = '/UsersManager/ManageUsers'>管理用戶</a>");//跳轉到管理界面
		out.println("<a href = '/UsersManager/AddUserMain'>添加用戶</a>");//添加用戶
		out.println("<a href = '/UsersManager/SelectUsers'>查詢用戶</a>");//查詢
		out.println("<a href = '/UsersManager/LoginServlet'>安全退出</a>");//退出
	
	}

	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request,response);

	}

}

  4.跳轉到管理用戶頁面,這里邊是邏輯比較復雜的一個頁面,因為頁面和邏輯沒有實現分離,還有里邊使用了分頁,mysql的分頁是依靠limit來實現

package com.mh.view;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

public class ManageUsers extends HttpServlet {

    
    
    private static final long serialVersionUID = 1L;
    
    public final static String URL = "jdbc:mysql://localhost:3306/Users";
    
    public final static String USER = "root";
    
    public final static String PASSWORD = "334400";



    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        //以下四行代碼實現了跳轉功能,document.getElementById('pageNow')首先獲得你要跳轉的頁面,然后在本頁面(_self參數控制)打開一個新的頁面,並把page當成參數傳給本頁面
        out.print("<script type = 'text/javascript' language = 'javascript'>");
        out.print("function go(){var page = document.getElementById('pageNow');"
                + "window.open('/UsersManager/ManageUsers?page='+page.value,'_self');}");
        out.print("</script>");
        
        
        
        out.println("<h1>用戶管理</h1><a href = '/UsersManager/MainFrame'>主頁面</a><hr/>");
        
        out.println("<table border = 1 width = 500px>");
        
        out.println("<tr><th>ID</th><th>用戶名</th><th>Email</th><th>級別</th></tr>");
        
        Connection conn = null;
        PreparedStatement prep = null;
        ResultSet set = null;
        try{
            Class.forName("com.mysql.jdbc.Driver");
            
            conn = DriverManager.getConnection(URL,USER,PASSWORD);
            
            prep = conn.prepareStatement("select count(id) from User ");//獲得總共有多少條記錄,為分頁做准備
            
            set = prep.executeQuery();
            
            set.next();//這里要注意,因為光標是指向集合第一條記錄的前面,所以要執行next()方法
            int rowCount = set.getInt(1);//把總數賦值給rowcount
            
            int pageSize = 3;//每頁顯示幾條記錄
            
            int pageCount = (rowCount-1)/pageSize + 1;//總共有幾頁(這里用到了一個小算法)
            
            int pageCurr = 1;//當前頁
            
            String curr_Page = (String) request.getParameter("page");//這里是為了獲取用戶點擊下邊的第i頁跳轉到本頁面提交的page參數
            
            
            if(curr_Page != null){
                pageCurr = Integer.parseInt(curr_Page);//第一次該參數為null,以后根據用戶點擊的頁數而定
            }
            
            prep.close();//先關閉
            set.close();
            
            String sql = "select * from User limit "+(pageCurr-1)*pageSize+ ","+pageSize;//這里分頁用到了limit,使用limit (第幾頁-1)*每頁顯示的記錄,每頁顯示記錄數
            prep = conn.prepareStatement(sql);//再次預處理新的sql
            
            set = prep.executeQuery();//執行
            
        while(set.next()){//這里得到的set結果集是一個集合,所以使用while循環
            out.println("<tr><td>"+set.getInt(1)+"</td><td>"
        +set.getString(2)+"</td><td>"+set.getString(3)
        +"</td><td>"+set.getString(4)+"</td></tr>");
        }
            out.println("</table><br/>");
            if(pageCurr != 1){
                out.print("<a href = '/UsersManager/ManageUsers?page="+(pageCurr-1)+"'>上一頁 </a>");
            }
            //這里是表格的下邊把總頁數以for循環的方式創建超鏈接
            for(int i = 1; i <= pageCount; i++){////如果不等於第一頁,則顯示,否則隱藏
                out.print("<a href = '/UsersManager/ManageUsers?page="+i+"'><"+i+"></a>");
            }
            if(pageCurr != pageCount){//如果不等於最后一頁,則顯示,否則隱藏
                out.print("<a href = '/UsersManager/ManageUsers?page="+(pageCurr+1)+"'>下一頁 </a>");
            }
            
            out.print("當前頁"+pageCurr+"/總頁數"+pageCount);
            //下邊是一個跳轉功能,要用到javascript,給按鈕增加一個點擊事件,一點擊該按鈕,則調用go()方法,該方法在代碼的頭部
            out.print("<br/>跳轉到");
            out.print("<input type = 'text' size = '20px' id = 'pageNow'/>");
            out.print("&nbsp;&nbsp;<input type = 'button' value = 'GO' onclick = 'go()'/>");
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //關閉資源
            if(set != null){
                try {
                    set.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(prep != null){
                try {
                    prep.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request,response);
    
    }

}

5.AddUserMain.java 沒什么好說的

package com.mh.view;

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;

public class AddUserMain extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        
        out.print("<h1>添加用戶</h1><br/><hr/>");
        out.print("<form action = '/UsersManager/AddUserHandle' method = 'post'>Name:<input type = 'text' name = 'name'/><br/>");
        out.print("Email:<input type = 'text' name = 'email'/><br/>");
        out.print("PassWord:<input type = 'password' name = 'password'/><br/>");
        out.print("<input type = 'submit' value = 'Submit'/>");
        
        out.print("</form>");
        
        
    }
        
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        doGet(request,response);
    }

}

6.AddUserHandle.java

package com.mh.controller;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

public class AddUserHandle extends HttpServlet {


    private static final long serialVersionUID = 1L;
    
    public final static String URL = "jdbc:mysql://localhost:3306/Users";
    
    public final static String USER = "root";
    
    public final static String PASSWORD = "334400";

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        
        String username = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8") ;//獲取用戶名,這樣寫是為了用戶輸入的中文亂碼
        String email = request.getParameter("email");//獲取郵箱
        String password = request.getParameter("password");//獲取密碼
        
        int row = 0;
        Connection conn = null;
        PreparedStatement prep = null;
        ResultSet set = null;
        try{
            Class.forName("com.mysql.jdbc.Driver");
            
            conn = DriverManager.getConnection(URL,USER,PASSWORD);
            
            prep = conn.prepareStatement("insert into User (username,email,password)values(?,?,?)");//預處理
            
            prep.setString(1,username);//賦值
            prep.setString(2,email);
            prep.setString(3, password);
            
            row = prep.executeUpdate();//執行更新,返回一個整數
            
            if(row != 0){//插入成功返回到ManageUsers.java
                request.getRequestDispatcher("/ManageUsers").forward(request,response);
            }else{
                //錄入失敗返回本界面
                request.getRequestDispatcher("/AddUserMain").forward(request, response);
            }
            
            
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //關閉資源
            if(set != null){
                try {
                    set.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(prep != null){
                try {
                    prep.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        
    
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        doGet(request,response);
    }

}

7.SelectUsers.java

package com.mh.view;

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;

public class SelectUsers extends HttpServlet {

    private static final long serialVersionUID = 1L;


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.print("<h1>查找用戶</h1><br/><hr/>");
        out.print("&nbsp;&nbsp;&nbsp;&nbsp;<a href = '/UsersManager/MainFrame'>主頁面</a>");
        out.print("<form action = '/UsersManager/SelectHandle' method = 'post'>");//跳轉到SelectHandle.java
        out.print("請輸入關鍵字&nbsp;&nbsp;<input type = 'text' size =  '10px' name = 'key'/>");
        out.print("&nbsp;&nbsp;<input type = 'submit' value = '查找'/>");
        out.print("</form>");
    }

    
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        doGet(request,response);
    }

}

 

8.SelectHandle.java

package com.mh.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

public class SelectHandle extends HttpServlet {

    private static final long serialVersionUID = 1L;
    
    public final static String URL = "jdbc:mysql://localhost:3306/Users";
    
    public final static String USER = "root";
    
    public final static String PASSWORD = "334400";

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");
        
        PrintWriter out = response.getWriter();
        
        String key = new String(request.getParameter("key").getBytes("ISO-8859-1"),"UTF-8") ;
        
        Connection conn = null;
        PreparedStatement prep = null;
        ResultSet set = null;
        try{
            Class.forName("com.mysql.jdbc.Driver");
            
            conn = DriverManager.getConnection(URL,USER,PASSWORD);
            
            prep = conn.prepareStatement("select * from User where username like ?");//模糊查詢username
            
            prep.setString(1,"%"+key+"%");//模糊查詢格式
            set = prep.executeQuery();
            out.print("<h1>查詢結果</h1><br/><hr/>");
            out.print("&nbsp;&nbsp;&nbsp;&nbsp;<a href = '/UsersManager/SelectUsers'>返回</a>");
            out.println("<table border = 1 width = 500px>");
            
            out.println("<tr><th>ID</th><th>用戶名</th><th>Email</th><th>級別</th></tr>");
            
            while(set.next()){//返回集合,遍歷
                out.println("<tr><td>"+set.getInt(1)+"</td><td>"
                        +set.getString(2)+"</td><td>"+set.getString(3)
                        +"</td><td>"+set.getString(4)+"</td></tr>");
            }
            out.println("</table><br/>");
            
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            if(set != null){
                try {
                    set.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(prep != null){
                try {
                    prep.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        
    }

    
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        doGet(request,response);
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM