一天一点做项目(3)
来源:互联网 发布:sherwood算法 编辑:程序博客网 时间:2024/06/07 06:04
第六步:编写监听器类
作用:取出当前数据库中所有产品的简要信息,以便在进行随机获取产品时获得最大的效率。
package com.jackyan.practice.store.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.jackyan.practice.store.service.mysql.ProductBeanServiceMysqlImpl;
Public class StoreContextListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
arg0.getServletContext().removeAttribute("simpleinformation");
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
arg0.getServletContext().setAttribute("simpleinformation",new ProductBeanServiceMysqlImpl().getAllProductSimpleInformation() );
}
}
第七步:编写servlet
ProductServlet,作用:当职工向服务器提交获取指定数目的产品时调用,为用户随机返回一定数量的产品,职工接下来就可以进行人工检查了。
package com.jackyan.practice.store.servlet;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jackyan.practice.store.bean.ProductBean;
import com.jackyan.practice.store.service.ProductBeanService;
import com.jackyan.practice.store.service.mysql.ProductBeanServiceMysqlImpl;
public class ProductsServlet extends HttpServlet {
protected void doPost(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,java.io.IOException{
resp.setContentType("text/xml;charset=utf-8");
PrintWriter out=resp.getWriter();
String tem=(String)req.getParameter("count");
if(tem==null){
out.println("<errors>非法的请求参数!</errors>");
out.close();
return ;
}
int count=0;
try{
count=Integer.parseInt(tem);
}catch(Exception e){
out.println("<errors>非法的请求参数!</errors>");
out.close();
return ;
}
int[] indexArr=null;
int[] simInfoArr=(int[])getServletContext().getAttribute("simpleinformation");
if(count>simInfoArr.length){
out.println("<errors>非法的请求参数!</errors>");
out.close();
return ;
}
indexArr=getRandArray(0,simInfoArr.length-1,count,simInfoArr);
StringBuffer sb=new StringBuffer();
ProductBeanService pbs=new ProductBeanServiceMysqlImpl();
sb.append("<productlist>");
List<ProductBean> l=new ArrayList();
for(int i=0;i<count;i++){
ProductBean pb=pbs.getProductById(indexArr[i]);
if(pb==null){
out.println("<errors>数据获取发生错误!</errors>");
out.close();
return;
}
l.add(pb);
sb=appendProduct(sb,pb);
}
sb.append("</productlist>");
out.println(sb.toString());
req.getSession().setAttribute("rightinfo", l);
out.close();
}
private StringBuffer appendProduct(StringBuffer sb,ProductBean pb){
// return sb.append("<product><productId>"+pb.getProductId()+"</productId><productName>"+pb.getProductName()
// +"</productName></product>");
//以下是作为测试时使用
return sb.append("<product><productId>"+pb.getProductId()+"</productId><productName>"+pb.getProductName()
+"</productName><isAvaliable>"+(pb.getIsAvaliable()=='1'?true:false)+"</isAvaliable></product>");
}
private int[] getRandArray(int minIndex,int maxIndex,int size,int[] baseArr){
int[] tem=new int[size];
int[] rTem=new int[size];
int p=-1;
int j=0;
for(int i=0;i<size;){
int t=(int)Math.round(Math.random()*(maxIndex-minIndex)+minIndex);
for(j=0;j<=p;j++){
if(tem[j]==t){
break;
}
}
if(j>p){
p+=1;
tem[p]=t;
rTem[p]=baseArr[t];
i++;
continue;
}
}
return rTem;
}
}
CheckServlet ,作用:当职工提交自己的检测信息时,服务器调用这个程序来检查职工的检查结果是否正确。
- 一天一点做项目(3)
- 一天一点做项目(1)
- 一天一点做项目(2)
- 一天一点做项目(4)
- 第十四周 第一天(做项目)
- 做项目的一点心得
- 项目功能大全,让你的项目一天搞定(给新手们一点干货)
- 深入了解ListView(3) — 一天一点源码
- 在公司做项目的一点体会
- 做大型flex项目的一点经验之谈
- 做项目时一点学习,记下了
- 开始使用ffmpeg做一点小项目
- 一天一点android知识(Broadcast)
- 一天一点Android知识(SharedPreferences存储)
- 一天一点Android技术(LitePal)
- 阳光项目手记-做项目管理的一点感受
- 在做项目过程中一点小感悟
- Unity3D与网页的交互---做项目的一点总结
- 职场总要从第一份工作开始
- C++中ifstream问题
- 2010-3-30
- Java异常处理
- 关注 2011 AMD
- 一天一点做项目(3)
- Eval版ASP木马原理解析《来自剑客山庄》
- 一天一点做项目(4)
- 很是郁闷
- 第一天
- 把VS2008九十天试用版本升级成正式版的办法
- 谷歌宣布退出中国 google.cn已经关闭
- ASP.NET页面生命周期
- Google走了,离开了中国大陆