基于javaweb的书籍管理系统(java+ssm+jsp+javascript+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的书籍管理系统(java+SSM+JSP+JavaScript+mysql)
项目介绍
本项目包含管理员、用户两种角色;
管理员角色包含以下功能:
登录页面,管理员管理书籍,用户管理等功能。
用户角色包含以下功能:
首页,用户登录页面,电子书查看页面,下载电子书,查看分类,用户上传图书,查看个人中心,添加反馈,查看反馈等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本; 6.是否Maven项目:是;
技术栈
- 后端:Spring+SpringMVC+Mybatis 2. 前端:JSP+CSS+JavaScript
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中config.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,在浏览器中输入http://localhost:8080/ssm_ebooknet 登录
图书管理控制层:
/**
- @State 图书管理控制层
*/
@Controller
@RequestMapping(“/book”)
@SessionAttributes({“bookTypeList”})
public class BookController {
@Autowired
private IBookTypeService iBookTypeService;
@Autowired
private IBookService iBookService;
@Autowired
private ISupplierService iSupplierService;
/**
-
图书列表
-
@param model
-
@return
*/
@GetMapping(“/home”)
public String toAdminHome(
@RequestParam(defaultValue = “1”) Integer num,
@RequestParam(defaultValue = “5”)Integer size,
Model model
) {
// 获取导航栏
List bookTypeList = iBookTypeService.findAllBookType(1,100 );
model.addAttribute(“bookTypeList”, bookTypeList);
// 获取供应商
List supplierList = iSupplierService.findAllSupplier(1,100);
model.addAttribute(“supplierList”, supplierList);
// 获取图书
List booksList = iBookService.findAllBook(num,size);
PageInfo booksPageInfo = new PageInfo<>(booksList);
model.addAttribute(“booksPageInfo”, booksPageInfo);
return “/backstage/home”;
/**
-
图书列表
-
@param model
-
@return
*/
@GetMapping(“/home1”)
public @ResponseBody PageInfo toAdminHome1(
@RequestParam(defaultValue = “1”) Integer num,
@RequestParam(defaultValue = “5”)Integer size,
Model model
) {
// 获取导航栏
List bookTypeList = iBookTypeService.findAllBookType(1,100);
model.addAttribute(“bookTypeList”, bookTypeList);
// 获取供应商
List supplierList = iSupplierService.findAllSupplier(1,100 );
model.addAttribute(“supplierList”, supplierList);
// 获取图书
List booksList = iBookService.findAllBook(num,size);
PageInfo booksPageInfo = new PageInfo<>(booksList);
return booksPageInfo;
/**
-
上传图书图片
-
@param request
-
@param file
-
@return
*/
@PostMapping(“/uploadimg”)
public @ResponseBody int uploadimg(HttpServletRequest request, MultipartFile file) {
int i = iBookService.uploadImage(request,file);
return i;
/**
-
上传详情图片
-
@param request
-
@param file
-
@return
*/
@PostMapping(“/uploaddetail”)
public @ResponseBody int uploaddetail(HttpServletRequest request, MultipartFile file) {
int i = iBookService.uploaddetail(request,file);
return i;
/**
*新增图书
- @return
*/
@PostMapping(“/saveBook”)
public String saveBook(Books books) {
// System.out.println(“Books:=”+books);
iBookService.saveBook(books);
return “redirect:/book/home”;
/**
-
前台首页
-
@return
*/
@GetMapping(“/qiantai”)
public String toHome(
@RequestParam(defaultValue = “1”) Integer num,
@RequestParam(defaultValue = “10”)Integer size,
Model model) {
// 获取导航栏
List bookTypeList = iBookTypeService.findAllBookType(1,100);
model.addAttribute(“bookTypeList”, bookTypeList);
// 获取全部图书
List booksList = iBookService.findAllBook(num,size );
PageInfo booksPageInfo = new PageInfo<>(booksList);
model.addAttribute(“booksPageInfo”, booksPageInfo);
return “/frontdesk/home”;
/**
-
通过Id查询图书详情
-
@param id
-
@param model
-
@return
*/
@GetMapping(“/findById/{id}”)
public String findById(@PathVariable Integer id,Model model) {
Books books = iBookService.findById(id);
model.addAttribute(“books”,books);
return “/frontdesk/book_detail”;
/**
-
管理员通过Id查询图书详情
-
@param id
-
@param model
-
@return
*/
@GetMapping(“/adminfindById/{id}”)
public String adminfindById(@PathVariable Integer id,Model model) {
// 获取供应商
List supplierList = iSupplierService.findAllSupplier(1,100 );
model.addAttribute(“supplierList”, supplierList);
// 获取图书详情
Books books = iBookService.findById(id);
model.addAttribute(“books”,books);
return “/backstage/update_book”;
/**
-
修改图书信息
-
@param books
-
@return
*/
@PostMapping(“/updateBook”)
public String updateBook(Books books) {
// System.out.println(“返回的图书:”+books);
iBookService.updateBook(books);
return “redirect:/book/home”;
/**
-
通过图书类型Id查询图书
-
@param tid
-
@param model
-
@return
*/
@GetMapping(“/findByTid/{tid}”)
public String findByTid(@PathVariable Integer tid,@RequestParam(defaultValue = “1”) Integer num,@RequestParam(defaultValue = “10”)Integer size,Model model) {
List booksList = iBookService.findByTid(tid,num,size);
PageInfo booksPageInfo = new PageInfo<>(booksList);
model.addAttribute(“booksPageInfo”, booksPageInfo);
model.addAttribute(“tid”,tid);
return “/frontdesk/home”;
@PostMapping(“/deleteBook/{id}”)
public @ResponseBody int deleteBook(@PathVariable(“id”) Integer id) {
int i = iBookService.deleteBook(id);
return i;
用户管理控制层:
/**
- State:用户控制层
*/
@Controller
@RequestMapping(“/users”)
@SessionAttributes({“userId”,“userName”,“password”,“adminId”,“adminName”,“adminpassword”})
public class UserController {
@Autowired
private IUserService iUserService;
/**
-
跳转用户登录页面
-
@return
*/
@GetMapping(“/login”)
public String login() {
return “/frontdesk/login”;
/**
-
用户登录
-
@return
-
@param u
*/
@PostMapping(“/toLogin”)
public String toLogin(User u,Model model) {
User user = iUserService.toLogin(u);
if (user == null) {
return “redirect:/users/register”;
model.addAttribute(“userId”,user.getId());
model.addAttribute(“userName”,user.getName());
model.addAttribute(“password”,user.getPassword());
return “redirect:/book/qiantai”;
/**
-
跳转用户注册页面
-
@return
*/
@GetMapping(“/register”)
public String register() {
return “/frontdesk/register”;
/**
-
用户注册
-
@return
*/
@PostMapping(“/toRegister”)
public String toRegister(User u) {
// System.out.println(“注册信息:”+u);
int i = iUserService.toRegister(u);
if (i != 1 ) {
return “redirect:/users/register”;
return “redirect:/users/login”;
/**
-
跳转管理员登录页面
-
@return
*/
@GetMapping(“/adminLogin”)
public String adminLogin() {
return “/backstage/login”;
/**
-
管理员登录
-
@return
*/
@PostMapping(“/toAdminLogin”)
public String toAdminLogin(User u,Model model) {
// System.out.println(“User==:”+u);
User user = iUserService.toLogin(u);
if (user == null) {
model.addAttribute(“message”,“邮箱或密码错误,请确认后重试!”);
return “/backstage/login”;
model.addAttribute(“adminId”,user.getId());
model.addAttribute(“adminName”,user.getName());
model.addAttribute(“adminpassword”,user.getPassword());
return “redirect:/book/home”;
/**
-
根据tag查看全部用户或管理员
-
@param tag
-
@return
*/
@GetMapping(“/findByTag/{tag}”)
public String findByTag(
@PathVariable Integer tag,
@RequestParam(defaultValue = “1”) Integer num,
@RequestParam(defaultValue = “5”) Integer size,
Model model) {
List userList = iUserService.findByTag(tag,num,size);
PageInfo userPageInfo = new PageInfo<>(userList);
model.addAttribute(“userPageInfo”,userPageInfo);
return “/backstage/user_control”;
/**
-
返回JSON类型
-
根据tag查看全部用户或管理员
-
@param tag
-
@return
*/
@GetMapping(“/findByTag1/{tag}”)
public @ResponseBody PageInfo findByTag1(
@PathVariable Integer tag,
@RequestParam(defaultValue = “1”) Integer num,
@RequestParam(defaultValue = “5”) Integer size
) {
List userList = iUserService.findByTag(tag,num,size);
PageInfo userPageInfo = new PageInfo<>(userList);
return userPageInfo;
/**
-
查看个人信息
-
@return
*/
@GetMapping(“/findById/{id}/{tag}”)
public String findById(@PathVariable int id,@PathVariable int tag,Model model) {
User user = iUserService.findById(id,tag);
model.addAttribute(“user”,user);
if (user.getTag() != 1) {
return “/frontdesk/person_detail”;
} else {
return “/backstage/person_detail”;
/**
-
管理员查看他人信息
-
@return
*/
@GetMapping(“/adminFindById/{id}/{tag}”)
public @ResponseBody User adminFindById(@PathVariable int id,@PathVariable int tag,Model model) {
User user = iUserService.findById(id,tag);
return user;
/**
-
新增用户
-
@param u
-
@return
*/
@PostMapping(“/saveUser”)
public String saveUser(User u) {
// System.out.println(“1User===”+u);
int i = iUserService.saveUser(u);
return “redirect:/users/findByTag/0”;
/**
-
修改个人信息
-
@return
*/
@PostMapping(“/updateUser”)
public String updateUser(User u) {
// System.out.println(“User:”+u);
int i = iUserService.updateUser(u);
// System.out.println(“i==”+i);
if (i != 1) {
System.out.println(“个人信息修改失败”);
return “redirect:/users/findById/”+u.getId()+“/”+u.getTag();
if (u.getTag() != 1) {
return “redirect:/book/qiantai”;
return “redirect:/book/home”;
/**
-
修改他人信息
-
@return
*/
@PostMapping(“/adminUpdateUser”)
public String adminUpdateUser(User u) {
// System.out.println(“User:”+u);
int i = iUserService.updateUser(u);
// System.out.println(“i==”+i);
if (i != 1) {
System.out.println(“个人信息修改失败”);
return “redirect:/users/findByTag/0”;
/**
-
修改个人密码
-
@return
*/
@PostMapping(“/updatePwd”)
public String updatePwd(User u) {
// System.out.println(“User:”+u);
// 判断是否为管理员还是用户
if (u.getTag() != 1) {
int i = iUserService.updatePwd(u);
// System.out.println(“ipwd==”+i);
if (i != 1) {
System.out.println(“个人信息修改失败”);
return “/frontdesk/update_pwd”;
return “redirect:/users/toLoginOut”;
// System.out.println(“User:”+u);
int i = iUserService.updatePwd(u);
// System.out.println(“ipwd==”+i);
if (i != 1) {
System.out.println(“个人信息修改失败”);
return “/backstage/update_pwd”;
return “redirect:/users/toAdminLoginOut”;
/**
-
退出登录
-
@return
*/
@GetMapping(“/toLoginOut”)
public String toLoginOut(SessionStatus status) {
status.setComplete();
boolean complete = status.isComplete();
if (complete) {
System.out.println(“退出成功”);
return “redirect:/book/qiantai”;
/**
-
管理员退出登录
-
@return
*/
@GetMapping(“/toAdminLoginOut”)
public String toAdminLoginOut(SessionStatus status) {
status.setComplete();
boolean complete = status.isComplete();
if (complete) {
System.out.println(“退出成功”);
return “redirect:/users/adminLogin”;
/**
-
根据主键Id删除某一用户
-
@return
*/
@PostMapping(“/deleteUser/{id}”)
public @ResponseBody int deleteUser(@PathVariable Integer id) {
int i = iUserService.deleteUser(id);
return i;
图书类型管理控制层:
/**
- @State 图书类型(导航)
*/
@Controller
@RequestMapping(“/bookType”)
public class BookTypeController {
@Autowired
private IBookTypeService iBookTypeService;
/**
- 查询所有图书类型
*/
@GetMapping(“/findAllBookType”)
public String findAllBookType(
@RequestParam(defaultValue = “1”) Integer num,
@RequestParam(defaultValue = “5”)Integer size,
Model model
) {
List bookTypeList = iBookTypeService.findAllBookType(num,size);
PageInfo bookTypePageInfo = new PageInfo<>(bookTypeList);
model.addAttribute(“bookTypePageInfo”,bookTypePageInfo);
return “/backstage/book_type”;
/**
-
返回JSON
-
查询所有图书类型
*/
@GetMapping(“/findAllBookType1”)
public @ResponseBody PageInfo findAllBookType1(
@RequestParam(defaultValue = “1”) Integer num,
@RequestParam(defaultValue = “5”)Integer size
) {
List bookTypeList = iBookTypeService.findAllBookType(num,size);
PageInfo bookTypePageInfo = new PageInfo<>(bookTypeList);
return bookTypePageInfo;
/**
-
新增图书类型
-
@param bookType
-
@return
*/
@PostMapping(“/saveBookType”)
public String saveBookType(BookType bookType) {
iBookTypeService.saveBookType(bookType);
return “redirect:/bookType/findAllBookType”;
/**
-
查询单独图书类型
-
@param id
-
@return
*/
@PostMapping(“/findById/{id}”)
public @ResponseBody BookType findById(@PathVariable Integer id) {
BookType bookType = iBookTypeService.findById(id);
return bookType;
/**
-
修改图书类型
-
@param bookType
-
@return
*/
@PostMapping(“/updateBookType”)
public @ResponseBody int updateBookType(BookType bookType) {
// System.out.println(“bookType:”+bookType);
int i = iBookTypeService.updateBookType(bookType);
return i;
/**
-
根据Id删除
-
@param id
-
@return
*/
@PostMapping(“/deleteBookType/{id}”)
public int deleteBookType (@PathVariable Integer id) {
int i = iBookTypeService.deleteBookType(id);
return i;