图书管理系统【部署开发环境、解决分类、图书、前台页面模块】四

简介: 巩固Servlet+JSP开发模式,做一个比较完整的小项目.

后台添加图书


后台要添加图书的时候,应该说明图书的类型是什么。

要想在显示添加图书的页面上知道全部类型的id,就要经过Servlet把类型的集合传送过去


绑定链接


<ahref="${pageContext.request.contextPath}/BookServlet?method=addUI"target="body">添加图书</a><br>


传送类型集合的Servlet


Stringmethod=request.getParameter("method");

       BussinessServiceImplservice=newBussinessServiceImpl();


       if(method.equals("addUI")){


           List<Category>list=service.getAllCategory();

           request.setAttribute("list",list);

           request.getRequestDispatcher("/background/addBook.jsp").forward(request,response);


       }


显示JSP页面


<formaction="${pageContext.request.contextPath}/BookServlet?method=add"method="post"enctype="multipart/form-data">


   <tableborder="1px"width="30%">

       <tr>

           <td> 图书名称:</td>

           <td><inputtype="text"name="name"></td>

       </tr>

       <tr>

           <td> 作者:</td>

           <td><inputtype="text"name="author"></td>

       </tr>

       <tr>

           <td> 图书价钱:</td>

           <td><inputtype="text"name="price"></td>

       </tr>

       <tr>

           <td>类型:</td>

           <td>

               <selectname="category_id">

                   <c:forEachitems="${list}"var="category">

                       <optionvalue="${category.id}">${category.name}</option>

                   </c:forEach>

               </select>

           </td>

       </tr>

       <tr>

           <td> 上传图片</td>

           <td><inputtype="file"name="image"></td>

       </tr>

       <tr>

           <td>详细描述</td>

           <td><textareaname="description"></textarea></td>

       </tr>

       <tr>

           <td>

               <inputtype="submit"value="提交">

               <inputtype="reset"value="重置">

           </td>

       </tr>

   </table>

</form>


处理表单数据Servlet


elseif(method.equals("add")){


           //上传文件和普通数据分割开,封装到Book对象上

           Bookbook=uploadData(request);


           book.setId(WebUtils.makeId());

           service.addBook(book);

           request.setAttribute("message","添加图书成功");

           request.getRequestDispatcher("/message.jsp").forward(request,response);

       }

  • uploadData()方法代码

privateBookuploadData(HttpServletRequestrequest){


       Bookbook=newBook();

       try{


           //1.得到解析器工厂

           DiskFileItemFactoryfactory=newDiskFileItemFactory();


           //2.得到解析器

           ServletFileUploadupload=newServletFileUpload(factory);


           //设置编码

           upload.setHeaderEncoding("UTF-8");



           //为上传表单,则调用解析器解析上传数据

           List<FileItem>list=upload.parseRequest(request);  //FileItem


           //遍历list,得到用于封装第一个上传输入项数据fileItem对象

           for(FileItemitem:list){


               if(item.isFormField()){


                   //得到的是普通输入项

                   Stringname=item.getFieldName();  //得到输入项的名称

                   Stringvalue=item.getString("UTF-8");


                   //使用BeanUtils封装数据

                   BeanUtils.setProperty(book,name,value);

               }else{


                   //得到上传输入项


                   //得到上传文件名全路径

                   Stringfilename=item.getName();


                   //截取文件名

                   filename=filename.substring(filename.lastIndexOf("\\")+1);


                   InputStreamin=item.getInputStream();   //得到上传数据


                   intlen=0;

                   bytebuffer[]=newbyte[1024];


                   //如果没有这个目录,就创建它

                   Stringsavepath=this.getServletContext().getRealPath("/image");

                   Filefile=newFile(savepath);

                   if(!file.exists()){

                       file.mkdir();

                   }


                   FileOutputStreamout=newFileOutputStream(savepath+"\\"+filename);

                   while((len=in.read(buffer))>0){

                       out.write(buffer,0,len);

                   }

                   //设置图片的名字

                   book.setImage(filename);


                   in.close();

                   out.close();


                   //关闭临时文件

                   item.delete();

               }

           }


       }catch(Exceptione){

           e.printStackTrace();

       }

       returnbook;

   }

  • 效果:

image.gif


后台显示图书模块


由于我们用的是分页技术,所以我们导入之前写过的Page类和jsp吧.....这些代码可以在我分类的代码库中找到


绑定超链接


<ahref="${pageContext.request.contextPath}/BookServlet?method=look"target="body">查看图书</a>


Servlet处理请求


elseif(method.equals("look")){


           StringcurrentPageCount=request.getParameter("currentPageCount");

           Pagepage=service.getPageData(currentPageCount);


           request.setAttribute("page",page);

           request.getRequestDispatcher("/background/listBook.jsp").forward(request,response);

       }


显示图书JSP页面


Servlet端传过来的是Page对象,而不是list集合

可以根据记载在Book对象的图片名称,弄一个超链接,超链接指向服务端的图片,这样就可以查看图片了!

<c:iftest="${empty(page.list)}">


   暂时还没有任何图书哦


</c:if>


<c:iftest="${!empty(page.list)}">


  <tableborder="1px">

      <tr>

          <td>书名</td>

          <td>作者</td>

          <td>价钱</td>

          <td>描述</td>

          <td>图片</td>

          <td>操作</td>

      </tr>


      <c:forEachvar="book"items="${page.list}">

          <tr>

              <td>${book.name}</td>

              <td>${book.author}</td>

              <td>${book.price}</td>

              <td>${book.description}</td>

              <td><ahref="${pageContext.request.contextPath}/image/${book.image}">查看图片</a></td>

              <td>

                  <ahref="#">删除</a>

                  <ahref="#">修改</a>

              </td>

          </tr>

      </c:forEach>




  </table>

   <br>

   <jsp:include page="page.jsp"/>


</c:if>


效果:

15.gif




目录
相关文章
|
6月前
|
安全 JavaScript Java
智慧图书管理|基于SprinBoot+vue的智慧图书管理系统(源码+数据库+文档)
智慧图书管理|基于SprinBoot+vue的智慧图书管理系统(源码+数据库+文档)
62 0
|
5月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的在线图书借阅管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的在线图书借阅管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
40 1
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的在线图书借阅管理系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的在线图书借阅管理系统附带文章和源代码部署视频讲解等
48 8
|
5月前
|
测试技术 数据安全/隐私保护 Java
基于SpringBoot+Vue+uniapp的图书借阅管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的图书借阅管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的图书进销存管理系统附带文章和源代码
基于SpringBoot+Vue的图书进销存管理系统附带文章和源代码
45 2
|
6月前
|
JavaScript Java 测试技术
基于微信小程序的选课系统的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的选课系统的设计与实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的图书管理借阅系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的图书管理借阅系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
前端开发 Java 程序员
书城项目第五阶段-图书模块1
书城项目第五阶段-图书模块1
86 0
书城项目第五阶段-图书模块2
书城项目第五阶段-图书模块2
31 0