javaee实战项目--农贸产品开发(详细讲解及代码实现)
这个项目是我第一个与他人合作完成的项目,我用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实战项目--农贸产品开发(详细讲解及代码实现)相关推荐
- 最新仿映客直播APP开发实战项目IOS开发实战8天(最全最新)
最新仿映客直播APP开发实战项目IOS开发实战8天 第 1 章:直播准备 1: [录播] 课程大纲介绍 09:56 2: [录播] 了解直播技术和腾讯云直播 09:54 3: [录播] 基础封装 23 ...
- 【OS系列-2】- 进程详细讲解(代码示例)
进程 进程详细讲解(代码示例) 进程 示例代码 创建进程的具体过程? 执行 fork()的时候系统做了什么? 进程间通信 管道 消息队列 共享内存 信号量 套接字 进程间同步 信号量 文件锁 无锁 C ...
- lamport面包店算法详细讲解及代码实现
lamport面包店算法详细讲解及代码实现 1 算法详解 1.1 一个较为直观的解释 1.2 Lamport算法的时间戳原理 1.3 Lamport算法的5个原则 1.4 一个小栗子 2 算法实现 3 ...
- 深度学习:NiN(Network In Network)详细讲解与代码实现
深度学习:NiN(Network In Network)详细讲解与代码实现 网络核心思想 1*1卷积 NiN块的作用 全局池化(Global Average Pooling) 基于NiN的服装分类(P ...
- Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)
Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例) Java对象 转 JSON字符串 JAVA对象转MAP Map转java对象 List转map List和Map ...
- 万字以上的电商项目 Jmeter 脚本实战测试开发详细讲解
目录 一.前置工作 1.黄金流程 2.Jmeter安装 二.脚本实战开发 1.用户注册链路 2.用户下单链路 一.前置工作 1.黄金流程 在做性能脚本之前,先了解下这本次性能实战业务,简要说明本次使用 ...
- 【python种子项目ppc】一行代码生成项目与开发详细指导
正式的Python专栏第12篇,同学站住,别错过这个从0开始的文章! 前面学委介绍了pypi-seed优质库,不过学习编程要从项目实战入手. 下面我们重点是使用这个工具,快速生成一个项目,然后开发自己 ...
- 实战python+django+mysql开发详细步骤及代码学习
开发工具:pycharm 环境:python3.7.4(例子中用的3.6) 下载安装pycharm:http://www.jetbrains.com/pycharm/download/#section ...
- JavaEE实战项目(初学者)
目录 一.项目要求: 二.项目需求 (1)项目需求一: (2)项目需求二: (3)项目需求三: 三.思路分析 四.代码分析与展示: (1)User类代码 (2)商品公共资源区管理代码 (3)操作员线程 ...
最新文章
- 三周写出高性能的Python代码,这些小技巧你值得一试。
- [项目管理]团队管理中的起点:尊重
- ES6 Map和Set的用法笔记
- P3846-[TJOI2007]可爱的质数【BSGS,数论】
- leetcode896. 单调数列
- mysql的存储过程和索引区别_mysql查看索引与存储过程
- 诗与远方:无题(七)
- 怎么恢复linux定时器任务,定时操作 crontab at 以及恢复定时操作
- HTML5定稿了,终于有一种编程语言开发的程序可以在Android和IOS两种设备上运行了...
- Vue3:集成wangEditor富文本编辑器
- 为什么说GO语言,是最重要的编程语言
- 圆梦腾讯之后,我收集整理了这份“2022Java 常见面试真题汇总
- matlab gui gca,matlab和rest做GCA分析的不同
- Rust中iter()和into_iter()的区别
- Linux ssh 端口修改
- 什么是SAS硬盘,服务器硬盘sas和sata有什么区别
- java 超市收银_java-超市收银系统
- ARPA x 京东数科:隐私计算如何赋能未来金融数据共享
- 【ACWing】587. 吃蛋糕
- 171023_矩阵特征值和矩阵函数