文档章节

我的第三个springboot项目,servlet实现一个转盘抽奖程序

l
 lvk618
发布于 2016/06/15 09:12
字数 593
阅读 22
收藏 0

继上面第二个springboot项目后,今晚应朋友需求帮忙写个抽奖程序,想着就用springboot+servlet去发布一个服务给前端直接调用或者后端直接调用。

下面来介绍一下:

1、不错,依然需要一个Application的启动springboot的入口

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

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  即可得到抽奖结果


本文转载自:http://blog.csdn.net/lk10207160511/article/details/51340564

l
粉丝 3
博文 80
码字总数 792
作品 0
广州
私信 提问
springboot(一)入门篇

今天来整理下springboot,开发工具使用eclipse(后期会再做个idea的).主要实现的功能是 1.通过数据库的查询返回前端数据. 第二步:新建entity 第三步:新建UserMapper(需要在application.propert...

zhuyuansj
2017/10/06
0
0
springboot 是如何帮我们省去web.xml配置的

概述 最开始使用原生的springmvc时,总是免不了有如下xml配置 但是,切换到springboot之后,web.xml之类的繁琐的配置基本上都不见了。出于好奇研究了下springboot究竟帮我们做了什么,我们可...

端吉
2018/06/23
0
0
SpringBoot使用Jsp

本文是简单总结一下SpringBoot使用Jsp的Demo。 前言 在早期做项目的时候,JSP是我们经常使用的java服务器页面,其实就是一个简化servlet的设计,在本文开始之前,回顾一下jsp的几大对象,如图...

dalaoyang
2018/08/13
0
0
springboot自定义filter学习笔记

自定义Filter,首先要自己写一个类,实现java.sevlet.Filter接口的init、doFilter和destroy三个方法。 在web项目中,通过web.xml中的<filter>标签,可以将该自定义filter交由容器实例化,然后...

sunranhou
03/15
210
0
Springboot入坑(二):Springboot中Filter、Listener的用法

Springboot入坑(二):Springboot中Filter、Listener的用法 上一篇文章中我们讲到了快速搭建Springboot项目以及整合Mybatis,但是在实际的开发中我们还需要用到很多的东西。后面的文章中我们...

舒文joven
2018/07/25
278
0

没有更多内容

加载失败,请刷新页面

加载更多

新架构、新角色:TiDB Community Upgrade!

作者:Jian Zhang 经过几年的发展,TiDB 社区已经逐渐成熟,但是随着社区的发展壮大,我们逐渐感受到了现在社区架构上的一些不足。经过一系列的思考和总结,我们决定升级和调整目前社区组织架...

TiDB
31分钟前
6
0
jquery qrcode库提示not function

jquery qrcode 这个库能用,但是必须在初始化的时候,官方给的使用方法是 引入qrcode的库文件后,在js中写以下 html <div id="qrcode"></div> js jQuery('#qrcode').qrcode({ render: ......

shikamaru
35分钟前
14
0
MySQL数据库去重的简单方案

利用 distinct 对需要处理的字段进行去重 select distinct 字段名 from 表名 利用group by select * from 表名 group by 字段名 利用having select * from 表名 group by 字段名 having 字段...

FeanLau
38分钟前
9
0
字符串转换成整数

实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该...

蔚蓝_晴天
49分钟前
8
0
Eureka客户端续约及服务端过期租约清理源码解析

在之前的文章:EurekaClient自动装配及启动流程解析中,我们提到了在构造DiscoveryClient时除了包含注册流程之外,还调度了一个心跳线程: scheduler.schedule( new Ti...

Java学习录
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部