Java Web案例:学完Java Web后做的一个案例,为了巩固JavaWeb的知识,利于后续学习框架,如果有哪些地方写的不好 也请大家指教(#.#)
图书馆管理系统
项目介绍
IDE: eclipse
所用设计模式: 三层架构
语言: Java
数据库: MySQL
Web服务器: Tomcat
Action: Servlet
View: Jsp
JavaScript框架:jQuery
项目较小未用maven
无涉及Spring Spring-MVC Mybatis
主要功能
用户登录注销
用户信息编辑
图书详情
书本的添加、编辑、删除
下面放了一些模块的代码
登录servlet
package cn.book.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.book.entity.Admin;
import cn.book.service.IAdminService;
import cn.book.service.impl.AdminServiceImpl;
/**
-
登录功能的servlet
*/
public class LoginServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding(“UTF-8”);
response.setCharacterEncoding(“UTF-8”);
response.setContentType(“text/html; charset=UTF-8”);
String uName=request.getParameter(“uName”);
int uPwd=Integer.parseInt(request.getParameter(“uPwd”));
Admin admin=new Admin(uName,uPwd);
PrintWriter out=response.getWriter();IAdminService adminService=new AdminServiceImpl(); String count=adminService.queryAdminInfoByUnameandUpwd(admin);//通过用户名和密码查询用户 Admin oneAdmin=adminService.queryAdminByUname(uName);//查询一个用户的信息 if(count==null) { request.setAttribute("login", "noLogin"); }else { HttpSession session=request.getSession(); //session.setAttribute("admin", admin); session.setAttribute("uName", uName); //session.setAttribute("oneAdmin", oneAdmin);
// session.setMaxInactiveInterval(-1);//设置session的超时时间
ServletContext application= request.getServletContext();
application.setAttribute(“oneAdmin”, oneAdmin);
}
try{
Thread.sleep(500);
}catch(InterruptedException e) {
e.printStackTrace();
}catch(Exception e) {
e.printStackTrace();
}
request.getRequestDispatcher("QueryAllBookServlet").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
dao层
package cn.book.dao.impl;
/*
- 数据访问层的实现类
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import cn.book.dao.IBookDao;
import cn.book.entity.Book;
import cn.book.util.DBUtil;
//数据访问层:原子性的增删改查
public class BookDaoImpl implements IBookDao {
//判断该本书是否存在与数据库(增、删、改前必须判断)
public boolean isExist(int bookNum) {
return queryBookByNum(bookNum)==null?false:true;//true:本书存在;false:本书不存在
}
//增加书本
public boolean addBook(Book book) {
//使用DBUtil帮助类解决代码冗余
String sql="insert into books (bookNum,bookName,bookWriter,bookPress,bookPrice,bookIntroduce) values (?,?,?,?,?,?)";
Object[] obj=new Object[6];//数组的长度=sql语句的?占位符的个数
obj[0]=book.getBookNum();
obj[1]=book.getBookName();
obj[2]=book.getBookWriter();
obj[3]=book.getBookPress();
obj[4]=book.getBookPrice();
obj[5]=book.getBookIntroduce();
return DBUtil.executeUpdate(sql, obj);
}
//根据书本编号删除书本
public boolean deleteBookByNum(int bookNum) {
String sql="delete from books where bookNum=?";
Object[] obj=new Object[1];//数组的长度=sql语句的?占位符的个数
obj[0]=bookNum;
return DBUtil.executeUpdate(sql, obj);
}
//根据书本编号修改书本信息:修改成book
public boolean updateBookByNum(int bookNum,Book book) {
String sql="update books set bookName=?,bookWriter=?,bookPress=?,bookPrice=?,bookIntroduce=? where bookNum=?";
Object[] obj=new Object[6];//数组的长度=sql语句的?占位符的个数
obj[0]=book.getBookName();
obj[1]=book.getBookWriter();
obj[2]=book.getBookPress();
obj[3]=book.getBookPrice();
obj[4]=book.getBookIntroduce();
obj[5]=bookNum;
return DBUtil.executeUpdate(sql, obj);
}
//查询全部书本
public List<Book> queryAllBook() {
Book book=null;
ResultSet rs=null;
List<Book> books=new ArrayList<>();
String sql="select * from books";
//没有?占位符
rs=DBUtil.executeQuery(sql, null);
try {
while(rs.next()) {
int num=rs.getInt("bookNum");
String name=rs.getString("bookName");
String writer=rs.getString("bookWriter");
String press=rs.getString("bookPress");
double price=rs.getDouble("bookPrice");
String introduce=rs.getString("bookIntroduce");
book=new Book(num,name,writer,press,price,introduce);
books.add(book);//list集合
}
}catch (SQLException e) {
e.printStackTrace();
}
finally {//外界使用ResultSet 需要自行关闭
DBUtil.clossAll(rs, DBUtil.pstmt, DBUtil.con);//调用帮助类的close通用方法
}
return books;
}
//根据书本编号查一本书
public Book queryBookByNum(int bookNum) {
Book book=null;
ResultSet rs=null;
String sql="select * from books where bookNum=?";
Object[] obj=new Object[1];//数组的长度=sql语句的?占位符的个数
obj[0]=bookNum;
rs=DBUtil.executeQuery(sql,obj);
try {
if(rs.next()) {
int num=rs.getInt("bookNum");
String name=rs.getString("bookName");
String writer=rs.getString("bookWriter");
String press=rs.getString("bookPress");
double price=rs.getDouble("bookPrice");
String introduce=rs.getString("bookIntroduce");
book=new Book(num,name,writer,press,price,introduce);
}
return book;
} catch (SQLException e) {
e.printStackTrace();
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}finally {//外界使用ResultSet 需要自行关闭
DBUtil.clossAll(rs, DBUtil.pstmt, DBUtil.con);//调用帮助类的close通用方法
}
}
}