一个基于 Java Servlet 的二手物品交易系统

背景

五月中旬玩了一下 Servlet ,这个技术是 Java Web 的底层的技术,任何高大上的框架,比如 Spring、SpringMVC、SpringBoot ,底层都是它。本文来就来介绍一个只用一个 Servlet 实现的 Java Web 管理系统,带领大家重新感受一下 Servlet 的魅力。

本文的目标用户是 Java Web 的初学者,介绍的是纯手工的 Servelt 应用,页面全是 JSP 命令完成数据渲染的,对初学 Web 的小伙伴可能会有启发。

声明:这个项目是在一位网友提供的源码上,花了某个周末半天的时间进行二次改造的。源码来源不明,而且源码也有缺陷,笔者做了修正,让它成为一个二手物品信息发布的小应用。且成功帮助这位网友完成了毕业答辩,能用自己的技术经验帮助他人,还是蛮有成就感的呢!

功能分析

这个二手物品交易系统,包含了用户管理、信息发布管理、论坛管理三个模块,需求功能表如下:
在这里插入图片描述

Servlet 功能说明

看看工程的类图结构:
在这里插入图片描述
调用流程:

  1. MainServlet 根据 request 传入的一个 optCode 操作码,来处理不同的请求,从而达到一个应用只有一个 Servlet 的目的。功能列表中所有需要向后台提交表单的 action 都是这个 Servlet,只是传递的操作码参数不同。
  2. CharacterFilter 字符编码拦截器。
  3. 数据库操作封装了一个 CommonDAO 类,接收操作表名称和参数,底层使用 JDBC 封装 SQL 操作。
  4. PageManager 类完成页面分页查询。
  5. 除了需要提交请求时使用了 Servlet,JPS 页面的初始化逻辑,是直接在 JSP 指令中调用 CommonDAOPageManager 操作数据完成的。
  6. JSP 页面上的提交按钮,它们的 action 直接指向当前 JSP ,然后再通过指令获取上一次提交的数据,完成数据入库。

比如,添加二手物品信息 ershouwupin_add.jsp 的页面逻辑为:

<% 
  new CommDAO().insert(request,response,"ershouwupin",ext,true,false,""); 
%>

<body >
 <form  action="ershouwupin_add.jsp?id=<%=id%>"  method="post" onsubmit="return checkform();">
  二手物品信息添加
  <br><br>
   <table width="100%" border="1" align="center" cellpadding="3" cellspacing="1">
    <tr><td  width="200">编号:</td><td><input name='bianhao' type='text' id='bianhao' value='' onblur='checkform()' />&nbsp;*<label id='clabelbianhao' /></td></tr>
    <tr><td  width="200">物品名称:</td><td><input name='yongpinmingcheng' type='text' id='yongpinmingcheng' value='' onblur='checkform()' />&nbsp;*<label id='clearId' /></td></tr>
    <tr><td  width="200">类别:</td><td><input name='leibie' type='text' id='leibie' value='' onblur='' /></td></tr>
    <tr><td  width="200">价格:</td><td><input name='jiage' type='text' id='jiage' value='' onblur='' /></td></tr>
    <tr><td  width="200">数量:</td><td><input name='kucun' type='text' id='kucun' value='' onblur='checkform()' />&nbsp;<label id='clabelkucun' />必需数字型</td></tr>
    <tr><td  width="200">照片:</td><td><input name='zhaopian' type='text' id='zhaopian' size='50' value='' onblur=''  />&nbsp;<input type='button' value='上传' onClick="up('zhaopian')" /></td></tr>
    <tr><td  width="200">发布人:</td><td><input name='adduser' type='text' id='adduser' value='<%=request.getSession().getAttribute("username")%>' /></td></tr>
    <tr><td  width="200">备注:</td><td><textarea name='beizhu' cols='50' rows='5' id='beizhu' onblur=''  ></textarea></td></tr>
    <tr>
      <td>&nbsp;</td>
      <td>
	<input type="submit" name="Submit" value="提交"/>
	<input type="reset" name="Submit2" value="重置"/>
      </td>
    </tr>
  </table>
</form>

页面结构说明

系统采用了类似 Swing 的 BorderLayout 布局,包括上、下、左、右四个区域,除了右侧操作区域由菜单控制,其他区域单独抽取成一个 JSP 文件,被菜单页面引用。
在这里插入图片描述

系统展示

运行项目后,访问首页,效果图如下:
在这里插入图片描述

编程启示录

首先,Servlet 作为底层,固然是需要掌握的,只封装一个 Servlet 方法,避免定义多个类,这个思路可以学习,毕竟每个功能并不复杂,用一个 Servlet 也够用。

其次,这个项目的页面是直接调用 CommonDAO 的增、删、改、查完成的。将 SQL 语句及所有业务都写在 JSP 指令中,阅读性会很差,不好调试,还存在 SQL 注入风险。

作为一个功能完整且技术单一的小应用,初学者或者需要交课程设计的小伙伴们,可能用得上。
这是项目源码地址 ,需要的小伙伴们可以联系笔者。

猜你喜欢

转载自blog.csdn.net/wojiushiwo945you/article/details/106598996
今日推荐