图书租赁系统

项目架构

webContent/index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>登录界面</title>



</head>

<body>

<center><h2>欢迎登录</h2></center>
<form name="form1" method="post" action="login.do">
  <table width="329" height="206" border="1" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td width="124" align="center">用户名:</td>
      <td width="199" align="center"><label for="textfield"></label>
      <input type="text" name="username" id="username" placeholder="请输入用户名" ></td>
    </tr>
    <tr>
      <td align="center">密码:</td>
      <td align="center"><label for="textfield2"></label>
      <input type="password" name="password" id="password" placeholder="请输入登录密码" ></td>
    </tr>
    <tr>
      <td colspan="2" align="center"><input type="submit" name="button" id="button" value="登录"></td>
    </tr>
    <tr>
      <td colspan="2" align="center"><a href="toregist.do">注册</a></td>
    </tr>
  </table>
</form>


</body>
</html>

com.bean下面新建
User.java
package com.bean;

public class User {
	private int id;
	private String username;
	private String password;
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public User(String username, String password) {
		super();
		
		this.username = username;
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [id="+id+", username=" + username + ", password=" + password + "]";
	}
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	
	

}

Book.java

package com.bean;

public class Book {
	
	private int id;
	private String name;
	private double price;
	private String info;
	private String img_url;
	private String borrow_date;
	private String user;
	public Book() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Book(int id, String name, double price, String info, String img_url, String borrow_date, String user) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
		this.info = info;
		this.img_url = img_url;
		this.borrow_date = borrow_date;
		this.user = user;
	}
	@Override
	public String toString() {
		return "Book [id=" + id + ", name=" + name + ", price=" + price + ", info=" + info + ", img_url=" + img_url
				+ ", borrow_date=" + borrow_date + ", user=" + user + "]";
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public String getInfo() {
		return info;
	}
	public void setInfo(String info) {
		this.info = info;
	}
	public String getImg_url() {
		return img_url;
	}
	public void setImg_url(String img_url) {
		this.img_url = img_url;
	}
	public String getBorrow_date() {
		return borrow_date;
	}
	public void setBorrow_date(String borrow_date) {
		this.borrow_date = borrow_date;
	}
	public String getUser() {
		return user;
	}
	public void setUser(String user) {
		this.user = user;
	}
	
	
	
	

}

com.dao下面建
DBConnection.java
package com.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/*
 * JDBC连接数据库
 */
public class DBConnection {

	private static Connection conn;

	// ?useUnicode=true&characterEncoding=UTF-8 防止中文出现乱码
	private static String url = "jdbc:mysql://localhost:3306/17101?useUnicode=true&characterEncoding=UTF-8";
     //数据库用户名
	private static String username = "root";
   //数据库密码
	private static String password = "root";
	// static代码块,只在类加载的时候执行一次
	static {

		try {
			
			
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(url, username, password);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public static Connection getConnection() {

		return conn;
	}

}

UserDao.java

package com.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.bean.User;


//数据访问层
public class UserDao {

	public User findByInfo(User user) {

		User user_find = null;

		// 得到数据库连接
		Connection conn = DBConnection.getConnection();
		// 根据用户名和密码查询用户是否存在
		String sql = "select * from user where username=? and password=?";

		try {
			// 预编译sql
			PreparedStatement ps = conn.prepareStatement(sql);

			ps.setString(1, user.getUsername());

			ps.setString(2, user.getPassword());

			// 查询得到结果集

			ResultSet rs = ps.executeQuery();

			// 遍历结果集,获取信息

			while (rs.next()) {

				String username_find = rs.getString("username");

				String password_find = rs.getString("password");

				// 将信息赋值给对象user_find
				user_find = new User(username_find, password_find);

			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return user_find;
	}

	// 根据用户名查询用户信息

	public User findByName(String username) {

		User user_find = null;

		// 获取数据库连接

		Connection conn = DBConnection.getConnection();
		// sql语句
		String sql = "select*from user where username=?";

		try {
			// 预编译
			PreparedStatement ps = conn.prepareStatement(sql);
			// 对未定义的用户名传值
			ps.setString(1, username);

			// 查询结果集

			ResultSet rs = ps.executeQuery();
			while (rs.next()) {
				String username_find = rs.getString("username");

				String password_find = rs.getString("password");

				user_find = new User(username_find, password_find);

			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return user_find;

	}
	
	//将用户信息添加进数据库
	
	public int add(User user) {
		
		int result=0;
		
		//获取数据库连接
		
		Connection conn=DBConnection.getConnection();
		//sql语句
		String sql="insert into user(username,password) value(?,?)";
		
		try {
			//预编译
			PreparedStatement ps=conn.prepareStatement(sql);
		ps.setString(1, user.getUsername());
		
		ps.setString(2, user.getPassword());
		
		result=ps.executeUpdate();
		
		
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		return result;
		
		
			
	}
	
	
	
	
	

}

BookDao.java

package com.dao;

import java.sql.Connection;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.bean.Book;
import com.sun.glass.ui.Pixels.Format;

public class BookDao {

	public List<Book> findAll(String username) {

		List<Book> list = new ArrayList<Book>();

		// 获取数据库连接
		Connection conn = DBConnection.getConnection();

		String sql = "select*from book where user=? or user=?";

		try {
			PreparedStatement ps = conn.prepareStatement(sql);

			ps.setString(1, username);
			ps.setString(2, "");

			// 查询得到结果集
			ResultSet rs = ps.executeQuery();
			while (rs.next()) {

				int id = rs.getInt("id");
				String name = rs.getString("name");
				double price = rs.getDouble("price");
				String info = rs.getString("info");
				String img_url = rs.getString("img_url");
				String borrow_date = rs.getString("borrow_date");
				String user = rs.getString("user");
				Book book = new Book(id, name, price, info, img_url, borrow_date, user);
				list.add(book);
			}

			// 测试
			for (Book book : list) {
				System.out.println("db" + book.toString());
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return list;

	}

	// 获取最大页数
	public int getMaxPage(String username, int num) {

		int result = 0;
		int PageNum = 0;

		// 获取数据库连接
		Connection conn = DBConnection.getConnection();
		String sql = "select count(*) as count from book where user=? or user=?";

		try {
			PreparedStatement ps = conn.prepareStatement(sql);

			ps.setString(1, username);
			ps.setString(2, "");
			ResultSet rs = ps.executeQuery();
			while (rs.next()) {
				result = rs.getInt("count");
			}
			// 防止算数异常
			if (num == 0) {
				PageNum = 1;
				return PageNum;
			}
			// 能够整除的情况
			if (result % num == 0) {

				PageNum = result / num;
			} else {
				PageNum = result / num + 1;
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return PageNum;
	}

	// 获取分页数据

	public List<Book> Limit(String username, int page, int num) {
		List<Book> list = new ArrayList<Book>();

		// 获取数据库连接
		Connection conn = DBConnection.getConnection();
		String sql = "select * from book where user=? or user=? limit ?,?";

		try {
			PreparedStatement ps = conn.prepareStatement(sql);

			ps.setString(1, username);
			ps.setString(2, "");
			ps.setInt(3, (page - 1) * num);// (查询页数-1)*每页记录数
			ps.setInt(4, num);
			// 得到结果集

			ResultSet rs = ps.executeQuery();
			while (rs.next()) {
				int id = rs.getInt("id");
				String name = rs.getString("name");
				double price = rs.getDouble("price");
				String info = rs.getString("info");
				String img_url = rs.getString("img_url");
				String borrow_date = rs.getString("borrow_date");
				String user = rs.getString("user");

				Book book = new Book(id, name, price, info, img_url, borrow_date, user);
				list.add(book);

			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return list;

	}

	// 根据id修改图书信息为借出
	public int updateById(int id, String username) {

		int result = 0;
		// 获取数据库连接
		Connection conn = DBConnection.getConnection();
		String sql = "update book set borrow_date=?,user=? where id=?";

		try {
			PreparedStatement ps = conn.prepareStatement(sql);
			ps.setString(1, getDate());
			ps.setString(2, username);
			ps.setInt(3, id);

			result = ps.executeUpdate();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return result;

	}

	// 获取当前日期
	public String getDate() {

		String time = "";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		time = sdf.format(new Date());

		return time;
	}

	// 计算借出天数

	public int getDays(String borrow_time, String back_time) {
		int days = 0;

		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

		try {
			Date date_borrow = format.parse(borrow_time);
			Date Date_back = format.parse(back_time);

			// 转换为毫秒
			long borrow = date_borrow.getTime();
			long back = Date_back.getTime();
			// 计算租金
			days = (int) ((back - borrow) / 1000 / 60 / 60 / 24);

			System.out.println("共借出了" + days + "天");

		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return days;

	}

	// 根据id查找图书信息

	public Book findById(int id) {

		Book book = null;

		// 获取数据库连接
		Connection conn = DBConnection.getConnection();
		String sql = "select*from book where id=?";

		try {
			PreparedStatement ps = conn.prepareStatement(sql);

			ps.setInt(1, id);
			// 查询结果集
			ResultSet rs = ps.executeQuery();
			while (rs.next()) {

				int id_find = rs.getInt("id");

				String name = rs.getString("name");
				double price = rs.getDouble("price");
				String info = rs.getString("info");
				String img_url = rs.getString("img_url");
				String borrow_date = rs.getString("borrow_date");
				String user = rs.getString("user");
				book = new Book(id_find, name, price, info, img_url, borrow_date, user);

			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return book;

	}

	// 根据id修改图书信息为归还
	public int updateByID(int id) {

		int result = 0;
		// 获取数据库连接

		Connection conn = DBConnection.getConnection();

		String sql = "update book set borrow_date=?,user=? where id=?";

		try {
			PreparedStatement ps = conn.prepareStatement(sql);

			ps.setString(1, "尚未借出");
			ps.setString(2, "");
			ps.setInt(3, id);
			result = ps.executeUpdate();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return result;

	}

}

com.filter下新建过滤器
CharacterEncodingFilter.Java
package com.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;
//过滤器 
public class CharacterEncodingFilter implements Filter {

	public void destroy() {
		// TODO Auto-generated method stub

	}

	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		
		System.out.println("过滤器处理字符编码...");
		arg0.setCharacterEncoding("utf-8");
		arg1.setCharacterEncoding("utf-8");
		
		arg1.setContentType("text/html; charset=UTF-8");
		
		
		
		arg2.doFilter(arg0, arg1);

	}

	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub

	}

}

com.service下新建
UserService.java
package com.service;

import com.bean.User;
import com.dao.UserDao;

//业务逻辑层
public class UserService {

	private UserDao udao = new UserDao();

	// 登录验证

	public boolean login(User user) {

		User user_find = udao.findByInfo(user);

		if (user_find != null) {

			return true;

		}

		return false;
	}
	
	//注册
	
	public void regist(User user) {
		
		udao.add(user);
		
	
	}
	public boolean registcheck(String username) {
		
		if(udao.findByName(username)==null) {
			//可以注册
			return true;
		}
		
		
		return false;
	}
	
	

}

BookService.java

package com.service;

import java.util.ArrayList;
import java.util.List;

import com.bean.Book;
import com.dao.BookDao;

//业务逻辑层
public class BookService {

	private BookDao bdao = new BookDao();

	public List<Book> listbook(String username) {

		List<Book> list = new ArrayList<Book>();

		list = bdao.findAll(username);

		return list;
	}

	// 分页得到共多少页
	public int getMaxPage(String username, int num) {

		return bdao.getMaxPage(username, num);

	}

	// 分页数据

	public List<Book> Limit(String username, int page, int num) {

		List<Book> list = new ArrayList<Book>();
		list = bdao.Limit(username, page, num);

		return list;
	}

	// 借出图书

	public int borrow_book(int id, String username) {

		int result = 0;

		result = bdao.updateById(id, username);
		return result;

	}

	// 借出天数
	public int getDays(String borrow_time, String back_time) {

		int days = 0;

		days = bdao.getDays(borrow_time, back_time);
		return days;

	}

	// 计算租金

	public double money(int days, double price) {
		double pay = 0;

		pay = price * days;

		return pay;

	}

	// 获取当前日期的字符串

	public String getDate() {

		return bdao.getDate();

	}

	// 根据id得到图书信息
	public Book findById(int id) {

		Book book = null;
		book = bdao.findById(id);

		return book;

	}
	//归还图书
	
	public int back_book(int id) {
		int result=0;
		result=bdao.updateByID(id);
		
		return result;
		}
	

}

新建com.servlet

package com.servlet;

import java.io.IOException;
import java.util.List;

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.bean.Book;
import com.service.BookService;

/**
 * Servlet implementation class ListBookServlet
 */
@WebServlet("/listbook.do")
public class ListBookServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	
       private BookService bservice=new BookService();
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ListBookServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
	doPost(request, response);
	
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		//得到登录的用户名
		HttpSession session=request.getSession();
		
		String username=session.getAttribute("username").toString();
	
		
		//分页每页记录数
		int num=3;
		
		//得到分页的最大页数
		int PageNum=bservice.getMaxPage(username, num);
		
		//得到请求的页数
		int page=Integer.parseInt(request.getParameter("page"));
		
		//准备数据
		List<Book> list=bservice.Limit(username, page, num);
		
		request.setAttribute("booklist", list);
		request.setAttribute("PageNum", PageNum);
		request.setAttribute("page", page);
		
		//转发
		request.getRequestDispatcher("WEB-INF/jsp/main.jsp").forward(request, response);
		
		
		
	}

}
package com.servlet;

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

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.service.UserService;

/**
 * Servlet implementation class CheckUserServlet
 */
@WebServlet("/checkuser.do")
public class CheckUserServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	private UserService uservice = new UserService();

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public CheckUserServlet() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
		doPost(request, response);

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		PrintWriter pw = response.getWriter();

		String username = request.getParameter("name");
		System.out.println("CheckUserServlet" + username);

		System.out.println("CheckUserServlet" + uservice.registcheck(username));
		// 不能注册 返回已存在
		if (!uservice.registcheck(username)) {
			pw.write("exists");
			pw.flush();
			pw.close();

		}

	}

}
package com.servlet;

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

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.service.BookService;

/**
 * Servlet implementation class BorrowBookServlet
 */
@WebServlet("/borrow.do")
public class BorrowBookServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
      
	private BookService bservice=new BookService();
    /**
     * @see HttpServlet#HttpServlet()
     */
    public BorrowBookServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	
	doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		System.out.println("借出图书");
		PrintWriter pw=response.getWriter();
		
		//得到登陆的用户名
		HttpSession session=request.getSession();
		
		String username=session.getAttribute("username").toString();
		int id=Integer.parseInt(request.getParameter("id"));
		int page=Integer.parseInt(request.getParameter("page"));
		
		//修改图书信息
		bservice.borrow_book(id, username);
		
		//刷新页面
		request.getRequestDispatcher("listbook.do?page="+page).forward(request, response);
		
		
		
	}

}
package com.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 javax.servlet.http.HttpSession;

import com.bean.Book;
import com.service.BookService;

/**
 * Servlet implementation class BackBookShowServlet
 */
@WebServlet("/backbookshow.do")
public class BackBookShowServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private BookService bservice = new BookService();

    /**
     * @see HttpServlet#HttpServlet()
     */
    public BackBookShowServlet() {
        super();
        // TODO Auto-generated constructor stub


    
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	
	doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	
   
		// 得到登录的用户名

				HttpSession session = request.getSession();

				String username = session.getAttribute("username").toString();
				// 得到操作的图书编号

				int id = Integer.parseInt(request.getParameter("id"));

				// 得到第几页数据

				int back_page = Integer.parseInt(request.getParameter("back_page"));

				// 根据id得到图书信息

				Book book_back = bservice.findById(id);

				// 得到书名

				String book_name = book_back.getName();

				// 得到图书图片地址

				String img_url = book_back.getImg_url();

				// 得到借出日期

				String borrow_date = book_back.getBorrow_date();

				// 得到每日租金

				double price = book_back.getPrice();

				System.out.println("BackBookShowServlet:" + id);

				System.out.println("BackBookShowServlet:" + book_name);
				System.out.println("BackBookShowServlet:" + borrow_date);

				// 准备显示数据

				// 归还日期

				String back_date = bservice.getDate();

				/* 得到借出天数 */
				int days = bservice.getDays(borrow_date, back_date);
				// 得到租金

				double money = bservice.money(days, price);

				// 将页数保存进session

				session.setAttribute("back_page", back_page);

				// 归还图书

				bservice.back_book(id);

				// 转发到页面显示

				request.setAttribute("back_img", img_url);

				request.setAttribute("back_name", book_name);

				request.setAttribute("back_price", price);

				request.setAttribute("back_days", days);

				request.setAttribute("back_money", money);

				// 转发

				request.getRequestDispatcher("WEB-INF/jsp/back_book.jsp").forward(
						request, response);

			}

	
	
	}



package com.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 javax.servlet.http.HttpSession;

import com.bean.User;
import com.service.UserService;

/**
 * Servlet implementation class login_servlet
 */
@WebServlet("/login.do")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	// 调用业务对象
	UserService uservice = new UserService();

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public LoginServlet() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());

		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		

		String username = request.getParameter("username");
		String password = request.getParameter("password");
		System.out.println(username);
		System.out.println(password);

		// 创建对象保存信息
		User user = new User(username, password);
		// 调用登陆业务,判断是否登陆成功
		if (uservice.login(user)) {

			// 登陆成功
			HttpSession session = request.getSession();

			session.setAttribute("username", username);

			// 转发到登陆成功界面

			request.getRequestDispatcher("listbook.do?page=1").forward(request, response);

		} else {
			// 登陆失败,则转发到登陆失败界面

			request.getRequestDispatcher("WEB-INF/jsp/failed.jsp").forward(request, response);

		}

	}

}

package com.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.bean.User;
import com.service.UserService;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/regist.do")
public class  RegistServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	// 业务处理对象

	UserService uservice = new UserService();

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public RegistServlet() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub

		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		

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

		System.out.println("regist"+username);
		System.out.println("regist"+password);

		// 创建对象保存信息

		User user = new User(username, password);
        uservice.regist(user);
        
        //注册成功
        request.getRequestDispatcher("WEB-INF/jsp/regist_success.jsp").forward(request, response);

	}

}
package com.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;

/**
 * Servlet implementation class ToRegistServlet
 */
@WebServlet("/toregist.do")
public class ToRegistServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ToRegistServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	
	doPost(request, response);
	
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	
		//转发到注册界面
		request.getRequestDispatcher("WEB-INF/jsp/regist.jsp").forward(request, response);
		
		
		
		
	}

}



WEB-INF/jsp
back_book.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>back_book</title>

<style>
.book_img {
	width: 150px;
	height: 200px;
	padding: 10px;
}

#bt {
	color: #FFF;
	background: #EE6363;
}
</style>
</head>

<body>

	<center>
		<h3>归还图书信息!</h3>
	</center>

	<hr>
	<table border="1" align="center" cellpadding="0" cellspacing="0">
		<tr>
			<td rowspan="4" align="center"><img class="book_img"
				src=${back_img } /></td>
			<td width="561" height="65">书名:${ back_name}</td>
		</tr>
		<tr>
			<td height="50">每日租金(元):${ back_price}</td>
		</tr>
		<tr>
			<td height="47">借出天数(天):${ back_days}</td>
		</tr>
		<tr>
			<td>租金(元):${back_money }</td>
		</tr>
		<tr>
			<td colspan="2" align="center"><a
				href="listbook.do?page=${back_page }"><input type="button"
				name="button" id="bt" value="确定"></a></td>
		</tr>
	</table>


</body>
</html>

regist.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>用户注册</title>


</head>

<body>
	<center>
		<h3>用户注册</h3>
	</center>
	<hr>
	
	<form name="form1" method="post" action="regist.do">
	<table width="329" height="206" border="1" align="center"
		cellpadding="0" cellspacing="0">
		<tr>
			<td width="124" align="center">用户名:</td>
			<td width="199" align="center"><label for="textfield"></label> <input
				type="text" name="username" id="text_username" required="required" οnblur="checkUser()"></td>
		</tr>
		<tr>
			<td align="center">密码:</td>
			<td align="center"><label for="textfield2"></label> <input
				type="password" name="password" id="textfield2" required="required"></td>
		</tr>
		<tr>
			<td align="center">确认密码:</td>
			<td align="center"><label for="textfield3"></label> <input
				type="password" name="password2" id="textfield3" required="required"></td>
		</tr>
		<tr>
			<td colspan="2" align="center"><input id="bt" type="submit"
				name="button" value="立即注册" οnclick="return check_password()"></td>
		</tr>
	</table>
	
	</form>
	
	<script src="./js/jquery-3.2.1.min.js" type="text/javascript"></script>

	<script type="text/javascript" charset="UTF-8">
		window.onload = function() {
			document.getElementById("text_username").focus();
		}

		function check_password() {

			var password1 = document.getElementById('textfield2').value;

			var password2 = document.getElementById('textfield3').value;

			if (password1 == password2) {

				return true;

			} else {

				alert('密码不一致!');

				document.getElementById('textfield3').value = "";

				return false;

			}

		}

		function checkUser() {
			

			var userName = document.getElementById('text_username').value;

			$.ajax({
				type : "post",
				url : "checkuser.do",
				dataType : "text",
				data : {
					"name" : userName,
				},
				success : function(data) {
					

					if (data == "exists") {

						alert("该用户名已被注册!");
						document.getElementById("text_username").focus();

					}

					//$("#content").html("<span style='color:green;'>"+data+"</span>");
				},
				error : function(e) {
					// $("#content").html("<span style='color:red;'>请求失败</span>");

					alert("请求失败!");
					document.getElementById('text_username').value="";

					
				}
			});

		}
	</script>
</body>
</html>

failed.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<%
		String path = request.getContextPath();
		String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
	%>
	<base href="<%=basePath%>">
</head>
<body>
用户名错误,请重新输入
<a href="index.jsp">返回</a>
</body>
</html>

regist_success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
  <%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
    
 %>   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	
	<meta http-equiv="refresh" content="2;url=index.jsp"> 
</head>
<body>
注册成功,正在自动跳转...
<a href="index.jsp">登录</a>

</body>
</html>

main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>main</title>
<style>
body {
	background-repeat: no-repeat;
	background-attachment: fixed;
	background-image: url(images/main_bg.jpg);
	height: 100%;
	width: 100%;
	background-size: cover;
}

.book_img {
	width: 150px;
	height: 200px;
}

td {
	padding: 10px;
}
</style>
</head>

<body>

	<center>
		<h3>欢迎您:${sessionScope.username }</h3>
	</center>

	<h3 align="right" style="margin-right: 50px">
		<a href="index.jsp">切换用户</a>
	</h3>

	<hr>
	<table width="1235" height="211" border="1" align="center"
		cellpadding="0" cellspacing="0" bgcolor="#FDF5E6">


		<tr>
			<td width="175" align="center" bgcolor="#99FF99">封面</td>
			<td width="179" align="center" bgcolor="#99FF99">书名</td>
			<td width="200" align="center" bgcolor="#99FF99">描述</td>
			<td width="268" align="center" bgcolor="#99FF99">每日租金(元)</td>
			<td width="401" align="center" bgcolor="#99FF99">借出日期</td>
			<td width="401" align="center" bgcolor="#99FF99">操作</td>
		</tr>

		<c:forEach items="${requestScope.booklist}" var="book">
			<tr>
				<td align="center"><img class="book_img" src="${book.img_url }" /></td>
				<td align="center">${book.name }</td>
				<td>${book.info }</td>
				<td align="center">${book.price }</td>




				<td align="center">${book.borrow_date }</td>

				<c:choose>

					<c:when test="${book.borrow_date == '尚未借出' }">


						<td align="center"><input type="button" name="button"
							id="button" value="借出" οnclick="borrow_book(${book.id },${page})"
							style="background: #0F6"></td>


					</c:when>


					<c:otherwise>


						<td align="center"><input type="button" name="button"
							id="button" value="归还" style="background: #F06"
							οnclick="back_book(${book.id },${page})"></td>



					</c:otherwise>

				</c:choose>

			</tr>

		</c:forEach>

	</table>

	<table width="700" border="1" align="center" cellpadding="1"
		cellspacing="0">
		<tr align="center" bgcolor="#CCFFFF">
			<td><a href="listbook.do?page=1">首页</a></td>
			<!-- 显示第一页数据时,上页不可点击 -->
			<c:choose>

				<c:when test="${page ==1 }">

					<td>上页</td>
				</c:when>

				<c:otherwise>

					<td><a href="listbook.do?page=${page-1 }"> 上页</a></td>

				</c:otherwise>
			</c:choose>

			<!-- 显示最后一页数据时,下页不可点击 -->
			<c:choose>

				<c:when test="${page ==PageNum }">

					<td>下页</td>
				</c:when>

				<c:otherwise>

					<td><a href="listbook.do?page=${page+1 }"> 下页</a></td>

				</c:otherwise>
			</c:choose>

			<td><a href="listbook.do?page=${PageNum }">末页</a></td>

			<td>跳转到第 <input name="page" type="text" id="page" size="1"
				value="${page }" /> 页 <input type="button" name="turn" id="button2"
				value="确定" οnclick="turn(${PageNum})" /></td>

			<td>${page }/${PageNum}页</td>
		</tr>
	</table>

	<script type="text/javascript">
		function turn(maxpage) {

			var index = document.getElementById("page").value;
		
			/* 当输入页数为0或负数时,显示第一页 */

			if (index <= 0) {

				index = 1;

			}
			/* 当输入页数大于等于最后一页时,显示最后一页 */
			
			if(index>=maxpage){
				
				
				index=maxpage;
			}

		

			window.location.href = 'listbook.do?page=' + index;

		}
		
		
		function borrow_book(id,page){
			
			alert('借出成功!');
			
			
			window.location.href = 'borrow.do?id='+id+'&page='+page;

			
		}
		
		function back_book(id,page){
			
			alert('归还成功!');
			
			
			window.location.href = 'backbookshow.do?id='+id+'&back_page='+page;

			
		}
		
		
	</script>

</body>
</html>

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值