基于Java Web的图书管理系统

目录

1.系统简要概述

2.系统主要用到的数据库表

3.主要功能

管理员:

用户:

 3.1管理员功能

3.11登录

3.12添加学生

3.13查看学生

 3.14删除学生

3.15添加书籍

 3.16查看书籍

3.2用户端功能

3.2.1登录

3.2.2注册 

3.2.3查询图书

3.2.4借阅书籍

3.2.5借阅信息查询

3.2.6还书

3.2.7我的基本信息

 4.代码部分

4.1 dao类

adminDao

 BookDao

 BorrowDao

 studentDao

 4.2 Servlet类

userlojinServlet

adminlojinServlet

managebookservlet

managestudentservlet

 4.3javaBean类

admin

student

book

4.4filter(过滤器类)

loginfilter

characterfilter


1.系统简要概述

所用的思想是在MVC模式下进行开发,主要涉及到的内容有:JSP、javaBean、Servlet、JDBC、以及前端css、js,从具体实施来看主要涉及到的知识有:对jsp主要内置对象的熟练使用。例如,request请求、response响应、session会话、以及利用cookie来进行免登录,EL表达式,JSTL标签,Filter过滤器,Listener监视器,前端的灵活使用等。

2.系统主要用到的数据库表

admins(管理员) 管理员相关信息

Books(图书) 记录图书相关信息

Students(学生)表 记录学生相关信息

Borrows(借书) 记录借阅相关信息

3.主要功能

此次系统分为两个板块,管理员和用户。管理员主要进行用户和图书的增删改查,用户则进行借还操作。

下面简述两者主要功能及实现方法,具体可见后文详解。

管理员

增加学生、删除学生、查看学生、添加图书、修改图书、删除图书、查看图书

对学生的增删查,主要是在ManageStudent.Servlet里面进行。另外有专门处理学生的数据库类Student.Dao,首先增加和查看功能,直接利用前端提交的post请求,通过method字段在servlet里执行相对应的方法,将结果最终呈现在jsp页面中。至于删除的功能则是利用前端提交的get请求,将学生信息绑定在服务器前台,在后端通过request获取到相应数据,执行删除的方法。

对图书的增删改查类似以上机制,主要是在ManageBook.Servlet里面进行。同理也有Book.Dao,增删基本同添加学生一致。查看这里涉及到分页查看的机制,分页查看利用limit限制条件,对每次浏览的记录分条处理。通过后端每次传输的页值,将结果存储到session会话中,在jsp页面里,通过获取存储的对象输出到浏览器中。至于修改同查看一样,只不过这里,要将原先数据存到文本框内,需要通过get请求,将绑定的数据存储到会话中,然后重定向要修改的页面,中间借用EL表达式比较简洁。

用户:

查看图书、借书、借阅信息查看、还书、查看个人信息

当用户登录成功后,在左边功能框可查看所有图书信息,也可以查看具体类别的图书,这里主要是在userchoise.Servlet里面执行,当用户点击具体某类图书时,会将图书类别传输到服务器端,在servlet里面通过request获取类别,然后调用Book.Dao里面的方法将结果进行封装,在show.jsp页面里通过获取图书对象进行显示。每条图书信息后面附有借书操作功能,主要在Borrow.servlet里面进行,通过get机制将用户信息和图书信息上传到服务器,在servlet里面获取,然后利用Bean来声名对象,对借阅书籍进行更改,同时通过调用borrow.Dao,对图书信息数量进一步修改。

借阅信息的查看可直接在相应jsp里面,根据用户信息调用相应的Dao方法,来获取借阅书籍信息显示当浏览器上。在借阅信息里面可对图书进行归还操作,主要使用return.Servlet,在前端通过get机制,将学生信息和书籍信息上传到服务器端。在后端通过request获取,然后借用borrow.Dao,里面的方法对书籍数量进一步修改。查看个人信息比较见到,直接通过session会话,将事先绑定好的用户信息,直接读取,显示在相应页面中。

 3.1管理员功能

管理员主要管理学生和图书,在其项目里面有managestudent.servlet和managebook.servlet两个主要的servlet类。通过前端提供不同的请求来响应对应servlet里面的方法。

3.11登录

首先是管理员需要登录验证,判断数据库中是否有管理员账号相关信息。此次开发中,管理员账号为事先在数据库中录入,不支持注册和记住密码。管理员登录,需要请求adminlogin.servlet处理登录信息,如下(账号:admin 密码:admin):

图1- 1 管理员登录页面

若输入错误密码,则会提示密码错误重新登录(账号:admin 密码:123456):

图1- 2 管理员登录错误页面

3.12添加学生

添加学生功能,主要涉及到 student.dao(主要对学生进行数据库操纵,jdbc代码),student.bean(封装保存学生的基本信息),managestudent.servlet(用来后端操作控制添加学生信息的功能)以及addstusent.jsp(添加学生信息的前端页面)。添加信息的时候注意每项信息不能为空、以及添加的学生信息原数据库中是否有信息等需要在servlet里面做出判断。核心就是student.dao里面的连接数据库操纵语言,以及managestudent.servlet里面的对信息进行控制封装。如下:

图1-3 addstudent.jsp

3.13查看学生

查看学生功能是将数据库中的所有学生信息,展现在前端页面。这里主要涉及到studentDao、managestudent.servlet、student.javabean、showstudent.jsp等,在这里另外增加了一个分页查看的功能,主要思想就是在数据库里查询的时候将其分割,limit(beginpage,pagesize),然后通过查询的所有记录count/pagesize,得出总共的页数,然后在pageservlet里面,整理,最后输出到前端页面。

 3.14删除学生

管理员可以删除选中的学生,主要是利用前端绑定的机制,在get模式下,绑定用户的信息,通过前端传入的值,在后端进行相应的处理,在数据库中进行删除学生。所涉及到的类和前面几乎一致,不再重述。

3.15添加书籍

添加书籍类似添加学生,book.javabean(存有图书信息),managebook.Servlet(图书管理的servlet),以及对应的jsp页面.

 3.16查看书籍

管理员可查看所有图书信息。

 在show_book.jsp里面同时包含修改和删除图书的功能。两个方法对应不同的链接,跳转到相应的servlet中,在处理更改的时候需要用到重定向方法,将原先存到session中的数据,重定向到一个页面进行修改,同时该页面,要保留原有的信息,可以使用EL表达式来进行处理。

3.2用户端功能

3.2.1登录

用户登录页面同管理员登录页面一致,且在同一个jsp里,分两个form表单完成。在用户登录界面增加了注册、和记住密码的功能。首先看登录功能,用户输入账号和密码,前端将数据提交到后端的userloginServlet来进行处理,通过后端的处理与数据库中的结果作比较。验证登录是否成功,下图为登录成功界面。

在用户进行登录的时候有一个复选框,为记住密码的操作。当用户点击记住密码的时候,下次登录不用在输入账号密码,直接点击登录即可。这是利用cookie的机制,通过创建cookie,将账号信息保存到硬盘中。此次系统设计的cookie时间为三天。具体效果如下:

 

 

3.2.2注册 

注册功能同管理员添加学生一致,只不过这个注册会跳转到userloginsrvlet里面进行处理。结合数据库往里边添加数据,同时也会对,信息是否填写完整,以及原有数据库里面是否有数据做出判断。

3.2.3查询图书

 等用户登录成功后,即可看到左面功能栏里面的功能,最上面的就是查看所有图书功能,接下来的一系列则是根据图书类别进行查看图书,方便用户浏览,快速查找结果。里面的一些显示功能主要是,利用超链接的target,来将查询的结果输出到,showBook.jsp页面上。

3.2.4借阅书籍

每个书籍后面附有借书操作的功能,借阅实现的方法主要是,利用前端绑定机制,将用户的信息,和图书信息整合到一块,后端来进行获取。

当borrowservlet,接收到用户信息和图书信息后,通过studentBean,bookBean以及borrowBean,来对借阅功能进行封装处理,这时需要borrowdao来进行数据库的读写操作。

在这里设置每位用户最大借阅量为10本,所以在servlet里面,做出判断借阅量是否大于最大借阅书籍量。来响应用户是否还能继续借阅。若能借阅的话,则通过后台,处理Bean数据,用户借阅量发生变化,图书量也发生变化。

 3.2.5借阅信息查询

借阅信息查询这个页面中,可以显示所有借的图书信息,并且在这个页面附有还书的功能,借阅信息主要是利用BorrowServlet和BorrowDAO里面根据用户信息,来获取当前用户下共计的借阅量。

3.2.6还书

 还书对应的则是returnservlet,根据用户信息,以及图书信息,来做出合理的判断,在通过BorrowDao,里面的数据库操作对借书量,图书量数据上做出相应的改变。

3.2.7我的基本信息

在我的基本信息里面可以查看除密码以外的所有信息,包括当前借阅量,可借图书量等。具体实施为通过后台数据库将个人信息展现到页面上。

 4.代码部分

4.1 dao类

adminDao

package com.demo.dao;
import com.demo.javabean.*;
import java.sql.SQLException;

public class AdminDAO {
	DBAccess db ;
	public boolean valid(String username, String password) {
		boolean isValid = false;
		db=new DBAccess();
		if(db.createConn()) {
			try {
				String sql="select * from admins where admin=? and password=?";
				db.pre=db.getConn().prepareStatement(sql);
				db.pre.setString(1, username);
				db.pre.setString(2, password);
				db.setRs(db.pre.executeQuery());
				if(db.getRs().next()){
					isValid=true;
				}
			}catch (Exception e) {
				// TODO: handle exception
			}finally {
				db.closeRs();
				try {
					db.pre.close();
				} catch (SQLException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
				db.closeConn();
			}
		}
		return isValid ;
	}
	public boolean isExist(String username) {
		boolean isExist = false;
		db = new DBAccess();
		if(db.createConn()) {
			try {
				String sql="select * from admins where admin=?";
				db.pre=db.getConn().prepareStatement(sql);
				db.pre.setString(1,username );
				db.setRs(db.pre.executeQuery());
				if(db.getRs().next()){
					isExist=true;
				}
			} catch (Exception e) {
				// TODO: handle exception
			}
			finally {
				db.closeRs();
				if(db.pre!=null){
					try {
						db.pre.close();
					} catch (Exception e2) {
						// TODO: handle exception
					}
				}
				db.closeConn();
			}
		}
		return isExist;
	}
}

 BookDao

package com.demo.dao;
import com.demo.javabean.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;


public class BookDAO  {
	DBAccess db;
	private Books book;
	public ArrayList<Books> getAllBooks() throws Exception{
		db=new DBAccess();

		//db.setSql("SELECT * FROM books");
		ArrayList<Books> books = new ArrayList<Books>();

		if(db.createConn()){
			//db.query(sql);
			String sql= "SELECT * FROM books";
			db.query(sql);


			while(db.getRs().next()){
				book = this.assemble(db.getRs());
				books.add(book);
			}
		}
		db.closeRs();
		db.closeStm();
		db.closeConn();
		return books;
	}


	public ArrayList<Books> getBooksByCategory(String category) throws Exception{//在这里进行分页判断

		ArrayList<Books> books = new ArrayList<Books>();
		DBAccess db=new DBAccess();
		java.sql.PreparedStatement pre = null;
		if(db.createConn()){
			//db.query(sql);
			String sql = "select * from books where category = ? ";
			pre=db.getConn().prepareStatement(sql);
			pre.setString(1, category);
			//pre.setInt(2, (page-1)*Students.PAGE_SIZE);
			//pre.setInt(3, Students.PAGE_SIZE);
			db.setRs(pre.executeQuery());
			while(db.getRs().next()){
				book = this.assemble(db.getRs());
				books.add(book);
			}
		}
		db.closeRs();
		db.closeStm();
		pre.close();
		db.closeConn();
		int a=books.size();
		System.out.println(a);
		return books;
	}


	public void addBook(String name,String author,String intro,String amount,String category) throws Exception{
		// boolean flag = false;
		DBAccess db = new DBAccess();
		if(db.createConn()){
			String sql = "insert into books(name,author,intro,amount,category) values('"+name+"','"+author+"','"+intro+"','"+amount+"','"+category+"')";
			db.update(sql);
			db.closeStm();
			db.closeConn();
		}
	}
	public boolean delbook(String name)throws Exception{//删除书籍
		DBAccess db = new DBAccess();
		boolean flag=false;
		if(db.createConn()){
			//db.setSql("delete from books where name = ?");
			String sql="delete from books where name = ?";
			db.pre=db.getConn().prepareStatement(sql);
			db.pre.setString(1, name);
			if(db.pre.executeUpdate()>0)flag=true;
			//String sql = "delete from books where name = '"+name+"'";
			//db.update(sql);
			//db.closeStm();
			//db.closeConn();
		}
		db.closeRs();
		db.closeStm();
		db.pre.close();
		db.closeConn();
		return flag;
	}
	public boolean isExist(String name) {
		boolean isExist = false;
		DBAccess db = new DBAccess();
		if(db.createConn()) {
			String sql = "select * from books where name='"+name+"'";
			db.query(sql);
			if(db.next()) {
				isExist = true;
			}
			db.closeRs();
			db.closeStm();
			db.closeConn();
		}
		return isExist;
	}




	public boolean updateBook(Books book) throws Exception{//借还更新 主要书籍数量
		boolean flag = false;
		DBAccess db=new DBAccess();
		String sql = "UPDATE books SET amount=? WHERE id=?";
		java.sql.PreparedStatement pre=null;
		if(db.createConn()){
			pre=db.getConn().prepareStatement(sql);

			//conn = OpenConnection.getConnection();
			// ps = conn.prepareStatement(sql_str);

			pre.setInt(1,book.getAmount());
			pre.setInt(2,book.getId());

			if(pre.executeUpdate() > 0) flag = true;
		}
		db.closeRs();
		db.closeStm();
		pre.close();
		db.closeConn();
		// this.release();
		// OpenConnection.closeConnection(conn);

		return flag;
	}
	public boolean updateBook2(Books book) throws Exception{//修改更新 修改图书信息
		boolean flag = false;
		DBAccess db=new DBAccess();
		//db.setSql("UPDATE books SET name=?,author=?,amount=?,category=? where id=?");

		if(db.createConn()){
			String sql="UPDATE books SET name=?,author=?,amount=?,category=? where id=?";
			db.pre=db.getConn().prepareStatement(sql);
			db.pre.setString(1, book.getName());
			db.pre.setString(2, book.getAuthor());
			db.pre.setInt(3, book.getAmount());
			db.pre.setString(4, book.getCategory());
			db.pre.setInt(5, book.getId());
			if(db.pre.executeUpdate() > 0) flag = true;
		}
		db.closeRs();
		db.closeStm();
		db.pre.close();
		db.closeConn();
		return flag;
	}



	public Books getBookById(int id) throws Exception{
		DBAccess db=new DBAccess();
		String sql = "SELECT * FROM books WHERE id = ?";
		java.sql.PreparedStatement pre=null;
		if(db.createConn()){
			pre=db.getConn().prepareStatement(sql);

			// conn = OpenConnection.getConnection();
			// ps = conn.prepareStatement(sql_str);
			pre.setInt(1,id);
			db.setRs(pre.executeQuery());

			if (db.getRs().next()) book = this.assemble(db.getRs());
		}
		db.closeRs();
		db.closeStm();
		pre.close();
		db.closeConn();
		//this.release();
		// OpenConnection.closeConnection(conn);
		return book;

	}


	public Books assemble(ResultSet rs) throws Exception{
		book = new Books();
		book.setId(rs.getInt("id"));
		book.setName(rs.getString("name"));
		book.setAuthor(rs.getString("author"));
		book.setIntro(rs.getString("intro"));
		book.setAmount(rs.getInt("amount"));
		book.setCategory(rs.getString("category"));
		return book;
	}
	public ArrayList<Books> findAll(Integer page){//分页查询信息
		DBAccess  db=new DBAccess();
		ArrayList<Books> list=new ArrayList<Books>();
		try {
			if(db.createConn()){
				String sql="select  * from books limit ?,? ";
				db.pre=db.getConn().prepareStatement(sql);
				db.pre.setInt(1, (page-1)*Students.PAGE_SIZE);
				db.pre.setInt(2, Students.PAGE_SIZE);
				db.setRs(db.pre.executeQuery());
				while(db.getRs().next()){
					Books book=new Books();
					book.setId(db.getRs().getInt("id"));
					book.setName(db.getRs().getString("name"));
					book.setAuthor(db.getRs().getString("author"));
					book.setCategory(db.getRs().getString("category"));
					book.setAmount(db.getRs().getInt("amount"));
					list.add(book);
				}
				db.closeRs();
				db.pre.close();
				db.closeConn();
			}
		} catch( SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
	public ArrayList<Books> getBooksByCategory(String category,Integer page) throws Exception{//在这里进行分页判断(学生端)

		ArrayList<Books> books = new ArrayList<Books>();
		DBAccess db=new DBAccess();
		java.sql.PreparedStatement pre = null;
		if(db.createConn()){
			//db.query(sql);
			String sql = "select * from books where category = ? limit ?,?";
			pre=db.getConn().prepareStatement(sql);
			pre.setString(1, category);
			pre.setInt(2, (page-1)*Students.PAGE_SIZE);
			pre.setInt(3, Students.PAGE_SIZE);
			db.setRs(pre.executeQuery());
			while(db.getRs().next()){
				book = this.assemble(db.getRs());
				books.add(book);
			}
		}
		db.closeRs();
		db.closeStm();
		pre.close();
		db.closeConn();
		int a=books.size();
		System.out.println(a);
		return books;
	}
	public int countPage(String singal){//查询记录总数
		DBAccess  db=new DBAccess();
		int count=0;
		try {
			if(db.createConn()){
				String sql;
				if(!"1".equals(singal)){
					sql="select count(*) from books where category=?";
					db.pre=db.getConn().prepareStatement(sql);
					db.pre.setString(1, singal);
					db.setRs(db.pre.executeQuery());
				}
				else {
					sql="select count(*) from books";
					db.pre=db.getConn().prepareStatement(sql);
					db.setRs(db.pre.executeQuery());
				}
				if(db.getRs().next()){
					count=db.getRs().getInt(1);
				}
			}
		} catch( SQLException e) {
			e.printStackTrace();
		}
		finally {
			db.closeRs();
			try {
				if(db.pre!=null){
					db.pre.close();
				}
			} catch (Exception e2) {
				// TODO: handle exception
			}
			db.closeConn();
		}
		return count;
	}
}

 BorrowDao

package com.demo.dao;

import com.demo.javabean.*;

import java.sql.ResultSet;
import java.util.ArrayList;

import com.demo.javabean.DBAccess;

public class BorrowDAO  {

    private Borrows borrow = null;
    public ArrayList<Borrows> getAllBorrows() throws Exception{
    DBAccess db=new DBAccess();
    java.sql.PreparedStatement pre=null;
       String sql = "SELECT * FROM borrows";
        ArrayList<Borrows> borrows = new ArrayList<Borrows>();
        //conn = OpenConnection.getConnection();
       // ps = conn.prepareStatement(sql_str);
        //rs = ps.executeQuery();
if(db.createConn()){
	pre=db.getConn().prepareStatement(sql);
	db.setRs(pre.executeQuery());
	//db.query(sql);
        while(db.getRs().next()) {
            borrow = this.assemble(db.getRs());
            borrows.add(borrow);
        }
}

        //this.release();
db.closeRs();
db.closeStm();
db.closeConn();
       // OpenConnection.closeConnection(conn);
        return borrows;
    }


    public ArrayList<Borrows> getBorrowsBySId(int s_id) throws Exception{
        ArrayList<Borrows> borrows = new ArrayList<Borrows>();
        DBAccess db=new DBAccess();
        java.sql.PreparedStatement pre=null;
       String sql = "SELECT * FROM borrows WHERE s_id = ?";
       if(db.createConn()){
    	   pre=db.getConn().prepareStatement(sql);
    	   pre.setInt(1, s_id);
    	   db.setRs(pre.executeQuery());
        while (db.getRs().next()){
            borrow = this.assemble(db.getRs());
            borrows.add(borrow);
        }
       }
       db.closeRs();
       db.closeStm();
       pre.close();
       db.closeConn();
        return borrows;
    }


    public boolean addBorrows(Borrows borrow) throws Exception{
        boolean flag = false;
        DBAccess db=new DBAccess();
        java.sql.PreparedStatement pre=null;
        String sql = "INSERT INTO borrows VALUES(?,?,?)";
        if(db.createConn()){
        pre=db.getConn().prepareStatement(sql);
        
       // conn = OpenConnection.getConnection();
       // ps = conn.prepareStatement(sql_str);
        pre.setInt(1,borrow.getS_id());
        pre.setInt(2,borrow.getB_id());
        pre.setInt(3,borrow.getAmount());
        if(pre.executeUpdate() > 0)  flag = true;
        }
        //this.release();
        db.closeRs();
        pre.close();
        db.closeConn();
        //OpenConnection.closeConnection(conn);

        return flag;

    }


    public boolean deleteBorrow(Borrows borrow) throws Exception{
        boolean flag = false;
        DBAccess db=new DBAccess();
        java.sql.PreparedStatement pre=null;
        String sql = "DELETE FROM borrows WHERE s_id = ? AND b_id = ? AND amount = ?";
        if(db.createConn()){
        pre=db.getConn().prepareStatement(sql);
        
        	
        //conn = OpenConnection.getConnection();
        //ps =conn.prepareStatement(sql_str);

        pre.setInt(1,borrow.getS_id());
        pre.setInt(2,borrow.getB_id());
        pre.setInt(3,borrow.getAmount());
        if(pre.executeUpdate() > 0) flag = true;
        }
        return flag;
    }



    public Borrows getBorrowById(int s_id, int b_id) throws Exception{
    	DBAccess db=new DBAccess();
        String sql = "SELECT * FROM borrows WHERE s_id = ? AND b_id = ?";
        java.sql.PreparedStatement pre=null;
        if(db.createConn()){
        pre=db.getConn().prepareStatement(sql);
        

        //conn = OpenConnection.getConnection();
        //ps = conn.prepareStatement(sql_str);
        pre.setInt(1,s_id);
        pre.setInt(2,b_id);

        //rs = ps.executeQuery();
        db.setRs(pre.executeQuery());
        if(db.getRs().next()) borrow = this.assemble(db.getRs());
        }
        db.closeRs();
        db.closeStm();
        pre.close();
        db.closeConn();
       // this.release();
       // OpenConnection.closeConnection(conn);
        return borrow;


    }


   public boolean updateBorrow(Borrows borrow) throws  Exception{
        boolean flag = false;
        DBAccess db=new DBAccess();
        String sql = "UPDATE borrows SET amount = ? WHERE s_id = ? AND b_id = ?";
        java.sql.PreparedStatement pre=null;
        if(db.createConn()){
        pre=db.getConn().prepareStatement(sql);
        
        //conn = OpenConnection.getConnection();
       // ps = conn.prepareStatement(sql_str);
        pre.setInt(1,borrow.getAmount());
        pre.setInt(2,borrow.getS_id());
        pre.setInt(3,borrow.getB_id());

        if(pre.executeUpdate() > 0) flag = true;
        }
        db.closeRs();
        db.closeStm();
        pre.close();
        db.closeConn();
        //this.release();
        //OpenConnection.closeConnection(conn);

        return flag;
    }



    public Borrows assemble(ResultSet rs) throws Exception{
        borrow = new Borrows();

        borrow.setS_id(rs.getInt("s_id"));
        borrow.setB_id(rs.getInt("b_id"));
        borrow.setAmount(rs.getInt("amount"));

        return borrow;
    }

}

 studentDao

package com.demo.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import com.demo.javabean.*;

/**
*@author:FQX
*@version:2022年3月28日下午7:43:34
*类说明
*/
public class StudentDAO {
	DBAccess db;
	public boolean valid(String username, String password) {
		boolean isValid = false;
		//DBAccess db = new DBAccess();
		db = new DBAccess();
		if(db.createConn()) {
			//String sql = "select * from students where user='"+username+"' and password='"+password+"'";
			//db.setSql("select * from students where user='"+username+"' and password='"+password+"'");
			String sql="select * from students where user= ? and password= ?";
			try {											//这里引用prepareStatement是为了防止SQL注入
				db.pre=db.getConn().prepareStatement(sql);
				db.pre.setString(1, username);
				db.pre.setString(2, password);
				db.setRs(db.pre.executeQuery());
				if(db.getRs().next()){
					isValid=true;
				}
			} catch (SQLException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
			finally {
				db.closeRs();
				if(db.pre!=null)
					try {
						db.pre.close();
					} catch (SQLException e) {
						// TODO 自动生成的 catch 块
						e.printStackTrace();
					}
				db.closeConn();
			}
			//db.query(sql);
			//		db.query(db.getSql());
			//		if(db.next()) {
			//			isValid = true;
			//		}
			//		db.closeRs();
			//		db.closeStm();
			//		db.closeConn();
		}
		return isValid ;
	}
	public boolean isExist(String username) {
		boolean isExist = false;
		db = new DBAccess();
		if(db.createConn()) {
			//String sql = "select * from students where user='"+username+"'";
			//db.setSql("select * from students where user='"+username+"'");
			String sql="select * from students where user=?";
			try {
				db.pre=db.getConn().prepareStatement(sql);
				db.pre.setString(1, username);
				db.setRs(db.pre.executeQuery());
				if(db.getRs().next()){
					isExist=true;
				}
			} catch (SQLException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
			finally {
				db.closeRs();
				if(db.pre!=null){
					try {
						db.pre.close();
					} catch (Exception e2) {
						// TODO: handle exception
					}
					db.closeConn();
				}
			}
			//db.query(sql);
			//			db.query(db.getSql());
			//			if(db.next()) {
			//				isExist = true;
			//			}
			//			db.closeRs();
			//			db.closeStm();
			//			db.closeConn();
		}
		return isExist;
	}
	public boolean add(Students student) throws Exception{//添加
		boolean flag = false;
		db=new DBAccess();
		String sql = "INSERT INTO students(user,password,department,grade,classes,email,amount) VALUES(?,?,?,?,?,?,?)";
		if(db.createConn()){
			db.pre=db.getConn().prepareStatement(sql);
			db.pre.setString(1,student.getUser());
			db. pre.setString(2,student.getPassword());
			db.pre.setString(3,student.getDepartment());
			db.pre.setString(4,student.getGrade());
			db. pre.setString(5,student.getClasses());
			db.pre.setString(6,student.getEmail());
			db.pre.setInt(7,student.getAmount());
			if(db.pre.executeUpdate() > 0) flag = true;
		}
		db.closeRs();
		db.closeStm();
		db.pre.close();
		db.closeConn();
		return flag;
	}

	public void del(String usename){//删除
		DBAccess db = new DBAccess();
		if(db.createConn()) {
			String sql = "delete from students where user = '"+usename+"'";
			db.update(sql);
			db.closeStm();
			db.closeConn();
		}
	}
	private Students student = null;
	public ArrayList<Students>getAllStudents() throws Exception{
		DBAccess db = new DBAccess();
		ArrayList<Students> students = new ArrayList<Students>();
		String sql = "SELECT * FROM students";
		if(db.createConn()){
			db.query(sql);
			while(db.getRs().next()){
				student = this.assemble(db.getRs());
				students.add(student);
			}
			db.closeStm();
			db.closeRs();
			db.closeConn();
		}
		return students;
	}
	public Students assemble(ResultSet rs) throws Exception{
		student = new Students();
		student.setId(rs.getInt("id"));
		student.setUser(rs.getString("user"));
		student.setPassword(rs.getString("password"));
		student.setDepartment(rs.getString("department"));
		student.setGrade(rs.getString("grade"));
		student.setClasses(rs.getString("classes"));
		student.setEmail(rs.getString("email"));
		student.setAmount(rs.getInt("amount"));
		return student;
	}

	public boolean delStudentByName(String user) throws Exception{//删除
		DBAccess db=new DBAccess();
		boolean flag = false;
		String sql="DELETE FROM students WHERE user = ?";
		if(db.createConn()){
			db.pre=db.getConn().prepareStatement(sql);
			db.pre.setString(1, user);
			if(db.pre.executeUpdate()>0)flag=true;
		}
		db.closeConn();
		db.closeStm();
		db.pre.close();
		db.closeRs();
		return flag;
	}

	public Students getStudentById(int id) throws Exception{
		DBAccess db=new DBAccess();
		String sql = "SELECT * FROM students WHERE id = ?";
		java.sql.PreparedStatement pre=null;
		if(db.createConn()){
			pre=db.getConn().prepareStatement(sql);
			pre.setInt(1, id);
			db.setRs(pre.executeQuery());
			//conn = OpenConnection.getConnection();
			//ps = conn.prepareStatement(sql_str);
			//ps.setInt(1,id);
			// rs = ps.executeQuery();
			if (db.getRs().next()) student = this.assemble(db.getRs());
		}
		db.closeRs();
		db.closeStm();
		pre.close();
		db.closeConn();
		//this.release();
		//OpenConnection.closeConnection(conn);
		return student;
	}
	public boolean updateStudent(Students student) throws Exception{
		boolean flag = false;
		DBAccess db=new DBAccess();
		String sql = "update students set amount = ? where id = ?";
		java.sql.PreparedStatement pre=null;
		if(db.createConn()){
			pre=db.getConn().prepareStatement(sql);

			//conn = OpenConnection.getConnection();
			// ps = conn.prepareStatement(sql_str);
			pre.setInt(1,student.getAmount());
			pre.setInt(2,student.getId());

			if(pre.executeUpdate() > 0) flag = true;
		}
		//this.release();
		//OpenConnection.closeConnection(conn);
		db.closeRs();
		pre.close();
		db.closeStm();
		db.closeConn();
		return flag;
	}
	public Students getStudentByName(String name) throws Exception{
		DBAccess  db=new DBAccess();
		String sql = "SELECT * FROM students WHERE user = ?";
		java.sql.PreparedStatement pre=null;
		if(db.createConn()){
			pre=db.getConn().prepareStatement(sql);
			pre.setString(1, name);
			db.setRs(pre.executeQuery());

			// conn = OpenConnection.getConnection();
			//ps = conn.prepareStatement(sql_str);
			//ps.setString(1,name);
			// rs = ps.executeQuery();

			if(db.getRs().next()) 
			student = this.assemble(db.getRs());
		}
		db.closeRs();
		db.closeStm();
		pre.close();
		db.closeConn();
		//this.release();
		// OpenConnection.closeConnection(conn);
		return student;
	}
	public ArrayList<Students> findAll(Integer page){//分页查询信息
		DBAccess  db=new DBAccess();
		ArrayList<Students> list=new ArrayList<Students>();
		
		try {
			if(db.createConn()){
				String sql="select  * from students limit ?,? ";
				db.pre=db.getConn().prepareStatement(sql);
				db.pre.setInt(1, (page-1)*Students.PAGE_SIZE);
				db.pre.setInt(2, Students.PAGE_SIZE);
				db.setRs(db.pre.executeQuery());
				while(db.getRs().next()){
					Students stu=new Students();
					stu.setUser(db.getRs().getString("user"));
					stu.setPassword(db.getRs().getString("password"));
					stu.setDepartment(db.getRs().getString("department"));
					stu.setGrade(db.getRs().getString("grade"));
					stu.setClasses(db.getRs().getString("classes"));
					stu.setEmail(db.getRs().getString("email"));
					stu.setAmount(db.getRs().getInt("amount"));
					list.add(stu);
				}
				db.closeRs();
				db.pre.close();
				db.closeConn();
			}
		} catch( SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
	public int countPage(){//查询记录总数
		DBAccess  db=new DBAccess();
		int count=0;
		try {
			if(db.createConn()){
				String sql="select count(*) from students  ";
				db.pre=db.getConn().prepareStatement(sql);
				db.setRs(db.pre.executeQuery());
				if(db.getRs().next()){
					count=db.getRs().getInt(1);
				}
			}
		} catch( SQLException e) {
			e.printStackTrace();
		}
		finally {
			db.closeRs();
			try {
				if(db.pre!=null){
					db.pre.close();
				}
			} catch (Exception e2) {
				// TODO: handle exception
			}
			db.closeConn();
		}
		return count;
	}
}

 4.2 Servlet类

userlojinServlet

package com.demo.servlet;
import com.demo.dao.AdminDAO;
import com.demo.dao.StudentDAO;
import com.demo.javabean.*;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.sql.SQLException;


public class UserLoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String method = (String)request.getParameter("method");
		if(method==null) {
			PrintWriter out = response.getWriter();
			out.println("invalid request!");
		} else if(method.equals("login")) {
			try {
				Login(request, response);
			} catch (Exception e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}
		else if(method.equals("register")) {
			try {
				Register(request, response);
			} catch (Exception e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}
		else if(method.equals("logout")){
			Logout(request,response);
		}
	}
	//用户登录
	protected void Login(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		//request.setCharacterEncoding("utf-8");
		//response.setCharacterEncoding("utf-8");
		//response.setContentType("text/html;charset=utf-8");
    	PrintWriter out = response.getWriter();
		String a_user = request.getParameter("user");
		String a_password = request.getParameter("password");
		System.out.println(a_user);
		String rem=request.getParameter("remember");
		HttpSession session = request.getSession();
		StudentDAO a_dao=new StudentDAO();
		if ("".equals(a_user) ||"".equals(a_password)) {
			//System.out.println("登录失败,账号或密码不能为空!");
			//response.sendRedirect("login.jsp");
			out.println("<script>" +
					"alert('登录失败,账号或密码不能为空!!!');" +
					"window.location.href = \"login.jsp\";" +
					"</script>");
			return;
		}
		else if(a_dao.isExist(a_user)){
			Students student=a_dao.getStudentByName(a_user);
			session.setAttribute("student", student);
			if(a_dao.valid(a_user, a_password)){
				session.setAttribute("a_user", a_user);
				user user=new user();
				session.setAttribute("user",user);
				if("1".equals(rem)){
					//创建2个Cookie
					Cookie namecookie=new Cookie("username", a_user);
					//设置Cookie的有效期为三天
					namecookie.setMaxAge(60*60*24*3);
					Cookie pwdcookie=new Cookie("password", a_password);
					pwdcookie.setMaxAge(60*60*24*3);
					response.addCookie(namecookie);
					response.addCookie(pwdcookie);
				}
				//response.sendRedirect(request.getContextPath()+"/user.jsp");
				//System.out.println("登录成功!");
				out.println("<script>" +
						"alert('登录成功!!!');" +
						"window.location.href = \"user.jsp\";" +
						"</script>");
			}
			else {
				//System.out.println("登录失败2,密码错误!");
				//response.sendRedirect(request.getContextPath()+"/login.jsp");
				out.println("<script>" +
						"alert('登录失败,密码错误!!!');" +
						"window.location.href = \"login.jsp\";" +
						"</script>");
			}
		}
		else {
			//System.out.println("登录失败3,用户名不存在!");
			//response.sendRedirect(request.getContextPath()+"/login.jsp");
			out.println("<script>" +
					"alert('登录失败,用户名不存在!!!');" +
					"window.location.href = \"login.jsp\";" +
					"</script>");
	}
	}
	//用户退出
	protected void Logout(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
		session.removeAttribute("a_user");
		session.removeAttribute("user");
		response.sendRedirect("login.jsp");
	}
	//用户注册
	protected void Register(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException
	{
		//request.setCharacterEncoding("utf-8");
		//response.setCharacterEncoding("utf-8");
		//response.setContentType("text/html;charset=utf-8");
    	PrintWriter out = response.getWriter();
		String user =  request.getParameter("user");
		String password = request.getParameter("password");
		String repwd= request.getParameter("repwd");
		String department =  request.getParameter("department");
		String grade =  request.getParameter("grade");
		String classes = request.getParameter("classes");
		String email =  request.getParameter("email");
		if ("".equals(user) ||"".equals(password) || "".equals(repwd) || !password.equals(repwd)||"".equals(department)||"".equals(grade)||"".equals(classes)||"".equals(email)) {
			//response.sendRedirect("reg.jsp");
			out.println("<script>" +
					"alert('注册失败,信息不全!!!');" +
					"window.location.href = \"reg.jsp\";" +
					"</script>");
			
			return;
		}else{
			Students student = null;
			StudentDAO a_dao = new StudentDAO();
			boolean isExist =a_dao.isExist(user);
			if(isExist){
				//System.out.println("'此学号已注册过,请重试!");
				//response.sendRedirect("reg.jsp");
				out.println("<script>" +
						"alert('此学号已注册过,请重试!!!');" +
						"window.location.href = \"reg.jsp\";" +
						"</script>");

			}else{
				student = new Students();
				student.setUser(user);
				student.setPassword(password);
				student.setDepartment(department);
				student.setGrade(grade);
				student.setClasses(classes);
				student.setEmail(email);
				student.setAmount(0);
				try {
					if(a_dao.add(student)){
						student = a_dao.getStudentByName(student.getUser());
						request.getSession().setAttribute("student",student);
						//System.out.println("注册成功,即将跳转到主界面!");
						//response.sendRedirect("login.jsp");
						out.println("<script>" +
								"alert('注册成功,即将跳转到主界面!!!');" +
								"window.location.href = \"login.jsp\";" +
								"</script>");
						return;
					}
				} catch (Exception e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}

			}
		}
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//req.setCharacterEncoding("utf-8");
		this.doGet(req, resp);
	}

}

adminlojinServlet

package com.demo.servlet;

import java.io.*;
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 javax.servlet.http.HttpSession;
import com.demo. dao.AdminDAO;
import com.demo.javabean.*;


public class AdminLoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	String method = (String)req.getParameter("method");
    	if(method==null) {
			PrintWriter out = resp.getWriter();
			out.println("invalid request!");
		} else if(method.equals("login")) {
			Login(req, resp);
		}
    }
    //管理员登录
    protected void Login(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
    	//request.setCharacterEncoding("utf-8");
    	//response.setCharacterEncoding("utf-8");
		//response.setContentType("text/html;charset=utf-8");
    	PrintWriter out = response.getWriter();
        String a_user =request.getParameter("a_user");
        String a_password = request.getParameter("a_password");
        //HttpSession session = request.getSession();
        AdminDAO a_dao = new AdminDAO();
       //String admin = null;
        if ( a_user .equals("") ||a_password .equals("")) {
        	//System.out.println("登录失败");
			//response.sendRedirect("login.jsp");//重定向
        	out.println("<script>" +
					"alert('登录失败,用户名或密码不能为空!!!');" +
					"window.location.href = \"login.jsp\";" +
					"</script>");
			return;
		}
        boolean isValid =  a_dao.valid(a_user, a_password);
		if (isValid) {
			HttpSession session = request.getSession();
			session.setAttribute("a_user", a_user);
			out.println("<script>" +
					"alert('登录成功!!!');" +
					"window.location.href = \"admin.jsp\";" +
					"</script>");
			//response.sendRedirect("admin.jsp");//重定向
			return;
		}
		else {
			//System.out.println("登录失败");
			//response.sendRedirect("login.jsp");//重定向
			out.println("<script>" +
					"alert('登录失败,密码不正确!!!');" +
					"window.location.href = \"login.jsp\";" +
					"</script>");
			return;
		}
	}
//    protected void Logout(HttpServletRequest request,
//			HttpServletResponse response) throws ServletException, IOException {
//		HttpSession session = request.getSession();
//		session.removeAttribute("a_user");
//		response.sendRedirect("login.jsp");
//	}
//        


    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}

managebookservlet

package com.demo.servlet;

import com.demo.dao.BookDAO;
import com.demo.javabean.*;

import javax.security.auth.message.callback.PrivateKeyCallback.Request;
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 javax.servlet.http.HttpSession;

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


public class ManageBookServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	//	HttpSession session=request.getSession();
//		if(session!=null&&session.getAttribute("a_user1")!=null){
//			String action = (String)request.getParameter("action");
//			if(action==null) {
//				PrintWriter out = response.getWriter();
//				out.println("invalid request!");
//			} else if(action.equals("addbook")) {
//				AddBook(request, response);
//			}
//			else if(action.equals("delbook")) {
//				DelBook(request, response);
//			}
//			else if(action.equals("updatebook")) {
//				UpdateBook(request, response);
//			}
//			else if(action.equals("update")) {
//				Update(request, response);
//			}
//		}
//		else {
//			response.sendRedirect("login.jsp");
//		}
		String action = (String)request.getParameter("action");
		if(action==null) {
		PrintWriter out = response.getWriter();
		out.println("invalid request!");
	} else if(action.equals("addbook")) {
		AddBook(request, response);
	}
	else if(action.equals("delbook")) {
		DelBook(request, response);
	}
	else if(action.equals("updatebook")) {
		UpdateBook(request, response);
	}
	else if(action.equals("update")) {
		Update(request, response);
	}
	}

	//更新图书
	private void Update(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{
		// TODO 自动生成的方法存根
		//req.setCharacterEncoding("utf-8");
		//resp.setCharacterEncoding("utf-8");
		//resp.setContentType("text/html;charset=utf-8");
		Integer sid = Integer.parseInt(req.getParameter("sid"));
		BookDAO b_dao=new BookDAO();
		String page="";
		try {
			Books book=b_dao.getBookById(sid);
			req.setAttribute("book", book);
			req.getRequestDispatcher("admin/update_book.jsp").forward(req, resp);
		} catch (Exception e) {
			//page="error.jsp";
			//TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		//        finally{
		//        	page="admin/update_book.jsp";
		//        }
		//        req.getRequestDispatcher(page).forward(req, resp);
	}
	private void UpdateBook(HttpServletRequest req, HttpServletResponse resp)throws ServletException,IOException {//修改图书信息
		// TODO 自动生成的方法存根
		//req.setCharacterEncoding("utf-8");
		//resp.setCharacterEncoding("utf-8");
		//resp.setContentType("text/html;charset=utf-8");
		PrintWriter out=resp.getWriter();
		String sid=req.getParameter("sid");
		String name=req.getParameter("name");
		String author=req.getParameter("author");
		String amount = req.getParameter("amount");
		String category = req.getParameter("category");
		BookDAO b_dao=new BookDAO();
		Books book=new Books();
		if(name != "" && author != "" && amount != "" && category != ""){
			book.setName(name);
			book.setAuthor(author);
			book.setAmount(Integer.parseInt(amount));
			book.setCategory(category);
			book.setId(Integer.parseInt(sid));
			try {
				if(b_dao.updateBook2(book)){
					//System.out.println("修改书籍成功!");
					//resp.sendRedirect("PageServlet.do?method=showBook");
					out.println("<script>alert('修改书籍成功!');" +
							"window.location.href = \"PageServlet.do?method=showBook\";" +
							"</script>");
					return;
				}
				else
					//System.out.println("修改书籍失败!内容不能为空");
					out.println("<script>alert('修改书籍失败!内容不能为空');" +
							"window.location.href = \"PageServlet.do?method=showBook\";" +
							"</script>");

			} catch (Exception e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}else
			//System.out.println("修改书籍失败!");
		//resp.sendRedirect("");
			out.println("<script>alert('修改书籍失败!');" +
					"window.location.href = \"PageServlet.do?method=showBook\";" +
					"</script>");

	}

	//删除图书
	private void DelBook(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {
		// TODO 自动生成的方法存根
		//request.setCharacterEncoding("utf-8");
		//response.setCharacterEncoding("utf-8");
		//response.setContentType("text/html;charset=utf-8");
		PrintWriter out=response.getWriter();
		String name=request.getParameter("name");
		BookDAO b_dao = new BookDAO();
		if(name!=null){
			try {
				if(b_dao.delbook(name)){
					//System.out.println("删除书籍成功!");
					//response.sendRedirect("PageServlet.do?method=showBook");
					//return;
					out.println("<script>alert('删除书籍成功!');" +
							"window.location.href = \"PageServlet.do?method=showBook\";" +
							"</script>");
					return;
				}
				else 
					//System.out.println("删除书籍失败!");
				//response.sendRedirect("admin/del_book.jsp");
					out.println("<script>alert('删除书籍失败!');" +
							"window.location.href = \"admin/del_book.jsp\";" +
							"</script>");

			} catch (Exception e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}
		else{
			//System.out.println("删除图书失败!无此图书");
			//response.sendRedirect("admin/del_book.jsp");
			out.println("<script>alert('删除书籍失败!');" +
					"window.location.href = \"admin/del_book.jsp\";" +
					"</script>");
		}
	}

	//添加图书
	private void AddBook(HttpServletRequest req, HttpServletResponse resp)throws ServletException,IOException {
		// TODO 自动生成的方法存根
		//req.setCharacterEncoding("utf-8");
		//resp.setCharacterEncoding("utf-8");
		//resp.setContentType("text/html;charset=utf-8");
		PrintWriter out=resp.getWriter();
		String name = req.getParameter("name");
		String author = req.getParameter("author");
		String amount = req.getParameter("amount");
		String category = req.getParameter("category");
		String intro="暂未介绍";
		BookDAO b_dao = new BookDAO();
		Books book = null;
		if(name != "" && author != "" && amount != "" && category != ""){
			book = new Books();
			book.setName(name);
			book.setAuthor(author);
			book.setIntro("暂未介绍");
			book.setAmount(Integer.parseInt(amount));
			book.setCategory(category);
			//PrintWriter out = resp.getWriter();
			try {
				b_dao.addBook(name, author, intro, amount, category);
				//System.out.println("添加书籍成功!");
				//resp.sendRedirect("admin/reg_book.jsp");
				out.println("<script>alert('添加书籍成功!');" +
						"window.location.href = \"admin/reg_book.jsp\";" +
						"</script>");
			} catch (Exception e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}

		}else{
			//System.out.println("添加书籍失败!其他原因");
			//resp.sendRedirect("admin/reg_book.jsp");
			out.println("<script>alert('添加书籍失败!!其他原因');" +
					"window.location.href = \"admin/reg_book.jsp\";" +
					"</script>");
		}

	}


	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//req.setCharacterEncoding("utf-8");
		doGet(req,resp);

	}
}

managestudentservlet

package com.demo.servlet;

import com.demo.dao.StudentDAO;
import com.demo.javabean.*;

import javax.servlet.ServletContext;
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 javax.servlet.http.HttpSession;

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


public class ManageStudentServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//    	HttpSession session=request.getSession();
//    	if(session!=null&&session.getAttribute("a_user1")!=null){
//    	String action = (String)request.getParameter("action");
//    	if(action==null) {
//			PrintWriter out = response.getWriter();
//			out.println("invalid request!");
//		} else if(action.equals("addstudent")) {
//			AddStudent(request, response);
//		}
//		else if(action.equals("delstudent")) {
//			DelStudent(request, response);
//		}
//		else if(action.equals("showstudent")){
//			ShowStudent(request,response);
//		}
//    	}
//    	else {
//			response.sendRedirect("login.jsp");
//		}
    	String action = (String)request.getParameter("action");
    	if(action==null) {
			PrintWriter out = response.getWriter();
			out.println("invalid request!");
		} else if(action.equals("addstudent")) {
			AddStudent(request, response);
		}
		else if(action.equals("delstudent")) {
			DelStudent(request, response);
		}
		else if(action.equals("showstudent")){
			ShowStudent(request,response);
		}
    }
        private void ShowStudent(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{
		// TODO 自动生成的方法存根
		//request.setCharacterEncoding("utf-8");
		String user=request.getParameter("user");
		StudentDAO studao=new StudentDAO();
		Students student=new Students();
		try {
			student=studao.getStudentByName(user);
			request.setAttribute("student", student);
			
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		request.getRequestDispatcher("admin/show_student.jsp").forward(request, response);
	}
		private void DelStudent(HttpServletRequest req, HttpServletResponse resp)throws ServletException,IOException {
        	req.setCharacterEncoding("utf-8");
        	resp.setCharacterEncoding("utf-8");
        	resp.setContentType("text/html;charset=utf-8");
        	PrintWriter out=resp.getWriter();
        	String user=req.getParameter("user");
        	StudentDAO s_dao = new StudentDAO();
        	if(user!=null){
        		 System.out.println(user);
        		try {
					if(s_dao.delStudentByName(user)){
						// System.out.println("删除成功!");
						 //resp.sendRedirect("PageServlet.do?method=showStudent");
						out.println("<script>alert('删除成功!');"
						 +"window.location.href=\"PageServlet.do?method=showStudent\";"+"</script>");
						 return;
					}
					else
						//System.out.println("删除失败!");
					//resp.sendRedirect("admin/del_student.jsp");
						out.println("<script>alert('删除失败!');"
								 +"window.location.href=\"admin/del_student.jsp\";"+"</script>");
				} catch (Exception e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
        	}
             else{
              	//System.out.println("删除失败,无此账号!");
              	//resp.sendRedirect("admin/del_student.jsp");
            	 out.println("<script>alert('删除失败,无此账号!');"
						 +"window.location.href=\"admin/del_student.jsp\";"+"</script>");
                }			
        }

		// TODO 自动生成的方法存根
		
		private void AddStudent(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException {
		// TODO 自动生成的方法存根
		//req.setCharacterEncoding("utf-8");
		//resp.setCharacterEncoding("utf-8");
		//resp.setContentType("text/html;charset=utf-8");
		PrintWriter out=resp.getWriter();
        String user=req.getParameter("user");
        String password = req.getParameter("password");
        String relpwd=req.getParameter("relpwd");
        String department=req.getParameter("department");
        String grade = req.getParameter("grade");
        String classes=req.getParameter("classes");
        String email = req.getParameter("email");
        String admin=req.getParameter("admin");
        if ("".equals(user) || "".equals(password) ||"".equals(relpwd) || !password.equals(relpwd)||"".equals(department)||"".equals(grade)||"".equals(classes)||"".equals(email)) {
			//resp.sendRedirect("admin/add_student.jsp");
			//System.out.println("信息不全");
        	out.println("<script>alert('添加失败,信息不全!');" +
					"window.location.href = \"admin/add_student.jsp\";" +
					"</script>");
			return;
		}else{
        StudentDAO a_dao = new StudentDAO();
        Students student=new Students();
		boolean isExist =a_dao.isExist(user);
		if(isExist){
			//System.out.println("此学号已注册!");
			//resp.sendRedirect("admin/add_student.jsp");
			out.println("<script>alert('此学号已注册!');" +
					"window.location.href = \"admin/add_student.jsp\";" +
					"</script>");
		}
		else{
			 student = new Students();
	            student.setUser(user);
	            student.setPassword(password);
	            student.setDepartment(department);
	            student.setGrade(grade);
	            student.setClasses(classes);;
	            student.setEmail(email);
	            student.setAmount(0);
	            try {
					if(a_dao.add(student)){
						student = a_dao.getStudentByName(student.getUser());
					    req.getSession().setAttribute("student",student);
					//System.out.println("添加成功!");
					//resp.sendRedirect("");
					    out.println("<script>alert('添加成功!');" +
								"window.location.href = \"admin/add_student.jsp\";" +
								"</script>");
					return;
}
				} catch (Exception e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}

		}
		}
	}
		


    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	//req.setCharacterEncoding("utf-8");
        doGet(req,resp);
    }
}

javaBean类

admin

package com.demo.javabean;

public class Admins {

    private int id;                     //定义管理员的id序号
    private String admin;               //登录账号
    private String password;            //密码
    private String realname;            //真实姓名
    private String phone;               //电话号码
    private String email;               //邮箱
    private String address;             //地址

    //获取管理员的id序号
    public int getId() {
        return id;
    }

    //设置管理员的id序号
    public void setId(int id) {
        this.id = id;
    }

    //获取管理员的账号
    public String getAdmin() {
        return admin;
    }

    //设置管理员的账号
    public void setAdmin(String admin) {
        this.admin = admin;
    }

    //获取管理员的密码
    public String getPassword() {
        return password;
    }

    //设置管理员的密码
    public void setPassword(String password) {
        this.password = password;
    }

    //获取管理员的真实姓名
    public String getRealname() {
        return realname;
    }

    //设置管理员的真实姓名
    public void setRealname(String realname) {
        this.realname = realname;
    }

    //获取管理员的电话
    public String getPhone() {
        return phone;
    }

    //设置管理员的电话号码
    public void setPhone(String phone) {
        this.phone = phone;
    }

    //获得管理员的邮箱地址
    public String getEmail() {
        return email;
    }

    //设置管理员的邮箱地址
    public void setEmail(String email) {
        this.email = email;
    }

    //获取管理员的地址
    public String getAddress() {
        return address;
    }

    //设置管理员的地址
    public void setAddress(String address) {
        this.address = address;
    }
}

student

package com.demo.javabean;

public class Students {
	public static final int PAGE_SIZE=5;
    private int id;
    private String user;
    private String password;
   private String department;
    private String grade;
    private String classes;
    private String email;
    private int amount;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    public String getGrade() {
        return grade;
    }

    public void setGrade(String grade) {
        this.grade = grade;
    }

    public String getClasses() {
        return classes;
    }

    public void setClasses(String classes) {
        this.classes = classes;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getAmount() {
        return amount;
    }

    public void setAmount(int amount) {
        this.amount = amount;
    }
}

book

package com.demo.javabean;

public class Books {
	private static final long serialVersionUID = 1L;
	public static final int PAGE_SIZE=5;
    private int id;
    private String name;
    private String author;
    private String intro;
    private int amount;
    private String category;

    //取得图书的id序号
    public int getId() {
        return id;
    }

    //设置图书的id序号
    public void setId(int id) {
        this.id = id;
    }

    //获取图书的名字
    public String getName() {
        return name;
    }

    //设置图书的名字
    public void setName(String name) {
        this.name = name;
    }

    //获取图书的作者
    public String getAuthor() {
        return author;
    }

    //设置图书的作者
    public void setAuthor(String author) {
        this.author = author;
    }

    //获取图书的简介
    public String getIntro() {
        return intro;
    }

    //设置图书的简介
    public void setIntro(String intro) {
        this.intro = intro;
    }

    //获取图书的数量
    public int getAmount() {
        return amount;
    }

    //设置图书的数量
    public void setAmount(int amount) {
        this.amount = amount;
    }

    //获取图书的类别
    public String getCategory() {
        return category;
    }

    //设置图书的类别
    public void setCategory(String category) {
        this.category = category;
    }
}

filter(过滤器类)

loginfilter

package com.demo.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class LoginFilter implements Filter {//对登录进行验证过滤

	@Override
	public void destroy() {
		// TODO 自动生成的方法存根
		
	}

	@Override
	public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
			throws IOException, ServletException {
		// TODO 自动生成的方法存根
		HttpServletRequest request=(HttpServletRequest) req;
		HttpServletResponse response=(HttpServletResponse)resp;
		HttpSession session=request.getSession(false);
		if(session!=null&&session.getAttribute("a_user")!=null){
			//继续往下走
			chain.doFilter(request, response);
		}
		else {
			response.sendRedirect("login.jsp");
		}
		}
	

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO 自动生成的方法存根
		
	}

}

characterfilter

package com.demo.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class CharacterFilter implements Filter {//对字符乱码问题进行过滤

	@Override
	public void destroy() {
		// TODO 自动生成的方法存根
		
	}

	@Override
	public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
			throws IOException, ServletException {
		// TODO 自动生成的方法存根
		HttpServletRequest request=(HttpServletRequest)req;
		HttpServletResponse response=(HttpServletResponse) resp;
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		//继续执行
		chain.doFilter(request, response);
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO 自动生成的方法存根
		
	}

}

。。。因代码量较多,就不一一粘贴,有兴趣的友友可以交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/4148.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【云原生】初识 Kubernetes — pod 的前世今生

目录标题前言&#x1f433; Kubernetes到底是什么&#xff1f;&#x1f42c; K8s 的由来&#x1f42c;K8s 的工作方式&#x1f42c; K8s 主要组件&#x1f40b;Master 组件&#x1f40b;Node 组件&#x1f433; pod 是什么&#xff1f;&#x1f42c;pod 的概念&#x1f42c;控制…

Kafka在Mac下的安装与使用

mac 安装kafka安装kafka的原因安装kafka启动Zookeeper启动Kafka创建topic查看topic生产数据消费数据关闭zookeeper关闭kafka测试安装kafka的原因 用户微服务登录后需要向广告微服务中发送用户登录的信息以获取用户画像&#xff08;这个过程是异步的&#xff09;&#xff0c;故…

雷电4模拟器安装xposed框架(2022年)

别问我都2202年了为什么还在用雷电4安卓7。我特么哪知道Xposed的相关资料这么难找啊&#xff0c;只能搜到一些老旧的资料&#xff0c;尝试在老旧的平台上实现了。 最初的Xposed框架现在已经停止更新了&#xff0c;只支持到安卓8。如果要在更高版本的安卓系统上使用Xposed得看看…

mac程序员必备的20款软件

今天给大家分享一下我作为一名后端程序员工作中常用的软件&#xff0c;相信下面我要介绍的很多软件对大家来说并不陌生&#xff0c;mac程序员必备的20款软件能够在不同岗位上提升大家的效率和体验。 1、Chrome 我们首先来介绍一些开发常用工具&#xff0c;先是浏览器&#xff…

手撕二叉树--堆的接口实现(附源码+图解)

堆的接口实现&#xff08;附源码图解&#xff09; 文章目录堆的接口实现&#xff08;附源码图解&#xff09;前言一、定义结构体二、接口实现&#xff08;附图解源码&#xff09;1.初始化堆2.销毁堆3.尾插数据&#xff08;1&#xff09;向上调整&#xff08;2&#xff09;交换函…

Elasticsearch 需要了解的都在这

ES选主过程&#xff1f;其实ES的选主过程其实没有很高深的算法加持&#xff0c;启动过程中对接点的ID进行排序&#xff0c;取ID最大节点作为Master节点&#xff0c;那么如果选出来的主节点中存储的元信息不是最新的怎么办&#xff1f;其实他是分了2个步骤做这件事&#xff0c;先…

es-head插件插入查询以及条件查询(五)

es-head插件插入查询以及条件查询 1.es-head插件页面介绍 页面详细介绍 2.es-head查询语句 2.1.查询索引中的全部数据 curl命令交互&#xff0c;采用GET请求 语法格式&#xff1a; curl -XGET es地址:9200/索引名/_search?pretty [rootelaticsearch ~]# curl -XGET 192…

Mac环境变量配置(Java)

1.打开终端&#xff1a; 2.输入命令&#xff1a;【/usr/libexec/java_home -V】,查看默认的jdk下载地址&#xff08;绿色下划线的就是jdk默认路径&#xff09;&#xff08;注意⚠️&#xff1a;命令行终端是区分大小写的【-v 是不对的&#xff0c;必须是大写 -V】&#xff09; …

Windows Server 2016远程桌面配置全过程

镜像下载 系统镜像网址 本次下载的是 Windows Server 2016 (Updated Feb 2018) (x64) - DVD (Chinese-Simplified) 远程桌面配置 Step 1 在开始菜单搜索服务&#xff0c;打开服务器管理器&#xff0c;点击右上角的管理按钮 Step 2 添加角色控制&#xff0c;点击下一步 S…

静态路由+DHCP实验(四路由器八PC)

一.200.1.1.0/24子网划分 1.划分八个子网 2.选用前5个&#xff0c;第五个子网再划分4个子网作为骨干 二.规划路由 三.配置&#xff08;下一跳&#xff09; 1.先依次实现四个路由器之间全网可通 2.为路由器配置地址池&#xff0c;使用全局模式获取dhcp&#xff0c;指定网关…

Springboot是什么

目录 为什么会要用springboot 1、之前 2、现在 springboot优点 springboot四大核心 自动装配介绍 1、自动装配作用是什么 2、自动装配原理 springboot starter是什么 1、starter作用 2、比如&#xff1a;我们想搭建java web框架 3、starter原理 SpringBootApplica…

Endor Labs:2023年十大开源安全风险

近日&#xff0c;Endor Labs发布了一份新报告&#xff0c;确定了2023年的十大开源安全风险。报告显示&#xff0c;许多软件公司依赖于开源软件代码&#xff0c;但在如何衡量和处理与开源软件相关的风险和漏洞方面缺乏一致性。调查发现&#xff0c;在应用程序中超过80%的代码可能…

Go 结构体

目录 什么是结构体 定义结构体 基本的方式实例化结构体 访问结构体的成员变量 指针类型的方式实例化结构体 取结构体地址的方式实例化 知识扩展&#xff1a;*号 和 &号 构造函数 成员函数&#xff08;成员方法&#xff09; 匿名成员变量 方法传入指针类型的结构…

Mac M1通过VMWare Fusion安装Centos7记录(镜像和网络有大坑)

以前用linux系统基本都在我的服务器上或者是在win上进行&#xff0c;从没有在M1上进行创建&#xff0c;因此走了一些坑吧&#xff0c;这里会列出我的详细安装步骤。 下载镜像 镜像的下载网站&#xff1a;https://www.centos.org/download/ 在该网站中&#xff0c;不管是Every…

多级评论单表结构设计

这里的多级&#xff0c;本质上其实也就二级&#xff0c;例如微博的评论&#xff0c; 一级评论&#xff1a; 对微博的评论 二级评论&#xff1a; 对微博下的评论的回复评论 &#xff0c;这里包括二种 1. 回复的是一级评论&#xff0c; 2, 回复的是二级评论 效果如下 表数据 查…

基于微信小程序的图书馆选座系统源码

开发环境及工具&#xff1a; 大等于jdk1.8&#xff0c;大于mysql5.5&#xff0c;idea&#xff08;eclipse&#xff09;&#xff0c;微信开发者工具 技术说明&#xff1a; springboot mybatis 小程序 代码注释齐全&#xff0c;没有多余代码&#xff0c;适合学习&#xff08;…

Android Studio模拟器运行无反应

当Android Studio模拟器点击运行无反应 报以下错误&#xff1a; Emulator: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT 问题分析 大多是由于默认路径带有中文&#xff0c;所以找不到 解决方法 1&#xff0c;删除镜像 2&#xff0c;配置环境变量 …

Unity强化学习之ML-Agents的使用

Github下载链接&#xff1a;https://github.com/Unity-Technologies/ml-agents ML-Agents是游戏引擎Unity3D中的一个插件&#xff0c;也就是说&#xff0c;这个软件的主业是用来开发游戏的&#xff0c;实际上&#xff0c;它也是市面上用得最多的游戏引擎之一。而在几年前随着人…

Maven配置—idea版

在java开发中&#xff0c;maven是个不可或缺的工具&#xff0c;可以简单理解成maven是个仓库&#xff0c;可以远程下载各种需要的插件&#xff0c;而且对于项目的打包编译等也非常简单&#xff1b;下面来说说如何配置maven 1. 首先下载maven的工具包&#xff0c;解压之后放在D…

OCR之论文笔记TrOCR

文章目录TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models一. 简介二. TrOCR2.1. Encoder2.2 Decoder2.3 Model Initialiaztion2.4 Task Pipeline2.5 Pre-training2.6 Fine-tuning2.7 Data Augmentation三. 实验3.1 Data3.2 Settings3.2 Resul…