一天一点做项目(3)

第六步:编写监听器类

作用:取出当前数据库中所有产品的简要信息,以便在进行随机获取产品时获得最大的效率。

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 ,作用:当职工提交自己的检测信息时,服务器调用这个程序来检查职工的检查结果是否正确。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值