User: shuijianshiqing
Date: 2020/5/24
Time: 10:51
To change this template use File | Settings | File Templates.
–%>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” pageEncoding=“UTF-8” %>
<%@ page import=“com.sjsq.po.Book” %>
<%@ page import=“com.sjsq.service.BookService” %>
<%@ page import=“com.sjsq.service.impl.BookServiceImpl” %>
<%
// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
String path = request.getContextPath();
String basePath = request.getScheme() + “😕/” + request.getServerName() + “:”
- request.getServerPort() + path + “/”;
%>
<%
Book book = new Book();
String sid = request.getParameter(“bookid”);
Integer id = Integer.parseInt(sid);
BookService service = new BookServiceImpl();
book.setBookid(id);
Book bookCur = service.getBook(book);
// 控制台打印出类的信息(日志的前身)
System.out.print(“doInfo.jsp的信息–>”);
System.out.println(bookCur);
session.setAttribute(“book”, bookCur);
response.sendRedirect(“detail.jsp”);
%>
doregister.jsp
<%–
Created by IntelliJ IDEA.
User: shuijianshiqing
Date: 2020/5/21
Time: 23:45
To change this template use File | Settings | File Templates.
–%>
<%@page import=“com.sjsq.dao.impl.UserDaoImpl”%>
<%@page import=“com.sjsq.dao.UserDao”%>
<%@page import=“com.sjsq.po.User”%>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” pageEncoding=“UTF-8”%>
<%
// 设置获取注册时的编码为UTF-8
request.setCharacterEncoding(“UTF-8”);
User user=new User();
//获取register.jsp页面提交的账号和密码
String name=request.getParameter(“name”);
String password=request.getParameter(“password”);
String email=request.getParameter(“email”);
String phone=request.getParameter(“phone”);
//获取register.jsp页面提交的账号和密码设置到实体类User中
user.setName(name);
user.setPassword(password);
user.setEmail(email);
user.setPhone(phone);
//引入数据交互层
UserDao dao=new UserDaoImpl();
boolean flag=dao.register(user);
if(flag){
response.sendRedirect(“login.jsp”);
}else{
response.sendRedirect(“register.jsp”);
}
%>
dosearchPassword.jsp
<%–
Created by IntelliJ IDEA.
User: shuijianshiqing
Date: 2020/5/22
Time: 23:23
To change this template use File | Settings | File Templates.
–%>
<%@page import=“java.util.List”%>
<%@page import=“com.sjsq.service.impl.UserServiceImpl”%>
<%@page import=“com.sjsq.po.User”%>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” pageEncoding=“UTF-8” %>
<%
// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
String path = request.getContextPath();
String basePath = request.getScheme() + “😕/” + request.getServerName() + “:”
- request.getServerPort() + path + “/”;
%>
<%
User user=new User();
//获取searchPassword.jsp页面提交的账号和密码
String name=request.getParameter(“name”);
user.setName(name);
UserServiceImpl service=new UserServiceImpl();
List list=service.selectUser(user);
request.setAttribute(“list”, list);
for(User u:list){
request.setAttribute(“user”, u);
out.print(u);
}
if(user!=null){
//response.sendRedirect(“search.jsp”);//不传输数据的转发
request.getRequestDispatcher(“search.jsp”).forward(request, response);
}
%>
fail.jsp
<%–
Created by IntelliJ IDEA.
User: shuijianshiqing
Date: 2020/5/26
Time: 23:14
To change this template use File | Settings | File Templates.
–%>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
现存图书列表
登录失败
info.jsp
<%–
Created by IntelliJ IDEA.
User: shuijianshiqing
Date: 2020/5/26
Time: 22:56
To change this template use File | Settings | File Templates.
–%>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” pageEncoding=“UTF-8” %>
<%@ page import=“com.sjsq.po.User”%>
<%@ page import=“com.sjsq.dao.UserDao”%>
<%@ page import=“com.sjsq.dao.impl.UserDaoImpl”%>
<%@ page import=“com.sjsq.service.UserService” %>
<%@ page import=“com.sjsq.service.impl.UserServiceImpl” %>
<%@ page import=“java.util.List” %>
<%
// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
String path = request.getContextPath();
String basePath = request.getScheme() + “😕/” + request.getServerName() + “:”
- request.getServerPort() + path + “/”;
%>
现存图书列表
---装饰中---
<%
// 设置接收的编码为UTF-8
request.setCharacterEncoding(“utf-8”);
User user = new User();
UserDao dao = new UserDaoImpl();
String name = request.getParameter(“name”);
String password=request.getParameter(“password”);
user.setName(name);
user.setPassword(password);
User us=dao.login(user);
// 把数据库里面的User获取出来
UserService service = new UserServiceImpl();
List list = service.selectUser(user);
for(int i=0;i<list.size();i++){
user = list.get(i);
}
System.out.println(“显示用户信息:”);
System.out.println(user);
session.setAttribute(“user”,user);
if(us != null){
response.sendRedirect(“book.jsp”);
}else{
response.sendRedirect(“fail.jsp”);
}
%>
login.jsp
<%–
Created by IntelliJ IDEA.
User: shuijianshiqing
Date: 2020/5/19
Time: 22:44
To change this template use File | Settings | File Templates.
–%>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” pageEncoding=“UTF-8” %>
<%
// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
String path = request.getContextPath();
String basePath = request.getScheme() + “😕/” + request.getServerName() + “:”
- request.getServerPort() + path + “/”;
%>
用户登录
---正在美化中---
logout.jsp
<%–
Created by IntelliJ IDEA.
User: shuijianshiqing
Date: 2020/5/25
Time: 21:51
To change this template use File | Settings | File Templates.
–%>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” pageEncoding=“UTF-8” %>
<%
session.invalidate();
response.sendRedirect(“login.jsp”);
%>
register.jsp
<%–
Created by IntelliJ IDEA.
User: shuijianshiqing
Date: 2020/5/21
Time: 23:14
To change this template use File | Settings | File Templates.
–%>
<%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8” %>
用户注册
---装饰中---
注册
重置
search.jsp
<%–
Created by IntelliJ IDEA.
User: shuijianshiqing
Date: 2020/5/22
Time: 23:28
To change this template use File | Settings | File Templates.
–%>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” pageEncoding=“UTF-8” %>
<%
// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
String path = request.getContextPath();
String basePath = request.getScheme() + “😕/” + request.getServerName() + “:”
- request.getServerPort() + path + “/”;
%>
您的密码是:${user.password}
返回上一级
searchPassword.jsp
<%–
Created by IntelliJ IDEA.
User: shuijianshiqing
Date: 2020/5/22
Time: 23:14
To change this template use File | Settings | File Templates.
–%>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” pageEncoding=“UTF-8” %>
<%
// 获取绝对路径路径 ,开发项目一定要使用绝对路径,不然肯定出错
String path = request.getContextPath();
String basePath = request.getScheme() + “😕/” + request.getServerName() + “:”
- request.getServerPort() + path + “/”;
%>
找回密码
返回上一级
Book
package com.sjsq.po;
import java.io.Serializable;
/**
-
@author shuijianshiqing
-
@date 2020/5/19 22:40
*/
public class Book implements Serializable {
private static final long serialVersionUID = 1L;
private Integer bookid;
private String bookname;
private Double price;
private String author;
private String picture;
private String publish;
public static long getSerialVersionUID() {
return serialVersionUID;
}
public Integer getBookid() {
return bookid;
}
public void setBookid(Integer bookid) {
this.bookid = bookid;
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPicture() {
return picture;
}
public void setPicture(String picture) {
this.picture = picture;
}
public String getPublish() {
return publish;
}
public void setPublish(String publish) {
this.publish = publish;
}
@Override
public String toString() {
return “Book{” +
“bookid=” + bookid +
“, bookname='” + bookname + ‘’’ +
“, price=” + price +
“, author='” + author + ‘’’ +
“, picture='” + picture + ‘’’ +
“, publish='” + publish + ‘’’ +
‘}’;
}
}
Card
package com.sjsq.po;
/**
-
@author shuijianshiqing
-
@date 2020/5/29 19:34
*/
public class Card {
// 主键
private Integer id;
// 用户Id
private Integer userid;
// 用户名
private String username;
// 书名
private Integer bookid;
// 书本的数量
private int booknum;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getBookid() {
return bookid;
}
public void setBookid(Integer bookid) {
this.bookid = bookid;
}
public int getBooknum() {
return booknum;
}
public void setBooknum(int booknum) {
this.booknum = booknum;
}
@Override
public String toString() {
return “Card{” +
“id=” + id +
“, userid=” + userid +
“, username='” + username + ‘’’ +
“, bookid=” + bookid +
“, booknum=” + booknum +
‘}’;
}
}
User
package com.sjsq.po;
import java.io.Serializable;
/**
-
@author shuijianshiqing
-
@date 2020/5/19 22:19
-
用户的实体类
*/
public class User implements Serializable {
// 增加序列号,作用是反序列化的时候不会报错,切能进行IO的持久化
public static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String password;
private String email;
private String phone;
public static long getSerialVersionUID() {
return serialVersionUID;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return “User{” +
“id=” + id +
“, name='” + name + ‘’’ +
“, password='” + password + ‘’’ +
“, email='” + email + ‘’’ +
“, phone='” + phone + ‘’’ +
‘}’;
}
}
BookDao
package com.sjsq.dao;
import com.sjsq.po.Book;
import java.util.List;
/**
-
@author shuijianshiqing
-
@date 2020/5/20 23:13
-
图书信息接口
*/
public interface BookDao {
/**
-
查询图书信息
-
@param sql
-
@param arr
-
@return
*/
public List select(String sql,Object[] arr);
/**
-
根据图书编号进行查询
-
@param id
-
@return
*/
public Book getBook(Integer id);
}
CardDao
package com.sjsq.dao;
import com.sjsq.po.Book;
import com.sjsq.po.Card;
import com.sjsq.po.User;
import java.util.List;
/**
-
@author shuijianshiqing
-
@date 2020/5/29 19:42
*/
public interface CardDao {
/**
-
通过用户Id获取用户的购物车
-
@param id
-
@return
*/
public List getCard(Integer id);
/**
-
添加用户信息和图书信息到用户的购物车
-
@param user
-
@param book
-
@param booknum
-
@return
*/
public boolean addCard(User user, Book book,Integer booknum);
/**
-
使用Book来获取booknum
-
@param book
-
@return
*/
public Integer getBookNum(Book book);
}
UserDao
package com.sjsq.dao;
import com.sjsq.po.User;
import java.util.List;
/**
-
@author shuijianshiqing
-
@date 2020/5/20 22:10
-
创建一个接口用于声明用户登录注册的方法
*/
public interface UserDao {
/**
-
用户登录
-
@param user
-
@return
*/
public User login(User user);
/**
-
用户注册
-
@param user
-
@return
*/
public boolean register(User user);
/**
-
查询用户信息
-
@param sql
-
@param arr
-
@return
*/
public List selectUser(String sql,Object arr[]);
}
BookService
package com.sjsq.service;
import com.sjsq.po.Book;
import java.util.List;
/**
-
@author shuijianshiqing
-
@date 2020/5/20 23:37
-
Book的Service层
*/
public interface BookService {
/**
-
查询图书信息
-
@param book
-
@return
*/
public List select(Book book);
/**
-
根据编号来查询
-
@param book
-
@return
*/
public Book getBook(Book book);
}
CardService
package com.sjsq.service;
import com.sjsq.po.Book;
import com.sjsq.po.Card;
import com.sjsq.po.User;
import java.util.List;
/**
-
@author shuijianshiqing
-
@date 2020/5/29 23:00
*/
public interface CardService {
/**
-
获取用户的购物车
-
@param id
-
@return
*/
public List getCard(Integer id);
/**
-
添加用户信息和图书信息到用户的购物车
-
@param user
-
@param book
-
@param booknum
-
@return
*/
public boolean addCard(User user, Book book, Integer booknum);
/**
-
根据Book获取booknum
-
@param book
-
@return
*/
public Integer getBookNum(Book book);
}
UserService
package com.sjsq.service;
import com.sjsq.po.User;
import java.util.List;
/**
-
@author shuijianshiqing
-
@date 2020/5/20 22:54
-
Service层
*/
public interface UserService {
/**
-
用户查询的信息
-
@param user
-
@return
*/
public List selectUser(User user);
}
BookServiceImpl
package com.sjsq.service.impl;
import com.sjsq.dao.BookDao;
import com.sjsq.dao.impl.BookDaoImpl;
import com.sjsq.po.Book;
import com.sjsq.service.BookService;
import java.util.ArrayList;
import java.util.List;
/**
-
@author shuijianshiqing
-
@date 2020/5/20 23:42
-
Book的Service实现层
*/
public class BookServiceImpl implements BookService {
private BookDao dao = new BookDaoImpl();
/**
-
查询所有图书信息
-
@param book
-
@return
*/
@Override
public List select(Book book) {
StringBuffer sql = new StringBuffer("select * from book where 1 = 1 ");
List list = new ArrayList();
if(book != null){
// 根据bookid来查找对应的书籍
if(book.getBookid() != null && book.getBookid() != 0){
sql.append(" and bookid = ?");
list.add(book.getBookid());
}
}
return dao.select(sql.toString(),list.toArray());
}
/**
-
根据图书编号查询信息
-
@param book
-
@return
*/
@Override
public Book getBook(Book book) {
if(book.getBookid() != null && book.getBookid() != 0){
return dao.getBook(book.getBookid());
}
return null;
}
}
CardServiceImpl
package com.sjsq.service.impl;
import com.sjsq.dao.CardDao;
import com.sjsq.dao.impl.CardDaoImpl;
import com.sjsq.po.Book;
import com.sjsq.po.Card;
import com.sjsq.po.User;
import com.sjsq.service.CardService;
import java.util.List;
/**
-
@author shuijianshiqing
-
@date 2020/5/29 23:01
*/
public class CardServiceImpl implements CardService {
private CardDao dao = new CardDaoImpl();
@Override
public List getCard(Integer id) {
if(id != null){
return dao.getCard(id);
}
return null;
}
/**
-
添加信息到购物车
-
@param user
-
@param book
-
@param booknum
-
@return
*/
@Override
public boolean addCard(User user, Book book, Integer booknum) {
return dao.addCard(user,book,booknum);
}
/**
-
根据Book查询booknum
-
@param book
-
@return
*/
@Override
public Integer getBookNum(Book book) {
if(dao.getBookNum(book) == null){
return 0;
}
return dao.getBookNum(book);
}
}
UserServiceImpl
package com.sjsq.service.impl;
import com.sjsq.dao.UserDao;
import com.sjsq.dao.impl.UserDaoImpl;
import com.sjsq.po.User;
import com.sjsq.service.UserService;
import java.util.ArrayList;
import java.util.List;
/**
-
@author shuijianshiqing
-
@date 2020/5/20 22:56
*/
public class UserServiceImpl implements UserService {
// 定义dao对象
private UserDao dao = new UserDaoImpl();
/**
-
查询用户信息
-
@param user
-
@return
*/
@Override
public List selectUser(User user) {
StringBuffer sql = new StringBuffer("select * from user where 1 = 1 ");
List list = new ArrayList();
if(user != null){
// 按照姓名查询
if(user.getName() != null && !user.getName().equals(“”)){
sql.append(" and name = ?");
list.add(user.getName());
}
// 按照email查询
if(user.getEmail() != null && !user.getEmail().equals(“”)){
sql.append(" and email = ?");
list.add(user.getEmail());
}
}
// 交给dao层处理逻辑
return dao.selectUser(sql.toString(),list.toArray());
}
}
BaseDao
package com.sjsq.utils;
import java.sql.*;
/**
-
@author shuijianshiqing
-
@date 2020/5/19 23:08
-
数据交互层dao层
*/
public class BaseDao {
private static String driver = “com.mysql.cj.jdbc.Driver”;
private static String url = “jdbc:mysql://localhost/book_management?serverTimezone=UTC”;
private static String user = “root”;
private static String password = “admin”;
/**
言尽于此,完结
无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。
- 第一,设计模式能让专业人之间交流方便,如下:
程序员A:这里我用了XXX设计模式
程序员B:那我大致了解你程序的设计思路了
- 第二,易维护
项目经理:今天客户有这样一个需求…
程序员:明白了,这里我使用了XXX设计模式,所以改起来很快
- 第三,设计模式是编程经验的总结
程序员A:B,你怎么想到要这样去构建你的代码
程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题
- 第四,学习设计模式并不是必须的
程序员A:B,你这段代码使用的是XXX设计模式对吗?
程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的
从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!
搜集费时费力,能看到此处的都是真爱!
/
@Override
public boolean addCard(User user, Book book, Integer booknum) {
return dao.addCard(user,book,booknum);
}
/**
-
根据Book查询booknum
-
@param book
-
@return
*/
@Override
public Integer getBookNum(Book book) {
if(dao.getBookNum(book) == null){
return 0;
}
return dao.getBookNum(book);
}
}
UserServiceImpl
package com.sjsq.service.impl;
import com.sjsq.dao.UserDao;
import com.sjsq.dao.impl.UserDaoImpl;
import com.sjsq.po.User;
import com.sjsq.service.UserService;
import java.util.ArrayList;
import java.util.List;
/**
-
@author shuijianshiqing
-
@date 2020/5/20 22:56
*/
public class UserServiceImpl implements UserService {
// 定义dao对象
private UserDao dao = new UserDaoImpl();
/**
-
查询用户信息
-
@param user
-
@return
*/
@Override
public List selectUser(User user) {
StringBuffer sql = new StringBuffer("select * from user where 1 = 1 ");
List list = new ArrayList();
if(user != null){
// 按照姓名查询
if(user.getName() != null && !user.getName().equals(“”)){
sql.append(" and name = ?");
list.add(user.getName());
}
// 按照email查询
if(user.getEmail() != null && !user.getEmail().equals(“”)){
sql.append(" and email = ?");
list.add(user.getEmail());
}
}
// 交给dao层处理逻辑
return dao.selectUser(sql.toString(),list.toArray());
}
}
BaseDao
package com.sjsq.utils;
import java.sql.*;
/**
-
@author shuijianshiqing
-
@date 2020/5/19 23:08
-
数据交互层dao层
*/
public class BaseDao {
private static String driver = “com.mysql.cj.jdbc.Driver”;
private static String url = “jdbc:mysql://localhost/book_management?serverTimezone=UTC”;
private static String user = “root”;
private static String password = “admin”;
/**
言尽于此,完结
无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。
- 第一,设计模式能让专业人之间交流方便,如下:
程序员A:这里我用了XXX设计模式
程序员B:那我大致了解你程序的设计思路了
- 第二,易维护
项目经理:今天客户有这样一个需求…
程序员:明白了,这里我使用了XXX设计模式,所以改起来很快
- 第三,设计模式是编程经验的总结
程序员A:B,你怎么想到要这样去构建你的代码
程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题
- 第四,学习设计模式并不是必须的
程序员A:B,你这段代码使用的是XXX设计模式对吗?
程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的
[外链图片转存中…(img-b5knzWCy-1719258178057)]
从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!
[外链图片转存中…(img-irkM5u1I-1719258178058)]
搜集费时费力,能看到此处的都是真爱!