• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • JavaWeb(JavaEE初學小項目-BookStore)Oracle 11g+MyEclipse 【提供源碼】

    項目要求

    創建一個名為BookStore的數據庫
    /1. 在BookStore數據庫中添加UserInfo表,包含如下字段:賬號、密碼、真實姓名、性別、年齡、QQ號碼、E-mail地址等,實現用戶注冊、修改密碼和登錄三個功能,具體要求如下:
    (1) 提供一個DBUtil類用于連接數據庫;
    (2) 提供一個4 類用于操作UserInfo表,封裝數據庫操作;
    (3) 提供一個UserInfoDTO類用于在注冊時傳輸用戶信息;
    (4) 三個功能對應三個獨立的Servlet,Servlet名字自定;
    (5) 注冊時需要確保賬號的唯一性;
    (6) 根據賬號修改密碼,需要輸入舊密碼驗證用戶身份,舊密碼錯誤不能修改密碼,新密碼需要輸入兩次,修改成功后在數據庫中保存新密碼;
    (7) 注冊時密碼需要輸入兩次,兩次密碼必須一致(使用JavaScript實現);
    (8) 注冊、登錄和修改密碼的JSP頁面自行設計,可增加相應的成功和失敗提示頁面;
    (9) 所有的類都必須放在相應的包中,包的命名可參考如下規范:
    com.sunny.bookstore.util;
    com.sunny.bookstore.dao;
    com.sunny.bookstore.dto;
    com.sunny.bookstore.servlet

    項目整體概述
    在這里插入圖片描述

    至于配置tomcat方面,可以參考一下我以前寫的這篇博客~

    最新的Eclipse安裝Web/JavaEE插件+Tomcat安裝+Web應用系統開發環境的搭建(中)


    項目界面展示

    由于一段時間沒有寫Web項目了,很多都生疏了,界面也就比較簡單,老師給我們布置的這次實驗也是為了讓我的知識撿回來,別全還給他了
    在這里插入圖片描述
    在這里插入圖片描述

    UserInfoDAO.java

    package com.sunny.bookstore.dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.sunny.bookstore.dto.UserInfoDTO;
    import com.sunny.bookstore.util.DButil;
    
    public class UserInfoDAO {
    	//登錄
    	public boolean findUserByAccountAndPassword(String userAccount, String userPassword) {
    		DButil db = new DButil();
    		Connection conn = null;
    		PreparedStatement state = null;
    		ResultSet rs = null;
    		try {
    			conn = db.getConnection();
    			String sql = "select * from UserInfo where userAccount=? and userPassword=?";
    			state = conn.prepareStatement(sql);
    			state.setString(1, userAccount);
    			state.setString(2,userPassword);
    			rs = state.executeQuery();
    			if(rs.next()) {
    				return true;
    			}
    			else {
    				return false;
    			}
    		}
    		catch(Exception e) {
    			
    		}
    		return false;
    	}
    	/**
    	 * 1.添加數據到UserInfo表中
    	 * 傳遞參數為dto
    	 * 返回值為boolean
    	 */
    	public boolean insertIntoUserInfo(UserInfoDTO dto)
        {
    	 	DButil db = new DButil();
        	Connection conn = db.getConnection();
    		PreparedStatement statement = null;
    	try {
        	String sql="insert into UserInfo ( useraccount, userpassword, username,sex, age, qq, email) values( ?,?,?,?,?,?,?)";
    		statement = conn.prepareStatement(sql);
    		statement.setString(1, dto.getUserAccount());
    		statement.setString(2, dto.getUserPassword());
    		statement.setString(3, dto.getUserName());
    		statement.setString(4, dto.getSex());
    		statement.setString(5, dto.getAge());
    		statement.setString(6, dto.getQQ());
    		statement.setString(7, dto.getEmail());
    
    		int result=statement.executeUpdate();
    		if(result>0)
    		{
    			System.out.println("插入到UserInfo表成功!");
    			return true;
    		}
    	}
    	catch(Exception e1) {
    		e1.printStackTrace();
    		System.out.println(e1.getMessage());
    	}
    	finally 
    	{
    		try {
    			statement.close();
    			conn.close();
    		}
    		catch(Exception e2) {
    			System.out.println(e2.getMessage());
    		}
    	}
    	return false;
        
       }
    	/**
    	 * 2.從數據庫導入數據(全查找UserInfo表信息)
    	 * @return
    	 */
    	public  List<UserInfoDTO> findUserInfoAll() {
    		DButil db = new DButil();
    		Connection con = db.getConnection();
    		PreparedStatement pstmt;
    		ResultSet rs;
    		List<UserInfoDTO> list = new ArrayList<UserInfoDTO>();
    		try {
    			String sql = "select * from UserInfo";
    			pstmt = con.prepareStatement(sql);
    			rs = pstmt.executeQuery();// 執行SQL語句
    			while (rs.next()) {
    				UserInfoDTO dto = new UserInfoDTO();
    				dto.setUserAccount(rs.getString("useraccount"));
    				dto.setUserPassword(rs.getString("userpassword"));
    				dto.setUserName(rs.getString("username"));
    				dto.setSex(rs.getString("sex"));
    				dto.setAge(rs.getString("age"));
    				dto.setQQ(rs.getString("qq"));
    				dto.setEmail(rs.getString("email"));
    				list.add(dto);
    			}
    			// 關閉,釋放資源
    			rs.close();
    			pstmt.close();
    			con.close();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return list;
    	}
    	/**
    	 * 3.刪除功能
    	 * 根據賬戶來刪除
    	 */
    	
    	public boolean deleteUserInfo(UserInfoDTO dto){
    		DButil db = new DButil();
    		Connection con = db.getConnection();
    		PreparedStatement pstmt = null;
            String sql = "delete from UserInfo where useraccount = ? ";
            
            try{
            	pstmt = con.prepareStatement(sql);
            	pstmt.setString(1, dto.getUserAccount());
            	int result=pstmt.executeUpdate();
            	if(result>0)
        		{
        			System.out.println("刪除"+dto.getUserAccount()+"賬戶成功!");
        			return true;
        		}
            	
            }catch (SQLException e){
                e.printStackTrace();
            }
            finally 
        	{
        		try {
        			pstmt.close();
        			con.close();
        		}
        		catch(Exception e2) {
        			System.out.println(e2.getMessage());
        		}
        	}
            return false;
        }
    	/**
    	 * 4.通過賬號來查詢密碼
    	 * 傳入參數為userAccount
    	 */
    	public String findPassWordByUserAccount (String userAccount) {
    		DButil db = new DButil();
    		Connection con = db.getConnection();
    		PreparedStatement pstmt;
    		ResultSet rs;
    		String res="";
    		try {
    			String sql = "select * from userinfo where userAccount=?";
    			pstmt = con.prepareStatement(sql);
    			pstmt.setString(1, userAccount);
    			rs = pstmt.executeQuery();// 執行SQL語句
    			if (rs.next()) {
    				res=rs.getString("userpassword");
    			}
    			// 關閉,釋放資源
    			rs.close();
    			pstmt.close();
    			con.close();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return res;
    	}
    	
    	public boolean UpdateByUserAccount(String  useraccount,String userPasswordNew){
    		DButil db = new DButil();
    		Connection con = db.getConnection();
    		try {
    			String sql="\r\n" + 
    					"update userinfo set  userpassword= ? where useraccount=?";
    			PreparedStatement pstmt=con.prepareStatement(sql);
    			pstmt.setString(1, userPasswordNew);
    			pstmt.setString(2, useraccount);
    			
    			int res=pstmt.executeUpdate();
    			if(res>0){
    				System.out.println("更新數據成功");
    				return true;
    			}
    			pstmt.close();
    			con.close();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		
    		return false;
    	}
    	
    }
    

    DButil.java

    package com.sunny.bookstore.util;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    /**
     * util工具類
     * @author yangchaoyi
     *
     */
    public class DButil {
        //1、執行靜態方法,加載數據庫驅動
        static {
            try {
                System.out.println("正在加載數據庫驅動...");
                System.out.println("Class.forName('oracle.jdbc.driver.OracleDriver');");
    
                Class.forName("oracle.jdbc.driver.OracleDriver");//這邊參數的意義,url:jdbc數據庫網址 user:用戶名(String類型) password:密碼(String類型)[這邊的數據庫密碼和用戶名填寫自己的]。同樣由于getConnection方法會拋出SQLException,要使用try-catch
    
                System.out.println("已加載數據庫驅動!!!\n");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
        //2、創建數據庫連接的方法
        public Connection getConnection() {
            Connection connection;
            try {
                System.out.println("正在連接到數據庫...");
                System.out.println("connection = DriverManager.getConnection('jdbc:oracle:thin:@localhost:1521:orcl', 'scott', 'ycy');");
    
                connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "ycy");///這邊參數的意義,url:jdbc數據庫網址 user:用戶名 password:密碼。同樣由于getConnection方法會拋出SQLException,要使用try-catch
    
                System.out.println("已連接到scott數據庫!!!\n");
                return connection;
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return null;
        }
        //3、關閉數據庫連接,釋放JDBC資源的方法
        public void closeConnection(Connection connection) {
            if (connection != null) {
                try {
                    System.out.println("準備釋放jdbc資源,斷開數據庫連接...");
                    System.out.println("connection.close();");
    
                    connection.close();//立即釋放jdbc資源,而不是等自動釋放
    
                    System.out.println("已斷開數據庫連接并且釋放了jdbc資源\n");
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    
        }
    }
    

    changePassWordServlet.java

    package com.sunny.bookstore.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 com.sunny.bookstore.dao.UserInfoDAO;
    
    public class changePassWordServlet extends HttpServlet {
    
    	/**
    		 * Constructor of the object.
    		 */
    	public changePassWordServlet() {
    		super();
    	}
    
    	/**
    		 * Destruction of the servlet. <br>
    		 */
    	public void destroy() {
    		super.destroy(); // Just puts "destroy" string in log
    		// Put your code here
    	}
    
    	/**
    		 * The doGet method of the servlet. <br>
    		 *
    		 * This method is called when a form has its tag value method equals to get.
    		 * 
    		 * @param request the request send by the client to the server
    		 * @param response the response send by the server to the client
    		 * @throws ServletException if an error occurred
    		 * @throws IOException if an error occurred
    		 */
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    		doPost(request,response);
    	}
    
    	/**
    		 * The doPost method of the servlet. <br>
    		 *
    		 * This method is called when a form has its tag value method equals to post.
    		 * 
    		 * @param request the request send by the client to the server
    		 * @param response the response send by the server to the client
    		 * @throws ServletException if an error occurred
    		 * @throws IOException if an error occurred
    		 */
    	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		 response.setContentType("text/html;charset=utf-8"); 
    		 request.setCharacterEncoding("utf-8");
    		 response.setCharacterEncoding("utf-8");
    		 PrintWriter out=response.getWriter();
    		 String userAccount = request.getParameter("userAccount");
    		 
    		 System.out.println(userAccount);
    		 
    		 String userPasswordOld = request.getParameter("userPasswordOld");
    		 String userPasswordNew = request.getParameter("userPasswordNew");
    		 String userPasswordNew2 = request.getParameter("userPasswordNew2");
    		 UserInfoDAO dao=new UserInfoDAO();
    		 String paw=dao.findPassWordByUserAccount(userAccount);
    		
    		 System.out.println("舊密碼:"+paw);
    		 
    		 if(paw.equals(userPasswordOld)){
    			 out.print("<script language='javascript'>alert('賬號驗證通過');window.location.href='changePassWord.jsp';</script>");
    			 System.out.println("賬號驗證通過");
    			 dao.UpdateByUserAccount(userAccount, userPasswordNew);
    			 response.sendRedirect("success.jsp");
    		 }
    		 else
    		 {
    			 response.sendRedirect("changePassWord.jsp");
    		 }
    	}
    
    	/**
    		 * Initialization of the servlet. <br>
    		 *
    		 * @throws ServletException if an error occurs
    		 */
    	public void init() throws ServletException {
    		// Put your code here
    	}
    
    }
    

    LoginServlet.java

    package com.sunny.bookstore.servlet;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.sunny.bookstore.dao.UserInfoDAO;
    
    public class LoginServlet extends HttpServlet {
    
    	/**
    		 * Constructor of the object.
    		 */
    	public LoginServlet() {
    		super();
    	}
    
    	/**
    		 * Destruction of the servlet. <br>
    		 */
    	public void destroy() {
    		super.destroy(); // Just puts "destroy" string in log
    		// Put your code here
    	}
    
    	/**
    		 * The doGet method of the servlet. <br>
    		 *
    		 * This method is called when a form has its tag value method equals to get.
    		 * 
    		 * @param request the request send by the client to the server
    		 * @param response the response send by the server to the client
    		 * @throws ServletException if an error occurred
    		 * @throws IOException if an error occurred
    		 */
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    		doPost(request,response);
    	}
    
    	/**
    		 * The doPost method of the servlet. <br>
    		 *
    		 * This method is called when a form has its tag value method equals to post.
    		 * 
    		 * @param request the request send by the client to the server
    		 * @param response the response send by the server to the client
    		 * @throws ServletException if an error occurred
    		 * @throws IOException if an error occurred
    		 */
    	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    		String userAccount = request.getParameter("userAccount");
    		String userPassword = request.getParameter("userPassword");
    		
    		UserInfoDAO dao = new UserInfoDAO();
    		boolean result = dao.findUserByAccountAndPassword(userAccount, userPassword);
    		
    		if(result) {
    			response.sendRedirect("success.jsp");
    		}
    		else {
    			response.sendRedirect("error.jsp");
    		}
    	}
    
    	/**
    		 * Initialization of the servlet. <br>
    		 *
    		 * @throws ServletException if an error occurs
    		 */
    	public void init() throws ServletException {
    		// Put your code here
    	}
    
    }
    
    

    RegisterServlet.java

    package com.sunny.bookstore.servlet;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.sunny.bookstore.dao.UserInfoDAO;
    import com.sunny.bookstore.dto.UserInfoDTO;
    //@WebServlet("/RegisterServlet") 
    public class RegisterServlet extends HttpServlet {
    
    	/**
    		 * Constructor of the object.
    		 */
    	public RegisterServlet() {
    		super();
    	}
    
    	/**
    		 * Destruction of the servlet. <br>
    		 */
    	public void destroy() {
    		super.destroy(); // Just puts "destroy" string in log
    		// Put your code here
    	}
    
    	/**
    		 * The doGet method of the servlet. <br>
    		 *
    		 * This method is called when a form has its tag value method equals to get.
    		 * 
    		 * @param request the request send by the client to the server
    		 * @param response the response send by the server to the client
    		 * @throws ServletException if an error occurred
    		 * @throws IOException if an error occurred
    		 */
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    		doPost(request,response);
    	}
    
    	/**
    		 * The doPost method of the servlet. <br>
    		 *
    		 * This method is called when a form has its tag value method equals to post.
    		 * 
    		 * @param request the request send by the client to the server
    		 * @param response the response send by the server to the client
    		 * @throws ServletException if an error occurred
    		 * @throws IOException if an error occurred
    		 */
    	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");    //設置請求數據的字符編碼格式
            String userAccount = request.getParameter("userAccount"); //獲得請求表單中的賬號
            String userPassword = request.getParameter("userPassword");  //獲得請求表單中的密碼
            String userName = request.getParameter("userName");  //獲得請求表單中的姓名
            String sex = request.getParameter("sex");      		//獲得請求表單中的性別
            String age = request.getParameter("age");			//獲得請求表單中的年齡
            String QQ  = request.getParameter("QQ");			//獲得請求表單中的QQ
            String email = request.getParameter("email");		//獲得請求表單中的email
            UserInfoDTO dto = new UserInfoDTO();
            dto.setUserAccount(userAccount);
            dto.setUserPassword(userPassword);
            dto.setUserName(userName);
            dto.setSex(sex);
            dto.setAge(age);
            dto.setQQ(QQ);
            dto.setEmail(email);
            UserInfoDAO dao = new UserInfoDAO();
            if(dao.insertIntoUserInfo(dto)){
                //request.getRequestDispatcher("index.jsp").forward(request, response);
            	response.sendRedirect("registerSuccess.jsp");
            }
            else {
                response.sendRedirect("registerError.jsp");
            }	
    	}
    
    	/**
    		 * Initialization of the servlet. <br>
    		 *
    		 * @throws ServletException if an error occurs
    		 */
    	public void init() throws ServletException {
    		// Put your code here
    	}
    
    }
    
    

    點擊獲取BookStore項目源碼

    提取碼:gtft

    學如逆水行舟,不進則退
    
    版權聲明:本文為weixin_42429718原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/weixin_42429718/article/details/100888068

    智能推薦

    MySql數據庫之審計(開啟log+設置init-connect實現無插件審計)

    目錄 一、查詢審計配置情況 二、永久開啟審計 三、臨時開啟審計 四、設置init-connect 1、創建用于存放連接日志的數據庫和表 2、授權某個用戶擁有對審計表的select和insert權限 3、設置init_connect參數 五、驗證 六、番外 注:有關MySql數據庫的其他操作請參見MySql目錄進行查找。 一、查詢審計配置情況 show global variables like '...

    相對定位與絕對定位應用

    1、子絕父相 如圖所示的導航條,是通過相對定位與絕對定位共同完成的。 在僅使用相對定位的情況下,由于相對定位在標準流中仍然占有一定的空間,會對頁面布局產生不良的影響,所以不能僅僅使用相對定位。 所以父標簽使用相對定位,而子標簽則使用絕對標簽,這樣既不會對頁面布局產生不良的影響,又可以更方便的進行布局。 2、水平居中 width: 50%,代表著把寬度變為瀏覽器當前頁面寬度的一半,不論頁面大或是小,...

    python+unittest框架生成HTML測試報告

    1、下載HTMLTestReportCN、HTMLTestReportEN、HTMLTestRunner.py文件并把他放到python安裝目錄下的Lib里 具體的文件需要修改,因為這三個都是根據python2語法進行編寫,我們需要把他轉換成python3語法 分享下已經適配python3語法的下載鏈接: https://download.csdn.net/download/weixin_4645...

    Day06 JavaSE面向對象OOP(上) (Object-Oriented Programming)

    JavaSE 面向對象OOP(上) 一、面向對象概述 1 面向過程&面向對象區別 面向過程 第一步做什么,第二步做什么… 面向過程適合處理一些簡單的問題。 面向對象 分類的思維模式,首先分類,隨后逐個解決分類下的細節。 面向對象適合處理負責的問題,適合多人協作的問題。 以類的方式組織代碼,以對象組織封裝數據 面向對象三大特性:封裝、繼承、多態 2 方法回顧+補充 方法的定義 ...

    d3d程序調試方法——一個簡單的d3d程序

    1、安裝directx sdk 安裝包: 解壓: 2、創建C++控制臺應用程序 3、導入頭文件和源文件 注:在x86解決方案下進行調試!!!!! 4、添加包含目錄和庫目錄 配置屬性——VC++目錄 包含目錄:D:\Software Install\D3D_SDK\Include(根據自己解壓的文件夾目錄,選擇Include文件夾路徑) 庫目錄:D:\Software Ins...

    猜你喜歡

    一文解析Synchronized

    1 三個窗口賣50張票 1.1 TicketWindowRunnable 1.2 測試 2 synchronized 關鍵字synchronized可以保證在同一時刻,只有一個線程可以執行某個方法或某個代碼塊。 2.1 修改TicketWindowRunnable 2.2 測試 3 查看匯編 4 synchronized應用方式 4.1 對象鎖 (1) 代碼 4.2 This鎖 4.3 This鎖...

    Centos 6.9安裝docker

      由于docker要求運行的linux內核版本為3.8以上,因此,在安裝之前,要查看一下宿主機操作系統的內核版本,否則如果是內核低于3.8,能夠成功安裝docker,但進入docker后,會自動退出。 1、下載安裝Centos 6.9 Centos 6 系列,最新版本為6.9,由于 docker 只能運行在64位系統上,因此到Centos的官網上選擇某個鏡像 下載 ...

    SSM與android端數據交互

    一.前言 最近第一次用ssm與安卓端實現了數據交互,我這里數據交互通過傳送接受JSON數據來實現的。實現了登錄注冊和對某些實體類數據的增刪改查。   二.后端的具體實現 我們實體類的數據和安卓端的實體數據名字要是相同的,不然獲取不到后端發送的JSON數據,作為后端我們不用去了解安卓端是怎么實現發送和接受JSON數據,我們只要保證實體類屬性名相同,并給他們一個后端接口(一個URL地址),也...

    (二)搭建Java Web開發環境

    JDK和JRE是在Java環境下進行開發所必不可少的,只有很好地掌握它們的配置與使用方法,才能進行以后的Java Web開發。 1. Tomcat服務器是當今進行Java Web開發使用最廣泛的Servlet/JSP服務器。這是因為它運行穩定、性能可靠,是學習和中小企業級應用的最佳選擇。Tomcat是Servlet和JSP的容器。當通過Web瀏覽器訪問某個JSP文件時,Tomcat會將這個JSP文...

    精品国产乱码久久久久久蜜桃不卡