这个项目是我第一个与他人合作完成的项目,我用java写后台,综合性较强,用到了hibernate,jsp,servlet,适合那些javaee已经入门,想要通过项目来提高自己的朋友。

这个项目源码免积分提供大家学习,还有一些模块的代码(如数字验证码),可以稍作修改就能拿来用。

获得源码

先附上运行效果插图:

登录界面:

发布买家信息界面:

发布卖家信息界面:

查看买家信息:

省略了一些近似的页面。

这个产品的所有功能大概是:

1.用户注册,用户名,电话,密码

2.用户登录

3.用Cookie实现记住密码,每次登录,密码可以保留一个月

4.登陆时,设置了验证码,必须验证通过才会登录成功

5.可以进入发布收购信息页面,填入你需要的产品,数量,期望货源地,产品的期望

6.可以进入发布出售信息页面,填入你需出售的产品,数量,货源地,产品的描述,上传一张产品图片

7.你可以查看所有的收购者们发布的全部收购信息,及联系方式,姓名

8.你可以通过姓名来查找特定的收购者

9.你可以查看所有的出售者们发布的全部出售信息,及联系方式,姓名

10.你可以通过货源地和产品种类来查找特定的出售者

11.你把鼠标放在出售者链接上,就会显示出售者的产品的图片

然后自己总结下复杂功能是这样实现的,若读者还有任何问题,欢迎在评论区与我讨论:

一.验证码问题:把testcode.zip(这个压缩文件在自己的CSDN上)解压,然后与自己的代码汇合。由于验证码这里比较独立,可以把src下的两个servlet单独放在一个包里,再把ValidateCodeServlet在web.xml映射.

<servlet>

<servlet-name>ValidateCodeServlet</servlet-name>

<servlet-class>testcode.ValidateCodeServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>ValidateCodeServlet</servlet-name>

<url-pattern>/ValidateCodeServlet</url-pattern>

</servlet-mapping>

然后把register.html与你的那个需要验证码的jsp或html页面汇合,方便起见称为login.jsp,register.html中的js代码直接移到login.jsp,login.jsp表头属性加上οnsubmit="return validate();",然后直接把验证码代码移进的login.jsp表单中。

二.数据库设计:在需求刚下来时,就开始在闲暇时间在脑海里反复思考,如何设计数据库使代码最为简化,不然项目做了一阵时间改变数据库就会相当麻烦。

对于这个项目,先建一个famersproduct数据库 ,然后下面建三张表,第一张储存用户信息,第二张,储存卖家卖货信息,第三张储存买家收购信息。具体的表可以根据userbean,buy,sell个javabean来设计。

三.在每个页面都要携带你的登录信息,不然无法确定是谁发布的消息,联系方式等等,一般情况下只需要一个标志性字段就行,比如id,在这个项目里面,因为涉及到发布信息者的联系方式,于是就用phone来表示用户信息,把phone放在Session,或是放在request里,每个页面都携带这个信息。可以把phone放在链接里   Test\login.jsp?phone=49147917491来携带

在jsp中

<% String phone=request.getParameter("phone");

request.setAttribute("phone", phone);%>

在servlet中

request.setAttribute("phone", phone);

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

四.用form上传文件,还要携带其他信息,就应当传入cos.jar ,

MultipartRequest multi=new   MultipartRequest(request,getServletContext().getRealPath("/image"),5*1024*1024,"utf-8");

AnnotationConfiguration cfg = new AnnotationConfiguration().configure();

SessionFactory sf = null;

sf = cfg.buildSessionFactory();

Session sess = sf.getCurrentSession();

try {

sell.setPhone(multi.getParameter("phone"));

sell.setType(multi.getParameter("type"));

sell.setNumber(multi.getParameter("number"));

sell.setUnit(multi.getParameter("unit"));

sell.setSheng(multi.getParameter("sheng"));

sell.setShi(multi.getParameter("shi"));

sell.setQu(multi.getParameter("qu"));

sell.setPlace(multi.getParameter("place"));

sell.setDescription(multi.getParameter("description"));

Enumeration filenames=multi.getFileNames();

String fileName;

while(filenames.hasMoreElements())

{

String name=(String) filenames.nextElement();

fileName=multi.getFilesystemName(name);

File f=multi.getFile(name);

sell.setPicname(fileName);

}

在form表单里 <form method="post"   action="${pageContext.request.contextPath}/servlet/RecordingSell?phone=${phone}"  enctype="multipart/form-data">  还是这样写。

五.把鼠标放在链接上,显示图片问题:在网上找:用js实现浮层,而不是jsp实现浮层,虽然说实现浮层的代码是在jsp中写的,不过用到的技术却是js,应该查找与解决问题所用技术最接近的那个,没找到,便要换个关键词。

以后做浮层便可以直接用我做过的。js,style代码全部移进你需要浮层的jsp或html,不妨设其为SellerCatalog.jsp,需要注意一点οnmοuseοver="return showInfo.showLayer(event,'C1320');" 和

οnmοuseοut="return showInfo.hideLayer(event,'C1320');"> 中的第二个参数'C1320'设为字符串比较好,并且显示的都是这个区域中的div与这里的id一致

<div style="display: none" id="C1320" class="helplay">

学号:222222<br>

年龄:18<br>

班级:2<br>

专业:软开<br>

学院:软件学院

</div>

若是要修改样式,需要修改helplay类选择器即可。若修改悬浮框内容,直接改div。

六.  细节问题: request.getRequestDispatcher("/main.jsp").forward(request, response);

request服务器请求转发,所以是以当前服务器为基础的,不需要写当前项目名。     response.sendRedirect(req.getContextPath()+"/SellerCatalog.jsp?phone="+phone);

response重新定向到某一资源,便是要写项目名称。

javaee实战项目--农贸产品开发(详细讲解及代码实现)相关推荐

  1. 最新仿映客直播APP开发实战项目IOS开发实战8天(最全最新)

    最新仿映客直播APP开发实战项目IOS开发实战8天 第 1 章:直播准备 1: [录播] 课程大纲介绍 09:56 2: [录播] 了解直播技术和腾讯云直播 09:54 3: [录播] 基础封装 23 ...

  2. 【OS系列-2】- 进程详细讲解(代码示例)

    进程 进程详细讲解(代码示例) 进程 示例代码 创建进程的具体过程? 执行 fork()的时候系统做了什么? 进程间通信 管道 消息队列 共享内存 信号量 套接字 进程间同步 信号量 文件锁 无锁 C ...

  3. lamport面包店算法详细讲解及代码实现

    lamport面包店算法详细讲解及代码实现 1 算法详解 1.1 一个较为直观的解释 1.2 Lamport算法的时间戳原理 1.3 Lamport算法的5个原则 1.4 一个小栗子 2 算法实现 3 ...

  4. 深度学习:NiN(Network In Network)详细讲解与代码实现

    深度学习:NiN(Network In Network)详细讲解与代码实现 网络核心思想 1*1卷积 NiN块的作用 全局池化(Global Average Pooling) 基于NiN的服装分类(P ...

  5. Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)

    Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例) Java对象 转 JSON字符串 JAVA对象转MAP Map转java对象 List转map List和Map ...

  6. 万字以上的电商项目 Jmeter 脚本实战测试开发详细讲解

    目录 一.前置工作 1.黄金流程 2.Jmeter安装 二.脚本实战开发 1.用户注册链路 2.用户下单链路 一.前置工作 1.黄金流程 在做性能脚本之前,先了解下这本次性能实战业务,简要说明本次使用 ...

  7. 【python种子项目ppc】一行代码生成项目与开发详细指导

    正式的Python专栏第12篇,同学站住,别错过这个从0开始的文章! 前面学委介绍了pypi-seed优质库,不过学习编程要从项目实战入手. 下面我们重点是使用这个工具,快速生成一个项目,然后开发自己 ...

  8. 实战python+django+mysql开发详细步骤及代码学习

    开发工具:pycharm 环境:python3.7.4(例子中用的3.6) 下载安装pycharm:http://www.jetbrains.com/pycharm/download/#section ...

  9. JavaEE实战项目(初学者)

    目录 一.项目要求: 二.项目需求 (1)项目需求一: (2)项目需求二: (3)项目需求三: 三.思路分析 四.代码分析与展示: (1)User类代码 (2)商品公共资源区管理代码 (3)操作员线程 ...

最新文章

  1. 三周写出高性能的Python代码,这些小技巧你值得一试。
  2. [项目管理]团队管理中的起点:尊重
  3. ES6 Map和Set的用法笔记
  4. P3846-[TJOI2007]可爱的质数【BSGS,数论】
  5. leetcode896. 单调数列
  6. mysql的存储过程和索引区别_mysql查看索引与存储过程
  7. 诗与远方:无题(七)
  8. 怎么恢复linux定时器任务,定时操作 crontab at 以及恢复定时操作
  9. HTML5定稿了,终于有一种编程语言开发的程序可以在Android和IOS两种设备上运行了...
  10. Vue3:集成wangEditor富文本编辑器
  11. 为什么说GO语言,是最重要的编程语言
  12. 圆梦腾讯之后,我收集整理了这份“2022Java 常见面试真题汇总
  13. matlab gui gca,matlab和rest做GCA分析的不同
  14. Rust中iter()和into_iter()的区别
  15. Linux ssh 端口修改
  16. 什么是SAS硬盘,服务器硬盘sas和sata有什么区别
  17. java 超市收银_java-超市收银系统
  18. ARPA x 京东数科:隐私计算如何赋能未来金融数据共享
  19. 【ACWing】587. 吃蛋糕
  20. 171023_矩阵特征值和矩阵函数

热门文章

  1. ECCV 2022 | 面向高光和透明物体感知与抓取的域随机化增强的深度仿真与修复
  2. docker学习之Ubuntu系统部署docker
  3. Linux 日志切割工具cronolog无root权限安装
  4. 实现vivo X9s手机的宣传页面
  5. 1721: [Usaco2006 Mar]Ski Lift 缆车支柱
  6. 消息中间件零拷贝?mmap与sendFile的区别是什么?
  7. Vdbench工具的安装及使用
  8. sql between and 的用法
  9. 修改Maven镜像仓库为阿里云Maven仓库,下载如有神
  10. 为什么特小尺寸液晶屏价格比较高