书城项目全部代码1

简介: 书城项目全部代码1

分栏

书城项目-第一阶段:表单验证的实现

https://blog.csdn.net/qq_51625007/article/details/117197615

书城第二阶段——用户注册和登录

https://blog.csdn.net/qq_51625007/article/details/119642283

书城项目第三阶段及其源码

https://blog.csdn.net/qq_51625007/article/details/119838878

书城-第四阶段

https://blog.csdn.net/qq_51625007/article/details/119853085

书城项目第五阶段-图书模块

https://blog.csdn.net/qq_51625007/article/details/119853114

书城项目第五阶段-图书分页

https://blog.csdn.net/qq_51625007/article/details/119865262

书城项目第六阶段

https://blog.csdn.net/qq_51625007/article/details/119894580

书城项目第六、七阶段

https://blog.csdn.net/qq_51625007/article/details/119904621

书城第七阶段补充

https://blog.csdn.net/qq_51625007/article/details/120106587

书城项目第八阶段:使用Filter过滤器实现后台的权限管理

https://blog.csdn.net/qq_51625007/article/details/120164999

书城项目第九阶段

https://blog.csdn.net/qq_51625007/article/details/120186531

样式

源码

book 框架



src

com.atguigu

dao 框架

dao 代码

impl
BookDaoImpl
package com.atguigu.dao.impl;
import com.atguigu.dao.BaseDao;
import com.atguigu.dao.BookDao;
import com.atguigu.pojo.Book;
import java.util.List;
public class BookDaoImpl extends BaseDao implements BookDao {
    @Override
    public int addBook(Book book) {
        String sql="insert into t_book(name,author,price,sales,stock,img_path) values(?,?,?,?,?,?)";
        return update(sql,book.getName(),book.getAuthor(),book.getPrice(),book.getSales(),book.getStock(),book.getImgPath());
    }
    @Override
    public int deleteBook(Integer id) {
        String sql="delete from t_book where id=?";
        return update(sql,id);
    }
    @Override
    public int updateBook(Book book) {
        System.out.println("BookDaoImpl 程序在["+Thread.currentThread().getName()+"]中");
        String sql ="update t_book set name=?,author=?,price=?,sales=?,stock=?,img_path=? where id=?";
        return update(sql,book.getName(),book.getAuthor(),book.getPrice(),book.getSales(),book.getStock(),book.getImgPath(),book.getId());
    }
    @Override
    public Book queryBookById(Integer id) {
        String sql="select id,name,author,price,sales,stock,img_path imgPath from t_book where id=?";
        return queryForOne(Book.class,sql,id);
    }
    @Override
    public List<Book> queryBooks() {
        String sql="select id,name,author,price,sales,stock,img_path imgPath from t_book";
        return queryForList(Book.class,sql);
    }
    @Override
    public Integer queryForPageTotalCount() {
        String sql="select count(*) from t_book";
        Number count= (Number) queryForSingleValue(sql);
        return count.intValue();
    }
    @Override
    public List<Book> queryForPageItems(int begin, int pageSize) {
        String sql="select id,name,author,price,sales,stock,img_path imgPath from t_book limit ?,?";
        return queryForList(Book.class,sql,begin,pageSize);
    }
    //Ctrl+I
    @Override
    public Integer queryForPageTotalCountByPrice(int min, int max) {
        String sql="select count(*) from t_book where price between ? and ?";
        Number count= (Number) queryForSingleValue(sql,min,max);
        return count.intValue();
    }
    @Override
    public List<Book> queryForPageItemsByPrice(int begin, int pageSize, int min, int max) {
        String sql="select id,name,author,price,sales,stock,img_path imgPath" +
                " from t_book where price between ? and ? order by price limit ?,?";
        return queryForList(Book.class,sql,min,max,begin,pageSize);
    }
}

OrderDaoImpl

package com.atguigu.dao.impl;
import com.atguigu.dao.BaseDao;
import com.atguigu.dao.OrderDao;
import com.atguigu.pojo.Order;
import java.util.List;
public class OrderDaoImpl extends BaseDao implements OrderDao {
    @Override
    public int saveOrder(Order order) {
        System.out.println("OrderDaoImpl 程序在["+Thread.currentThread().getName()+"]中");
        String sql="insert into t_order(order_id,create_time,price,status,user_id)values(?,?,?,?,?)";
        return update(sql,order.getOrderId(),order.getCreateTime(),order.getPrice(),order.getStatus(),order.getUserId());
    }
    @Override
    public List<Order> queryOrders() {
        String sql = "select order_id orderId,create_time createTime,price,status,user_id from t_order";
        return queryForList(Order.class, sql);
    }
    @Override
    public int changeOrderStatus(String orderId, int status) {
        String sql="update t_order set status=? where order_id=?";
        return update(sql,status,orderId);
    }
    @Override
    public List<Order> queryByUserId(int userId) {
        String sql = "select order_id orderId,create_time createTime,price,status,user_id from t_order where user_id=?";
        return queryForList(Order.class,sql,userId);
    }
}

OrderItemDaoImpl

package com.atguigu.dao.impl;
import com.atguigu.dao.BaseDao;
import com.atguigu.dao.OrderItemDao;
import com.atguigu.pojo.OrderItem;
import java.util.List;
public class OrderItemDaoImpl extends BaseDao implements OrderItemDao {
    @Override
    public int saveOrderItem(OrderItem orderItem) {
        System.out.println("OrderItemDaoImpl 程序在["+Thread.currentThread().getName()+"]中");
        String sql="insert into t_order_item(name,count,price,total_price,order_id)values(?,?,?,?,?)";
        return update(sql,orderItem.getName(),orderItem.getCount(),orderItem.getPrice(),orderItem.getTotalPrice(),orderItem.getOrderId());
    }
    @Override
    public List<OrderItem> queryOrderItemByOrderId(String orderId) {
        String sql="select id,name,count,price,total_price totalPrice,order_id orderId from t_order_item where order_id=?";
        return queryForList(OrderItem.class,sql,orderId);
    }
}

UserDaoImpl

package com.atguigu.dao.impl;
import com.atguigu.dao.BaseDao;
import com.atguigu.dao.UserDao;
import com.atguigu.pojo.User;
public class UserDaoImpl extends BaseDao implements UserDao {
    @Override
    public User queryUserByUsername(String username) {
        String sql="select id,username,password,email from t_user where username=?";
        return queryForOne(User.class,sql,username);
    }
    @Override
    public User queryUserByUsernameAndPassword(String username, String password) {
        String sql="select id,username,password,email from t_user where username=?and password=?";
        return queryForOne(User.class,sql,username,password);
    }
    @Override
    public int saveUser(User user) {
        String sql="insert into t_user(username,password,email) values (?,?,?)";
        return update(sql,user.getUsername(),user.getPassword(),user.getEmail());
    }
}
BaseDao
package com.atguigu.dao;
import com.atguigu.utils.JdbcUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
public abstract class BaseDao {
    //使用DbUtils操作数据库
    private QueryRunner queryRunner=new QueryRunner();
    /**
     * update() 方法用来执行,Insert\Update\Delete语句
     * @return 如果返回-1,说明执行失败<br/>返回其他表示影响的行数
     */
    public int update(String sql,Object... args){
        System.out.println("BaseDao 程序在["+Thread.currentThread().getName()+"]中");
        Connection connection= JdbcUtils.getConnection();
        try {
            return queryRunner.update(connection,sql,args);
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    /**
     * 查询返回一个javabean的sql语句
     * @param type 返回的对象类型
     * @param sql 执行的sql语句
     * @param args sql对应的参数值
     * @param <T> 返回类型的泛型
     * @return
     */
    public <T> T queryForOne(Class<T> type,String sql,Object... args){
        Connection con=JdbcUtils.getConnection();
        try {
            return queryRunner.query(con,sql,new BeanHandler<T>(type),args);
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    /**
     * 查询返回多个javabean的sql语句
     * @param type 返回的对象类型
     * @param sql 执行的sql语句
     * @param args sql对应的参数值
     * @param <T> 返回类型的泛型
     * @return
     */
    public <T>List<T> queryForList(Class<T> type,String sql,Object... args){
        Connection con=JdbcUtils.getConnection();
        try {
            return queryRunner.query(con,sql,new BeanListHandler<T>(type),args);
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    /**
     * 执行返回一行一列的sql语句
     * @param sql 执行的sql语句
     * @param args sql对应的参数值
     * @return
     */
    public Object queryForSingleValue(String sql,Object... args){
        Connection conn=JdbcUtils.getConnection();
        try {
            return queryRunner.query(conn,sql,new ScalarHandler(),args);
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
}
BookDao
package com.atguigu.dao;
import com.atguigu.pojo.Book;
import java.util.List;
public interface BookDao {
    //Ctrl+Shift+T
    public int addBook(Book book);
    public int deleteBook(Integer id );
    public int updateBook(Book book);
    public Book queryBookById(Integer id);
    public List<Book> queryBooks();
    Integer queryForPageTotalCount();
    List<Book> queryForPageItems(int begin, int pageSize);
    Integer queryForPageTotalCountByPrice(int min, int max);
    List<Book> queryForPageItemsByPrice(int begin, int pageSize, int min, int max);
}
OrderDao
package com.atguigu.dao;
import com.atguigu.pojo.Order;
import java.util.List;
public interface OrderDao {
    public int saveOrder(Order order);
    public List<Order> queryOrders();
    public int changeOrderStatus(String orderId,int status);
    public  List<Order> queryByUserId(int userId);
}
OrderItemDao
package com.atguigu.dao;
import com.atguigu.pojo.OrderItem;
import java.util.List;
public interface OrderItemDao {
    public int saveOrderItem(OrderItem orderItem);
    public List<OrderItem> queryOrderItemByOrderId(String orderId);
}
UserDao
package com.atguigu.dao;//ALT+Enter  Move...
import com.atguigu.pojo.User;
public interface UserDao {
    //Ctrl+Shift+T
    /**
     * 根据 用户名查询用户信息
     * @param username 用户名
     * @return 如果返回null,说明没有这个用户。
     */
    public User queryUserByUsername(String username);
    /**
     * 根据 用户名和密码查询用户信息
     * @param username
     * @param password
     * @return 如果返回null,说明没有这个用户。
     */
    public User queryUserByUsernameAndPassword(String username,String password);
    /**
     * 保存用户信息
     * @param user
     * @return 返回-1表示操作失败,其他是sql语句影响的行数
     */
    public int saveUser(User user);
}

filter 框架

filter 代码

ManageFilter
package com.atguigu.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class ManageFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpServletRequest= (HttpServletRequest) servletRequest;
        Object user = httpServletRequest.getSession().getAttribute("user");
        if (user==null){
            httpServletRequest.getRequestDispatcher("/pages/user/login.jsp").forward(servletRequest,servletResponse);
        }else {
            filterChain.doFilter(servletRequest,servletResponse);
        }
    }
    @Override
    public void destroy() {
    }
}
TransactionFilter
package com.atguigu.filter;
import com.atguigu.utils.JdbcUtils;
import javax.servlet.*;
import java.io.IOException;
public class TransactionFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        try {
            filterChain.doFilter(servletRequest,servletResponse);
            JdbcUtils.commitAndClose();//提交事务
        } catch (Exception e) {
            JdbcUtils.rollbackAndClose();//回滚事务
            e.printStackTrace();
            throw new RuntimeException(e);//把异常抛给Tomcat管理展示友好的错误页面
        }
    }
    @Override
    public void destroy() {
    }
}

pojo 框架

相关文章
|
6天前
|
Java BI 数据库
基于SSM框架实现面向小微企业的简历管理系统企业简历管理系统(分前后台spring+springmvc+mybatis+maven+jsp+css+echarts)
基于SSM框架实现面向小微企业的简历管理系统企业简历管理系统(分前后台spring+springmvc+mybatis+maven+jsp+css+echarts)
|
6月前
|
前端开发 JavaScript Java
编写整个购物网站的项目代码指导
编写整个购物网站的项目代码
67 1
|
9月前
|
前端开发
书城项目全部代码4
书城项目全部代码4
37 0
|
9月前
|
前端开发 JavaScript Java
书城项目第三阶段及其源码2
书城项目第三阶段及其源码2
28 0
|
9月前
|
数据库
书城项目第六、七阶段2
书城项目第六、七阶段2
31 1
|
9月前
书城项目第六、七阶段1
书城项目第六、七阶段1
26 0
|
9月前
|
前端开发 Java 程序员
书城项目第五阶段-图书模块1
书城项目第五阶段-图书模块1
63 0
|
9月前
|
前端开发 Java 关系型数据库
estore网上书城项目分享
estore网上书城项目分享
64 0
|
9月前
书城项目全部代码2
书城项目全部代码2
30 0
|
9月前
书城项目全部代码3
书城项目全部代码3
68 0