打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
springboot项目,servlet实现一个转盘抽奖程序
继上面第二个springboot项目后,今晚应朋友需求帮忙写个抽奖程序,想着就用springboot+servlet去发布一个服务给前端直接调用或者后端直接调用。
下面来介绍一下:
1、不错,依然需要一个Application的启动springboot的入口
[java] view plain copy
print?
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
/**
* Created by LK on 2016/5/7.
*/
@SpringBootApplication
@ServletComponentScan
public class SpringBootServletSampleApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootServletSampleApplication.class,args);
}
}
特别的注意一下,是通过使用注解注册Servlet
@ServletComponentScan
2、下面就创建一个类来实现HttpServlet[java] view plain copy
print?
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Random;
/**
* Created by LK on 2016/5/7.
*/
@WebServlet(urlPatterns = "/lottery/go",description = "请在前端ajax调用或者直接httpclient直接调用,可以返回抽奖结果,需要别的功能可以继续扩展")
public class LotteryServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Object[][] prizeArr = new  Object[][]{
//奖品id,min,max,prize【奖项】,v【中奖率】
{1,1,14,"一等奖",1},
{2,346,364,"一等奖",1},
{3,16,44,"不要灰心",10},
{4,46,74,"神马也没有",10},
{5,76,104,"祝您好运",10},
{6,106,134,"二等奖",2},
{7,136,164,"再接再厉",10},
{8,166,194,"神马也没有",10},
{9,196,224,"运气先攒着",10},
{10,226,254,"三等奖",5},
{11,256,284,"要加油哦",10},
{12,286,314,"神马也没有",10},
{13,316,344,"谢谢参与",10}
};
Object result[] = award(prizeArr);//抽奖后返回角度和奖品等级
resp.setContentType("text/html;charset=UTF-8");
resp.getWriter().write("{\"angle\":\""+result[0]+"\",\"msg\":\""+result[2]+"\"}");
System.out.println("转动角度:"+result[0]+"\t奖项ID:"+result[1]+"\t提示信息:"+result[2]);
}
//抽奖并返回角度和奖项
public Object[] award(Object[][] prizeArr){
//概率数组
Integer obj[] = new Integer[prizeArr.length];
for(int i=0;i<prizeArr.length;i++){
obj[i] = (Integer) prizeArr[i][4];
}
Integer prizeId = getRand(obj); //根据概率获取奖项id
//旋转角度
int angle = new Random().nextInt((Integer)prizeArr[prizeId][2]-(Integer)prizeArr[prizeId][1])+(Integer)prizeArr[prizeId][1];
String msg = (String) prizeArr[prizeId][3];//提示信息
return new Object[]{angle,prizeId,msg};
}
//根据概率获取奖项
public Integer getRand(Integer obj[]){
Integer result = null;
try {
int  sum = 0;//概率数组的总概率精度
for(int i=0;i<obj.length;i++){
sum+=obj[i];
}
for(int i=0;i<obj.length;i++){//概率数组循环
int randomNum = new Random().nextInt(sum);//随机生成1到sum的整数
if(randomNum<obj[i]){//中奖
result = i;
break;
}else{
sum -=obj[i];
}
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
3、运行Application的main之后,直接浏览器访问 http://127.0.0.1:8080/lottery/Go  即可得到抽奖结果
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JavaWeb 开发 06 —— smbms项目实践
jsp+servlet实现注册登录,不用数据库
ServletContextListener在Springboot中的使用
Servlet/JSP深入详解:基于Tomcat的Web开发--第二章02
SpringBoot初始教程之Servlet、Filter、Listener配置(七)
jQuery学习之:jqGrid表格插件——从servlet获得数据
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服