用SSM框架实现简单的项目-《图书管理系统》

一、项目环境环境搭建

参考我的博客[跟项目配套的]


二、功能模块介绍及要求

  1. 图书信息新增
    1.1 基本信息添加
    1.2 图片上传及回显功能
  2. 图书信息删除
    2.1 单个删除
    2.2 批量删除
  3. 图书信息修改
    3.1 修改相应信息
  4. 图书信息查询
    4.1 所有数据查询
    4.2 3条件限制查询
    4.3 分页显示数据
  5. 页面展示
    这里写图片描述

三、代码及演示

  1. 数据库
    1.1 BookInfo图书表
    BookInfo图书表

    1.2 BookType图书类型表
    BookType图书类型表

  2. pojo层

    /**
     *   BookInfo实体类
     */
    public class BookInfo implements Serializable{
        private Integer bookId;
    
        private String bookCode;
    
        private String bookName;
    
        private BookType bookType;
    
        private String bookAuthor;
    
        private String publishPress;
    
        private Date publishDate;
    
        private Boolean isBorrow; //true 已借阅  false 未借阅
    
        private String path;
    
        public Integer getBookId() {
            return bookId;
        }
    
        public void setBookId(Integer bookId) {
            this.bookId = bookId;
        }
    
        public String getBookCode() {
            return bookCode;
        }
    
        public void setBookCode(String bookCode) {
            this.bookCode = bookCode == null ? null : bookCode.trim();
        }
    
        public String getBookName() {
            return bookName;
        }
    
        public void setBookName(String bookName) {
            this.bookName = bookName == null ? null : bookName.trim();
        }
    
        public BookType getBookType() {
            return bookType;
        }
    
        public void setBookType(BookType bookType) {
            this.bookType = bookType;
        }
    
        public String getBookAuthor() {
            return bookAuthor;
        }
    
        public void setBookAuthor(String bookAuthor) {
            this.bookAuthor = bookAuthor == null ? null : bookAuthor.trim();
        }
    
        public String getPublishPress() {
            return publishPress;
        }
    
        public void setPublishPress(String publishPress) {
            this.publishPress = publishPress == null ? null : publishPress.trim();
        }
    
        public Date getPublishDate() {
            return publishDate;
        }
    
        public void setPublishDate(Date publishDate) {
            this.publishDate = publishDate;
        }
    
        public Boolean getIsBorrow() {
            return isBorrow;
        }
    
        public void setIsBorrow(Boolean isBorrow) {
            this.isBorrow = isBorrow;
        }
    
        public String getPath() {
            return path;
        }
    
        public void setPath(String path) {
            this.path = path == null ? null : path.trim();
        }
    
        @Override
        public String toString() {
            return "BookInfo{" +
                    "bookId=" + bookId +
                    ", bookCode='" + bookCode + '\'' +
                    ", bookName='" + bookName + '\'' +
                    ", bookType=" + bookType +
                    ", bookAuthor='" + bookAuthor + '\'' +
                    ", publishPress='" + publishPress + '\'' +
                    ", publishDate=" + publishDate +
                    ", isBorrow=" + isBorrow +
                    ", path='" + path + '\'' +
                    '}';
        }
    }
    /**
    *BookType实体类
    */
    public class BookType implements Serializable{
        private Integer id;
    
        private String typeName;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getTypeName() {
            return typeName;
        }
    
        public void setTypeName(String typeName) {
            this.typeName = typeName == null ? null : typeName.trim();
        }
    
        @Override
        public String toString() {
            return "BookType{" +
                    "id=" + id +
                    ", typeName='" + typeName + '\'' +
                    '}';
        }
    }
  3. 日期转换类[与配置文件挂钩]

    /**
     * 日期转换器
     */
    public class DataConvert implements Converter<String,Date>{
        @Override
        public Date convert(String s) {
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            if (s!=null){
                try {
                    return sdf.parse(s);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }
    }
  4. Controller层

    4.1 BookInfo

@Controller
public class BookInfoController implements ServletContextAware{
    @Autowired
    private BookInfoService bookInfoService;

    private ServletContext servletContext;

    @Override
    public void setServletContext(ServletContext servletContext) {
        this.servletContext=servletContext;
    }

    /**
     * 查询数据分页显示(含三条件查询)
     * @param booktype
     * @param bookname
     * @param borrow
     * @param pageNum
     * @return
     */
    @RequestMapping(value = "queryByConditions.do",produces = {"application/json;charset=UTF-8"})
    @ResponseBody
    public String queryBooksByConditions(String booktype, String bookname, Boolean borrow,@RequestParam(required = false,defaultValue = "1") Integer pageNum){
        PageHelper.startPage(pageNum,4);
        List<BookInfo> bookInfos = bookInfoService.queryBooksByCondition(booktype, bookname, borrow);
        PageInfo<BookInfo> pageInfo=new PageInfo<BookInfo>(bookInfos);
        JSONObject json=new JSONObject();
        json.put("pageInfo",pageInfo);
        String s = JSON.toJSONStringWithDateFormat(json, "yyyy-MM-dd");
        return s;
    }

    /**
     * 添加图书信息时 图片上传及回显
     * @param fileImage
     * @return
     */
    @RequestMapping("imgPath.do")
    @ResponseBody
    public String imgPath(@RequestParam("fileImage") CommonsMultipartFile fileImage){
        System.err.println("进来了");
        // 获取上传图片的位置
        String realPath = servletContext.getRealPath("/images/");
        System.err.println("上传路径为:"+realPath);
        // 获取文件名称
        String originalFilename = fileImage.getOriginalFilename();
        // 创建file对象 写入
        File file=new File(realPath,originalFilename);
        try {
            fileImage.getFileItem().write(file);
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 将上传的图片路径以json的方式返回客户端
        String path="/images/"+originalFilename;
        System.err.println("json Path:"+path);
        JSONObject json=new JSONObject();
        json.put("imagePath",path);
        System.err.println(json.toJSONString());
        return json.toJSONString();
    }

    /**
     * 添加图书信息
     * @param bookInfo
     * @return
     */
    @RequestMapping("addBooks.do")
    @ResponseBody
    public String addBook(BookInfo bookInfo){
        bookInfo.setIsBorrow(false);
        int i = bookInfoService.addBooks(bookInfo);
        JSONObject json=new JSONObject();
        if(i>0){
            json.put("addFlag",true);
        }else {
            json.put("addFlag",false);
        }
        return json.toJSONString();
    }



    /**
     * 根据id值查询图书信息
     * @param choose  1-详细  2-修改+回显
     * @param bookId
     * @param map
     * @return
     */
    @RequestMapping(value = "queryBookById.do")
    public String queryBookById(Integer choose,Integer bookId,ModelMap map){
        switch (choose){
            case 1:
                //详细
                BookInfo bookInfoQ = bookInfoService.queryBookById(bookId);
                map.put("bookInfo",bookInfoQ);
                return "showBooks";
            case 2:
                //修改(part 1)-显示信息
                BookInfo bookInfoU = bookInfoService.queryBookById(bookId);
                map.put("bookInfo",bookInfoU);
                return "modifyBooks";
        }
        //错误页面
        return null;
    }

    /**
     * 修改图书信息
     * @param bookInfo
     * @return
     */
    @RequestMapping(value = "updateBook.do",produces = {"application/json;charset=utf-8"})
    @ResponseBody
    public String updateBook(BookInfo bookInfo){
        //修改(part 2)-保存更改信息
        int i = bookInfoService.updateBookById(bookInfo);
        JSONObject json=new JSONObject();
        if (i>0){
            json.put("updateFlag",true);
        }else {
            json.put("updateFlag",false);
        }
        return json.toJSONString();
    }

    /**
     * 批量删除图书信息
     * @param ids
     * @return
     */
    @RequestMapping(value = "deleteBooksByIds.do",produces = {"application/json;charset=utf-8"})
    @ResponseBody
    public String deleteBooksByIds(@RequestParam("delGroup") List<Integer> ids){
        int i = bookInfoService.deleteBooksByIds(ids);
        JSONObject json=new JSONObject();
        if (i>0){
            json.put("delsFlag",true);
        }else {
            json.put("delsFlag",false);
        }
        json.put("delIds",ids);
        return json.toJSONString();
    }

    /**
     * 删除图书信息
     * @param bookId
     * @return
     */
    @RequestMapping(value = "deleteBookById.do",produces = {"application/json;charset=utf-8"})
    @ResponseBody
    public String deleteBookById(Integer bookId){
        int i = bookInfoService.deleteBookById(bookId);
        JSONObject json=new JSONObject();
        if (i>0){
            json.put("delFlag",true);
        }else {
            json.put("delFlag",false);
        }
        json.put("delId",bookId);
        return json.toJSONString();
    }

}

4.2 BookType

@Controller
@SessionAttributes("bookTypes")
public class BookTypeController {
    @Autowired
    private BookTypeService bookTypeService;

    @RequestMapping("bookTypes.do")
    public String getBookTypes(ModelMap map){
        List<BookType> bookTypes = bookTypeService.queryBookTypes();
        map.put("bookTypes",bookTypes);
        return "forward:/main.jsp";
    }
}

四、页面代码

  1. index.jsp

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <c:redirect url="/bookTypes.do"></c:redirect>
    </body>
    </html>
    
  2. main.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
        <title>Title</title>
        <link rel="stylesheet" type="text/css" href="/css/alltype.css">
        <style>
            td{text-align: center;}
        </style>
        <script type="text/javascript" src="/js/jquery.js"></script>
        <script type="text/javascript" src="/js/jquery-form.js"></script>
        <script>
            $(function () {
                /*三条件动态查询*/
                $("#queryBooks").click(function () {
                    $("#pageNum").val(1);
                    $("#qForm").ajaxSubmit({
                        url:"/queryByConditions.do",
                        dataType:"json",
                        type:"post",
                        success:function (data) {
                            loadBooks(data)
                        }
                    })
                })
    
                /*批量删除-全选or全不选*/
                $("#indexBox").click(function () {
                    $("input[name=delGroup]").attr("checked", this.checked);
                })
    
            })
            /*ajax成功方法*/
            function loadBooks(data) {
                $("#tabBody").html("");
                $("#tabFoot").html("");
                var temp=data.pageInfo;
                $.each(temp.list,function (n,vals) {
                    var borrow=vals.isBorrow==true?"已借阅":"未借阅";
                    $("#tabBody").append("<tr id='"+vals.bookId+"'>\n" +
                        "                        <td><input type='checkbox' name='delGroup' value='"+vals.bookId+"'></td>\n "+
                        "                        <td>"+vals.bookCode+"</td>\n" +
                        "                        <td>"+vals.bookType.typeName+"</td>\n" +
                        "                        <td>"+vals.bookName+"</td>\n" +
                        "                        <td>"+vals.bookAuthor+"</td>\n" +
                        "                        <td>"+vals.publishPress+"</td>\n" +
                        "                        <td><img style='width: 64px;height: 48px;' src='"+vals.path+"'></td>\n"+
                        "                        <td>"+borrow+"</td>\n" +
                        "                        <td><a href='/queryBookById.do?choose=1&bookId="+vals.bookId+"'>详细</a></td>\n" +
                        "                        <td><a href='javascript:deleteById("+vals.bookId+");'>删除</a></td>\n" +
                        "                        <td><a href='/queryBookById.do?choose=2&bookId="+vals.bookId+"'>修改</a></td>\n" +
                        "                        </tr>");
                });
                $("#tabFoot").append( "<tr>\n"+
                    "                        <td colspan='11' id='page'>" +
                    "                        <input id='prePage' type='hidden' value='"+temp.prePage+"'>"+
                    "                        当前页&nbsp;"+temp.pageNum+",共"+temp.pages+"页,总记录数&nbsp;"+temp.total+".&nbsp;&nbsp;&nbsp;&nbsp;\n"+
                    "                        <a href='javascript:queryByPages(1);'>首页</a>&nbsp;" +
                    "                        </td>\n"+
                    "                        </tr>\n"
                );
                if (temp.hasPreviousPage){
                    $("#page").append("<a href='javascript:queryByPages("+temp.prePage+");'>上一页</a>&nbsp;");
                }
                if (temp.hasNextPage){
                    $("#page").append("<a href='javascript:queryByPages("+temp.nextPage+");'>下一页</a>&nbsp;\n");
                }
                $("#page").append("<a href='javascript:queryByPages("+temp.pages+");'>尾页</a>");
    
            }
            /*根据页数查询数据*/
            function queryByPages(pageNum) {
                $("#pageNum").val(pageNum);
                $("#qForm").ajaxSubmit({
                    url:"/queryByConditions.do",
                    dataType:"json",
                    data:"post",
                    success:function (data) {
                        loadBooks(data);
                    }
                })
            }
            /*页面加载时查询所有数据*/
            function loadBody() {
                $("#qForm").ajaxSubmit({
                    url:"/queryByConditions.do",
                    dataType:"json",
                    type:"post",
                    success:function (data) {
                        loadBooks(data)
                    }
                })
            }
            /*单删*/
            function deleteById(id) {
                $.ajax({
                    url:"/deleteBookById.do",
                    dataType:"json",
                    data:{"bookId":id},
                    type:"post",
                    success:function (data) {
                        var flag=data.delFlag==true?"删除成功":"删除失败";
                        var num = data.delId;
                        alert(flag);
                        refresh(num,true)
                    }
                })
            }
            /*批删*/
            function deleteByIds() {
                $("#aForm").ajaxSubmit({
                    url:"/deleteBooksByIds.do",
                    dataType:"json",
                    type:"post",
                    success:function (data) {
                        var flag=data.delsFlag==true?"批量删除成功":"批量删除失败";
                        var ids = data.delIds;
                        alert(flag);
                        refresh(ids,false);
                    }
                })
            }
           /* 删除后刷新页面*/
            function refresh(list,type) {
                var page = $("#prePage").val();
                if (type==true){
                    //单删
                    $("#"+list).remove();
                }else {
                    //批删
                    for (var i=0;i<list.length;i++){
                        $("#"+list[i]).remove();
                    }
                }
                judgeIsEmpty(page);
            }
            /*当前页删除干净后返回上一页*/
            function judgeIsEmpty(page) {
                var content=$("#tabBody").html();
                if (content==""){
                    location.href="javascript:queryByPages("+page+");"
                }
            }
        </script>
    </head>
    <body onload="loadBody()">
    <div class="total">
        <h2>图书管理系统</h2>
        <hr>
        <%--查询栏--%>
        <div class="find">
            <form action="" method="post" id="qForm">
                图书分类:
                <select name="booktype" id="condition1">
                    <option value="0" selected>请选择</option>
                    <c:forEach items="${sessionScope.bookTypes}" var="list">
                        <option value="${list.id}">${list.typeName}</option>
                    </c:forEach>
                </select>
                &nbsp;
                图书名称:
                <input type="text" name="bookname" id="condition2">
                &nbsp;
                是否借阅:
                <select name="borrow" id="condition3">
                    <option value="">请选择</option>
                    <option value="true"></option>
                    <option value="false"></option>
                </select>
                &nbsp;
                <input type="hidden" name="pageNum" id="pageNum">
                <input type="button" value="查询" id="queryBooks">
            </form>
        </div>
        <div class="del">
            <a href="javascript:deleteByIds()">批量删除</a>
        </div>
        <%--添加信息选项--%>
        <div class="add">
            <a href="/addBooks.htm">添加</a>&nbsp;&nbsp;&nbsp;&nbsp;
            <a href="/index.jsp">显示所有信息</a>
        </div>
        <div style="clear: both"></div>
    
    
        <%--页面显示信息--%>
        <div class="tablecss">
            <form method="post" enctype="multipart/form-data" id="aForm" action="">
                <table border="1" cellpadding="5px" cellspacing="0" style="width: 1055px">
                    <thead>
                    <tr id="1">
                        <td width="35px"><input type="checkbox" id="indexBox"></td>
                        <td width="95px">图书编号</td>
                        <td width="80px">图书分类</td>
                        <td width="180px">图书名称</td>
                        <td width="150px">作者</td>
                        <td width="220px">出版社</td>
                        <td width="80px">图片</td>
                        <td width="65px">操作</td>
                        <td width="45px">详细</td>
                        <td width="45px">删除</td>
                        <td width="45px">修改</td>
                    </tr>
                    </thead>
                    <tbody id="tabBody"></tbody>
                    <tfoot id="tabFoot"></tfoot>
                </table>
            </form>
        </div>
    
        <div>
            <!-- 直接跳到指定页 -->
            <input type="text" size="3" id="num">&nbsp;
            <input type="button" value="go" id="changeUrl">
        </div>
    </div>
    </body>
    </html>
  3. addBooks.jsp

    <%@ page import="java.util.Date" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
        <link rel="stylesheet" type="text/css" href="/css/alltype.css">
        <style rel="stylesheet" type="text/css">
            input[type="text"]{width: 440px;height: 25px}
        </style>
        <script src="/js/jquery.js"></script>
        <script src="/js/jquery-form.js"></script>
        <script src="/js/allJs.js"></script>
        <script>
            $(function () {
                /*图片上传及回显*/
                $("#imgFile").change(function () {
                    $("#iForm").ajaxSubmit({
                        url:"/imgPath.do",    //请求的url地址
                        dataType:"json",   //返回格式为json
                        type:"POST",   //请求方式
                        success:function (data) {
                            $("#imgs").show();
                            $("#imgs").attr("src",data.imagePath);
                            $("#path").attr("value",data.imagePath);
                        }
                    })
                })
    
                /*添加表单信息至后台*/
                $("#submit").click(function () {
                    $("#iForm").ajaxSubmit({
                        url:"/addBooks.do",    //请求的url地址
                        dataType:"json",   //返回格式为json
                        type:"POST",   //请求方式
                        success:function (data) {
                            var flag=data.addFlag==true?"添加成功":"添加失败";
                            alert(flag);
                            location.href="/main.jsp";
                        }
                    })
                })
    
                /*返回首页*/
                $("#backsapce").click(function () {
                    location.href="/main.jsp";
                })
    
    
            })
    
        </script>
    </head>
    <body>
    
        <div class="total">
    
            <h2>图书借阅系统</h2>
            <hr>
    
            <div class="tablecss" style="margin-left: 242px">
                <form action="" method="post" id="iForm" enctype="multipart/form-data">
                    <table border="1" cellspacing="0" cellpadding="5px" style="width: 570px">
                        <tr>
                            <td class="basic">图书编号</td>
                            <td><input type="text" name="bookCode"></td>
                        </tr>
                        <tr>
                            <td class="basic">图书名称</td>
                            <td><input type="text" name="bookName"></td>
                        </tr>
                        <tr>
                            <td class="basic">图书类别</td>
                            <td>
                                <select name="bookType.id" >
                                    <option value="0" selected>请选择</option>
                                    <c:forEach items="${sessionScope.bookTypes}" var="list">
                                        <option value="${list.id}">${list.typeName}</option>
                                    </c:forEach>
                                </select>
                            </td>
                        </tr>
                        <tr>
                            <td class="basic">作&nbsp;&nbsp;&nbsp;者</td>
                            <td><input type="text" name="bookAuthor"></td>
                        </tr>
                        <tr>
                            <td class="basic">出&nbsp;版&nbsp;社</td>
                            <td><input type="text" name="publishPress"></td>
                        </tr>
                        <tr>
                            <td class="basic">出版时间</td>
                            <td><input type="date" name="publishDate" value="<fmt:formatDate value='<%=new Date()%>' pattern="yyyy-MM-dd"/>"></td>
                        </tr>
                        <tr>
                            <td class="basic">上传图片 </td>
                            <td>
                                <input name="fileImage" type="file" id="imgFile">
                                <img  id="imgs" style="width: 256px;height: 192px;display: none;">
                                <input type="hidden" name="path" id="path"  >
                            </td>
                        </tr>
                    </table>
                    <div class="button">
                        <input type="button" value="提交" id="submit">&nbsp;
                        <input type="button" value="取消" id="backsapce">
                    </div>
                </form>
    
            </div>
        </div>
    </body>
    
    </html>
  4. showBooks.jsp

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>图书详细信息</title>
        <link rel="stylesheet" type="text/css" href="/css/alltype.css">
        <script type="text/javascript" src="/js/jquery.js"></script>
        <script type="text/javascript">
            $(function () {
                /*返回首页*/
                $("#backsapce").click(function () {
                    location.href="/main.jsp";
                })
            })
        </script>
    </head>
    <body>
    <div class="total">
    
        <h2>图书借阅系统</h2>
        <hr>
    
        <div class="tablecss" style="margin-left: 242px">
    
                <table border="1" cellspacing="0" cellpadding="5px" style="width: 570px">
                    <tr>
                        <td class="basic"><label >图书编号</label></td>
                        <td>${bookInfo.bookCode}</td>
                    </tr>
                    <tr>
                        <td class="basic"><label>图书名称</label></td>
                        <td>${bookInfo.bookName}</td>
                    </tr>
                    <tr>
                        <td class="basic"><label >图书分类</label></td>
                        <td>${bookInfo.bookType.typeName}</td>
                    </tr>
                    <tr>
                        <td class="basic"><label >作&nbsp;&nbsp;&nbsp;者</label></td>
                        <td>${bookInfo.bookAuthor}</td>
                    </tr>
                    <tr>
                        <td class="basic"><label >出&nbsp;版&nbsp;社</label></td>
                        <td>${bookInfo.publishPress}</td>
                    </tr>
                    <tr>
                        <td class="basic"><label>出版时间</label> </td>
                        <td><fmt:formatDate value="${bookInfo.publishDate}" pattern="yyyy-MM-dd"/> </td>
                    </tr>
                    <tr>
                        <td class="basic"><label>图书状态</label> </td>
                        <td>
                            <c:choose>
                                <c:when test="${bookInfo.isBorrow==false}">
                                    未借阅
                                </c:when>
                                <c:otherwise>
                                    已借阅
                                </c:otherwise>
                            </c:choose>
                        </td>
                    </tr>
                    <tr>
                        <td class="basic"><label>图书图片</label></td>
                        <td><img src="${bookInfo.path}" style="width: 256px;height: 192px;"></td>
                    </tr>
                </table>
                <div class="button">
                    <input type="button" value="取消" id="backsapce">
                </div>
        </div>
    </div>
    </body>
    </html>
  5. modifyBooks.jsp

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>修改图书信息</title>
        <link rel="stylesheet" type="text/css" href="/css/alltype.css">
        <style>.basic{text-align: center;width: 85px;}
        input[type="text"]{width: 440px;height: 25px}</style>
        <script type="text/javascript" src="/js/jquery.js"></script>
        <script type="text/javascript" src="/js/jquery-form.js"></script>
        <script>
            $(function () {
                /*图片上传及回显*/
                $("#imgFile").change(function () {
                    $("#iForm").ajaxSubmit({
                        url:"/imgPath.do",    //请求的url地址
                        dataType:"json",   //返回格式为json
                        type:"POST",   //请求方式
                        success:function (data) {
                            $("#imgs").attr("src",data.imagePath);
                            $("#path").attr("value",data.imagePath);
                        }
                    })
                })
    
                $("#updateInfo").click(function () {
                    $("#iForm").ajaxSubmit({
                        url:"/updateBook.do",
                        dataType:"json",
                        type:"post",
                        success:function (data) {
                            var flag=data.updateFlag==true?"修改成功":"修改失败";
                            alert(flag);
                            location.href="/main.jsp";
                        }
                    })
                })
    
                /*返回首页*/
                $("#backsapce").click(function () {
                    location.href="/main.jsp";
                })
            })
        </script>
    
    </head>
    <body>
    <div class="total">
    
        <h2>图书借阅系统</h2>
        <hr>
    
        <div class="tablecss" style="margin-left: 242px">
            <form action="" method="post" id="iForm" enctype="multipart/form-data">
                <input type="hidden" value="${bookInfo.bookId}" name="bookId">
                <table border="1" cellspacing="0" cellpadding="5px" style="width: 570px">
                    <tr>
                        <td class="basic">图书编号</td>
                        <td><input type="text" readonly value="${bookInfo.bookCode}" name="bookCode"></td>
                    </tr>
                    <tr>
                        <td class="basic">图书名称</td>
                        <td><input type="text" value="${bookInfo.bookName}" name="bookName"></td>
                    </tr>
                    <tr>
                        <td class="basic">图书分类</td>
                        <td>
                            <select name="bookType.id">
                                <c:forEach items="${sessionScope.bookTypes}" var="types">
                                    <option value="${types.id}" <c:if test="${types.id==bookInfo.bookType.id}">selected</c:if>>${types.typeName}</option>
    
                                </c:forEach>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td class="basic">作&nbsp;&nbsp;&nbsp;者</td>
                        <td><input type="text" value="${bookInfo.bookAuthor}" name="bookAuthor"></td>
                    </tr>
                    <tr>
                        <td class="basic">出&nbsp;版&nbsp;社</td>
                        <td><input type="text" value="${bookInfo.publishPress}" name="publishPress"></td>
                    </tr>
                    <tr>
                        <td class="basic">出版时间 </td>
                        <td><input type="date" value="<fmt:formatDate value='${bookInfo.publishDate}' pattern='yyyy-MM-dd'/>" name="publishDate"> </td>
                    </tr>
                    <tr>
                        <td class="basic">图书状态</td>
                        <td>
                            <select name="isBorrow">
                                <option value="false" &amp;amp;amp;lt;c:if test="${bookInfo.isBorrow==false}">selected</c:if>>未借阅</option>
                                <option value="true" &amp;amp;amp;lt;c:if test="${bookInfo.isBorrow==true}">selected</c:if>>已借阅</option>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td class="basic">图书图片</td>
                        <td>
                            <input name="fileImage" type="file" id="imgFile">
                            <img id="imgs" src="${bookInfo.path}" style="width: 256px;height: 192px;">
                            <input type="hidden" name="path" id="path" value="${bookInfo.path}">
    
                        </td>
                    </tr>
                </table>
                <div class="button">
                    <input type="button" value="修改" id="updateInfo">&nbsp;
                    <input type="button" value="取消" id="backsapce">
                </div>
            </form>
        </div>
    </div>
    </body>
    </html>
  • 20
    点赞
  • 117
    收藏
    觉得还不错? 一键收藏
  • 34
    评论
### 回答1: 我们可以使用Java语言和SSM框架实现图书管理系统。我们可以使用Spring框架中的IOC容器来解耦各组件,从而让系统的代码结构更加清晰,同时也可以使用Spring框架中的AOP技术来实现系统的权限控制和日志记录。此外,我们还可以使用Mybatis框架实现数据库的操作,从而更加方便地实现图书管理系统的功能。 ### 回答2: 基于SSM(Spring+SpringMVC+MyBatis)框架实现图书管理系统需要以下步骤: 1. 环境搭建:安装Java开发环境、Maven项目管理工具、Tomcat服务器,引入SSM相关的依赖包。 2. 创建数据库:使用MySQL等数据库管理系统创建图书管理系统所需的数据库,包括图书、借阅记录等表。 3. 创建实体类:根据数据库表设计实体类,包括图书、借阅记录等。 4. 配置数据源:在Spring配置文件中配置数据源,连接数据库。 5. 创建Dao层:使用MyBatis的注解或XML配置方式实现图书相关的数据库操作,包括图书的增删改查。 6. 创建Service层:编写图书相关的业务逻辑代码,封装对Dao层的调用。 7. 创建Controller层:编写图书相关的请求处理代码,接收请求参数并调用相应的Service方法。 8. 创建视图层:使用JSP、HTML等技术实现前端页面,展示图书列表、借阅记录等信息。 9. 配置SpringMVC:在Spring配置文件中配置SpringMVC相关的视图解析器、控制器等。 10. 部署运行:将项目打包成war文件,部署到Tomcat服务器中运行。 通过以上步骤,我们就可以基于SSM框架成功实现图书管理系统。用户可以在系统中进行图书查询、借阅、归还等操作,管理员可以进行图书管理和操作日志的查看。 ### 回答3: 基于SSM实现图书管理系统,可以分为以下几个步骤: 1. 设计数据库结构: 首先,需要设计数据库表的结构。可以创建几个表,如图书表、读者表、借阅记录表等。每个表都有相应的字段来存储不同的信息。 2. 搭建项目环境: 在Java开发工具中,搭建基于SSM框架项目环境。SSM框架由Spring、SpringMVC和MyBatis组成,分别负责实现控制反转、Web层和数据持久层的功能。 3. 编写实体类: 根据数据库表的结构,编写对应的实体类。每个实体类对应数据库表的字段,并且有相应的成员变量和访问方法。 4. 配置MyBatis: 在项目的配置文件中,配置MyBatis的相关信息,如数据库连接、映射文件路径等。映射文件中定义了SQL语句与实体类之间的映射关系。 5. 编写数据访问层: 利用MyBatis框架,编写数据访问层的代码。主要负责与数据库进行交互,执行SQL语句,并将查询结果封装到实体类中。 6. 编写业务逻辑层: 在Spring框架的帮助下,编写业务逻辑层的代码。该层处理具体的业务逻辑,如图书的增删改查、读者的注册登录等功能。 7. 编写控制器: 利用SpringMVC框架,编写控制器的代码。该层负责接收前端请求,调用相应的业务逻辑处理,并返回结果给前端。 8. 编写前端页面: 使用HTML、CSS和JavaScript等技术,编写前端页面。可以根据需求设计图书借阅、读者管理等功能的界面,并与后端进行交互。 9. 测试和调试: 对整个系统进行测试和调试,验证功能的正确性和性能的优化。 10. 部署和上线: 将完成的系统部署到服务器上,并上线供用户使用。 以上就是基于SSM框架实现图书管理系统的大致步骤,通过这个系统,可以实现图书的增删改查、借阅归还等功能,方便用户管理图书馆的资源。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值