您的位置:首页 > 编程语言 > Java开发

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重新定向到某一资源,便是要写项目名称。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐