javaee实战项目--农贸产品开发(详细讲解及代码实现)
2016-11-07 17:35
471 查看
这个项目是我第一个与他人合作完成的项目,我用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表头属性加上onsubmit="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,需要注意一点onmouseover="return
showInfo.showLayer(event,'C1320');" 和
onmouseout="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重新定向到某一资源,便是要写项目名称。
这个项目源码免积分提供大家学习,还有一些模块的代码(如数字验证码),可以稍作修改就能拿来用,也在下载页面,点我获取项目代码
先附上运行效果插图:
登录界面:
发布买家信息界面:
发布卖家信息界面:
查看买家信息:
省略了一些近似的页面。
这个产品的所有功能大概是:
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表头属性加上onsubmit="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,需要注意一点onmouseover="return
showInfo.showLayer(event,'C1320');" 和
onmouseout="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重新定向到某一资源,便是要写项目名称。
相关文章推荐
- 让普通业余软件开发兴趣爱好者也快速开发出相对专业的软件产品 - 通过实战开发讲解实现步骤
- 让普通业余软件开发兴趣爱好者也快速开发出相对专业的软件产品 - 通过实战开发讲解实现步骤
- 分享磨砺营马剑威老师讲解-Android项目实战开发第三波,内含完整代码
- iOS项目开发实战——使用代码实现页面跳转
- 打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除 vue表格组件 vue分页组件
- 让普通业余软件开发兴趣爱好者也快速开发出相对专业的软件产品 - 通过实战开发讲解实现步骤
- [项目实战] ibatis +spring+struts2+jquery.autocomplete实现产品自动补全功能(二) 附带源码
- 安卓项目开发实战(1)--首页顶部菜单BAR实现
- 安卓开发20:动画之Animation 详细使用-主要通过java代码实现动画效果
- 项目视频讲解_jQuery2.0应用开发-SSH框架整合jQuery2.0实战OA办公自动化(VSS、operamasks-UI框架)
- 项目视频讲解_Python实战开发之Pyramid Web框架在商城项目中的应用(模版引擎、布局引擎、JSON)
- 项目视频讲解_基于Weblogic、Oracle实战开发企业级CRM客户关系管理系统(Jquery、存储过程)新
- [项目实战] ibatis +spring+struts2+jquery.autocomplete实现产品自动补全功能(一)
- 中小型企业商业智能平台的开发和实现(数据仓库、BI系统、真实项目实战)
- SharpStreaming项目开发纪实:构建基于RTSP协议的服务器及客户端应用(三)——客户端的业务代码实现
- 项目视频讲解_国内首部基于JBPM5.4实战流程引擎开发(动态表单、模板引擎、公文管理系统)
- 项目开发实战 jQuery+php+mysql实现数据上传功能(补充!!!)
- 项目视频讲解_基于SSH2+Maven+EasyUI+MySQL技术实战开发易买网电子商务交易平台
- 项目开发实战 jQuery+php+mysql实现数据上传功能
- 安卓开发20:动画之Animation 详细使用-主要通过java代码实现动画效果