关注公众号:分享电脑学习
回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)
云盘目录说明:
tools目录是安装包
res 目录是每一个课件对应的代码和资源等
doc 目录是一些第三方的文档工具

承接上一篇文档《Hive分析统计hour信息》

准备数据库lx_data

创建pom项目

配置pom

<properties>
<spring.version>3.2.1.RELEASE</spring.version>
<mybatis.version>3.1.1</mybatis.version>
<log4j.version>1.2.17</log4j.version>
</properties><dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency><dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency><dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency><dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency><dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
</dependency><dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency><dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency><dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency><dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency><dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency><dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency><dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency><dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency><dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency><dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5</version>
</dependency><dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency><!-- spring如果需要返回json格式的数据,那么必须引入下面两个包 -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency><dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
</dependencies>

创建并配置jdbc.properties

# local

jdbc.driverClassName=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/lx_data?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

jdbc.username=root

jdbc.password=

jdbc.minPoolSize=2

jdbc.maxPoolSize=20

jdbc.acquireIncrement=2

jdbc.initialPoolSize=3

jdbc.testConnectionOnCheckout=false

jdbc.idleConnectionTestPeriod=3600

jdbc.maxIdleTime=3600

创建并配置log4j.properties

log4j.rootCategory=info,stdout,fileout

### stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d{MM-dd-HH\:mm\:ss} - lx_dataapi - [%t] %-5p [%C\:%L]%x %m%n

### fileout

log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender

log4j.appender.fileout.File=${catalina.base}/logs/dataapi.log

log4j.appender.fileout.layout=org.apache.log4j.PatternLayout

log4j.appender.fileout.layout.ConversionPattern=%d{MM-dd-HH\:mm\:ss} - lx_dataapi - [%t] %-5p [%C\:%L]%x %m%n

log4j.appender.fileout.DatePattern='.'yyyy-MM-dd

### print the mybatis execute sql

log4j.logger.org.apache.ibatis=DEBUG

log4j.logger.java.sql=DEBUG

创建并配置 ae-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"><description>Spring-web MVC配置</description><!-- 这两个类用来启动基于Spring MVC的注解功能,将控制器与方法映射加入到容器中 -->
<mvc:annotation-driven /><!-- 对所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->
<context:component-scan base-package="com.wzy.ae.**.controller" /><!-- 添加静态资源访问 -->
<mvc:resources location="/analyse/" mapping="/analyse/**"/>
<mvc:resources location="/" mapping="/*.html"/>
</beans>

创建并配置 ae-beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:hdp="http://www.springframework.org/schema/hadoop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:oxm="http://www.springframework.org/schema/oxm"
xmlns:p="http://www.springframework.org/schema/p" xmlns:c="http://www.springframework.org/schema/c"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd
" default-autowire="byName">
<!-- 创建jdbc -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean><import resource="classpath*:aeConfigContext.xml" /> <!-- ae相关配置信息 --><bean id="aeDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="minPoolSize" value="${jdbc.minPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
<property name="acquireIncrement" value="${jdbc.acquireIncrement}"></property>
<property name="initialPoolSize" value="${jdbc.initialPoolSize}"></property>
<property name="testConnectionOnCheckout" value="${jdbc.testConnectionOnCheckout}"></property>
<property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}"></property>
<property name="maxIdleTime" value="${jdbc.maxIdleTime}"></property>
</bean><bean id="aeSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="aeDataSource" />
<property name="mapperLocations">
<value>classpath*:com/wzy/ae/**/*Mapper.xml</value>
</property>
</bean><bean id="aeSqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="aeSqlSessionFactory" />
</bean><!-- 具体service bean -->
<bean id="userBehaviorSpeedRateService" class="com.wzy.ae.service.impl.UserBehaviorSpeedRateServiceImpl"></bean>
<!-- 具体service bean结束 --><!-- bucket.metric 对应的计算类bean -->
<bean id="user_behavior.active_user_rate" class="com.wzy.ae.calculate.impl.ActiveRateCalculater"/>
<!-- bucket.metric 对应的计算类bean结束 --><!-- dao相关bean -->
<bean id="baseDao" abstract="true">
<property name="sqlSessionTemplate" ref="aeSqlSessionTemplate" />
</bean>
<bean id="aeDao" class="com.wzy.ae.dao.mybatis.AEDao" parent="baseDao"></bean>
<bean id="dimensionDao" class="com.wzy.ae.dao.impl.DimensionDaoImpl" parent="baseDao"></bean>
<bean id="dateDimensionDao" class="com.wzy.ae.dao.impl.DateDimensionDaoImpl" parent="baseDao"></bean>
<bean id="platformDimeDao" class="com.wzy.ae.dao.impl.PlatformDimensionDaoImpl" parent="baseDao"></bean>
<bean id="kpiDimeDao" class="com.wzy.ae.dao.impl.KpiDimensionDaoImpl" parent="baseDao"></bean>
<bean id="browserDimeDao" class="com.wzy.ae.dao.impl.BrowserDimensionDaoImpl" parent="baseDao"></bean>
<bean id="locationDimeDao" class="com.wzy.ae.dao.impl.LocationDimensionDaoImpl" parent="baseDao"></bean>
<bean id="inboundDimeDao" class="com.wzy.ae.dao.impl.InboundDimensionDaoImpl" parent="baseDao"></bean>
<bean id="eventDimeDao" class="com.wzy.ae.dao.impl.EventDimensionDaoImpl" parent="baseDao"></bean>
<bean id="currencyTypeDimeDao" class="com.wzy.ae.dao.impl.CurrencyTypeDimensionDaoImpl" parent="baseDao"></bean>
<bean id="paymentTypeDimeDao" class="com.wzy.ae.dao.impl.PaymentTypeDimensionDaoImpl" parent="baseDao"></bean>
<!-- dao相关bean结束 --><!-- 共用service bean -->
<bean id = "aeService" class="com.wzy.ae.service.impl.AEServiceImpl">
<property name="aeDao" ref="aeDao"></property>
</bean>
<bean id="dimensionService" class="com.wzy.ae.service.impl.DimensionServiceImpl">
<property name="dimeDao" ref="dimensionDao"></property>
<property name="dateDimeDao" ref="dateDimensionDao"></property>
<property name="platformDimeDao" ref="platformDimeDao"></property>
<property name="kpiDimeDao" ref="kpiDimeDao"></property>
<property name="browserDimeDao" ref="browserDimeDao"></property>
<property name="locationDimeDao" ref="locationDimeDao"></property>
<property name="inboundDimeDao" ref="inboundDimeDao"></property>
<property name="eventDimeDao" ref="eventDimeDao"></property>
<property name="currencyTypeDimeDao" ref="currencyTypeDimeDao"></property>
<property name="paymentTypeDimeDao" ref="paymentTypeDimeDao"></property>
</bean>
<bean class="com.wzy.ae.util.ApplicationContextUtil"/>
<!-- 共用service bean结束 -->
</beans>创建并配置aeConfigContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:hdp="http://www.springframework.org/schema/hadoop"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:oxm="http://www.springframework.org/schema/oxm"
xmlns:p="http://www.springframework.org/schema/p" xmlns:c="http://www.springframework.org/schema/c"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd
"><!-- bucket metric 参数,定义的是从mysql获取的列名 -->
<util:map id="bucketMetricColumns">
<entry key="user_behavior.active_users" value="active_users"/>
<entry key="user_behavior.active_user_rate" value="active_users,total_users"/>
<entry key="user_behavior.total_users" value="total_users"/>
<entry key="user_behavior.new_users" value="new_users"/>
<entry key="user_behavior.new_user_rate" value="new_users, active_users"/>
<entry key="user_behavior.new_user_speed_rate" value="new_users"/>
<entry key="user_behavior.active_user_speed_rate" value="active_users"/>
<entry key="user_behavior.total_user_speed_rate" value="total_users"/>
<entry key="user_behavior.active_members" value="active_members"/>
<entry key="user_behavior.active_member_rate" value="active_members,total_members"/>
<entry key="user_behavior.total_members" value="total_members"/>
<entry key="user_behavior.new_members" value="new_members"/>
<entry key="user_behavior.new_member_rate" value="new_members, active_members"/>
<entry key="user_behavior.new_member_speed_rate" value="new_members"/>
<entry key="user_behavior.active_member_speed_rate" value="active_members"/>
<entry key="user_behavior.total_member_speed_rate" value="total_members"/>
<entry key="user_behavior.sessions" value="sessions"/>
<entry key="user_behavior.sessions_length" value="sessions_length"/>
<entry key="user_behavior.hourly_sessions" value="hour_00,hour_01,hour_02,hour_03,hour_04,hour_05,hour_06,hour_07,hour_08,hour_09,hour_10,hour_11,hour_11,hour_12,hour_13,hour_14,hour_15,hour_16,hour_17,hour_18,hour_19,hour_20,hour_21,hour_22,hour_23"/>
<entry key="user_behavior.hourly_sessions_length" value="hour_00,hour_01,hour_02,hour_03,hour_04,hour_05,hour_06,hour_07,hour_08,hour_09,hour_10,hour_11,hour_11,hour_12,hour_13,hour_14,hour_15,hour_16,hour_17,hour_18,hour_19,hour_20,hour_21,hour_22,hour_23"/>
<entry key="user_behavior.hourly_active_user" value="hour_00,hour_01,hour_02,hour_03,hour_04,hour_05,hour_06,hour_07,hour_08,hour_09,hour_10,hour_11,hour_11,hour_12,hour_13,hour_14,hour_15,hour_16,hour_17,hour_18,hour_19,hour_20,hour_21,hour_22,hour_23"/><entry key="browser.active_users" value="active_users"/>
<entry key="browser.new_users" value="new_users"/>
<entry key="browser.total_users" value="total_users"/>
<entry key="browser.active_members" value="active_members"/>
<entry key="browser.new_members" value="new_members"/>
<entry key="browser.total_members" value="total_members"/>
<entry key="browser.sessions" value="sessions"/>
<entry key="browser.sessions_length" value="sessions_length"/>
<entry key="browser.pv" value="pv"/><entry key="location.uv" value="uv"/>
<entry key="location.visit" value="visit"/>
<entry key="location.bounce_number" value="bounce_number"/><entry key="depth.view_depth_of_user" value="pv_1,pv_2,pv_3,pv_4,pv_5_10,pv_11_30,pv_31_60,pv_61_plus"/>
<entry key="depth.view_depth_of_session" value="pv_1,pv_2,pv_3,pv_4,pv_5_10,pv_11_30,pv_31_60,pv_61_plus"/><entry key="inbound.uv" value="uv"/>
<entry key="inbound.visit" value="visit"/>
<entry key="inbound.bounce_number" value="bounce_number"/><entry key="event.times" value="times"/><entry key="order.orders" value="orders"/>
<entry key="order.success_orders" value="success_orders"/>
<entry key="order.refund_orders" value="refund_orders"/>
<entry key="order.order_amount" value="order_amount"/>
<entry key="order.revenue_amount" value="revenue_amount"/>
<entry key="order.refund_amount" value="refund_amount"/>
<entry key="order.total_revenue_amount" value="total_revenue_amount"/>
<entry key="order.total_refund_amount" value="total_refund_amount"/>
</util:map>
<!-- bucket metric 返回value参数 结束 --><!-- bucket metric query id 参数 -->
<util:map id="bucketMetricQueryId">
<entry key="user_behavior.active_users" value="com.wzy.ae.user.behavior.getUserStats"/>
<entry key="user_behavior.active_user_rate" value="com.wzy.ae.user.behavior.getUserStats"/>
<entry key="user_behavior.total_users" value="com.wzy.ae.user.behavior.getUserStats"/>
<entry key="user_behavior.new_users" value="com.wzy.ae.user.behavior.getUserStats"/>
<entry key="user_behavior.new_user_rate" value="com.wzy.ae.user.behavior.getUserStats"/>
<entry key="user_behavior.new_user_speed_rate" value="userBehaviorSpeedRateService"/>
<entry key="user_behavior.active_user_speed_rate" value="userBehaviorSpeedRateService"/>
<entry key="user_behavior.total_user_speed_rate" value="userBehaviorSpeedRateService"/>
<entry key="user_behavior.active_members" value="com.wzy.ae.user.behavior.getUserStats"/>
<entry key="user_behavior.active_member_rate" value="com.wzy.ae.user.behavior.getUserStats"/>
<entry key="user_behavior.total_members" value="com.wzy.ae.user.behavior.getUserStats"/>
<entry key="user_behavior.new_members" value="com.wzy.ae.user.behavior.getUserStats"/>
<entry key="user_behavior.new_member_rate" value="com.wzy.ae.user.behavior.getUserStats"/>
<entry key="user_behavior.new_member_speed_rate" value="userBehaviorSpeedRateService"/>
<entry key="user_behavior.active_member_speed_rate" value="userBehaviorSpeedRateService"/>
<entry key="user_behavior.total_member_speed_rate" value="userBehaviorSpeedRateService"/>
<entry key="user_behavior.sessions" value="com.wzy.ae.user.behavior.getUserStats"/>
<entry key="user_behavior.sessions_length" value="com.wzy.ae.user.behavior.getUserStats"/>
<entry key="user_behavior.hourly_sessions" value="com.wzy.ae.user.behavior.getHourlyUserStats"/>
<entry key="user_behavior.hourly_sessions_length" value="com.wzy.ae.user.behavior.getHourlyUserStats"/>
<entry key="user_behavior.hourly_active_user" value="com.wzy.ae.user.behavior.getHourlyUserStats" /><entry key="browser.active_users" value="com.wzy.ae.browser.getBrowserUserStats"/>
<entry key="browser.new_users" value="com.wzy.ae.browser.getBrowserUserStats"/>
<entry key="browser.total_users" value="com.wzy.ae.browser.getBrowserUserStats"/>
<entry key="browser.active_members" value="com.wzy.ae.browser.getBrowserUserStats"/>
<entry key="browser.new_members" value="com.wzy.ae.browser.getBrowserUserStats"/>
<entry key="browser.total_members" value="com.wzy.ae.browser.getBrowserUserStats"/>
<entry key="browser.sessions" value="com.wzy.ae.browser.getBrowserUserStats"/>
<entry key="browser.sessions_length" value="com.wzy.ae.browser.getBrowserUserStats"/>
<entry key="browser.pv" value="com.wzy.ae.browser.getBrowserUserStats"/><entry key="location.uv" value="com.wzy.ae.location.getLocationStats" />
<entry key="location.visit" value="com.wzy.ae.location.getLocationStats" />
<entry key="location.bounce_number" value="com.wzy.ae.location.getLocationStats" /><entry key="depth.view_depth_of_user" value="com.wzy.ae.depth.getActiveUserDepthStats" />
<entry key="depth.view_depth_of_session" value="com.wzy.ae.depth.getSessionDepthStats" /><entry key="inbound.uv" value="com.wzy.ae.inbound.getInboundStats" />
<entry key="inbound.visit" value="com.wzy.ae.inbound.getInboundStats" />
<entry key="inbound.bounce_number" value="com.wzy.ae.inbound.getInboundStats" /><entry key="event.times" value="com.wzy.ae.event.getEventStats" /><entry key="order.orders" value="com.wzy.ae.order.getOrderStats"/>
<entry key="order.success_orders" value="com.wzy.ae.order.getOrderStats"/>
<entry key="order.refund_orders" value="com.wzy.ae.order.getOrderStats"/>
<entry key="order.order_amount" value="com.wzy.ae.order.getOrderStats"/>
<entry key="order.revenue_amount" value="com.wzy.ae.order.getOrderStats"/>
<entry key="order.refund_amount" value="com.wzy.ae.order.getOrderStats"/>
<entry key="order.total_revenue_amount" value="com.wzy.ae.order.getOrderStats"/>
<entry key="order.total_refund_amount" value="com.wzy.ae.order.getOrderStats"/>
</util:map>
<!-- bucket metric query id 参数结束 --><!-- bucket metric 参数 -->
<util:map id="bucketMetrics">
<entry key="user_behavior">
<ref local="userBehavior"/>
</entry>
<entry key="browser">
<ref local="browserBucketMetrics"/>
</entry>
<entry key="location">
<ref local="locationBucketMetrics"/>
</entry>
<entry key="depth">
<ref local="depthBucketMetrics"/>
</entry>
<entry key="inbound">
<ref local="inboundBucketMetrics"/>
</entry>
<entry key="event">
<ref local="eventBucketMetrics"/>
</entry>
<entry key="order">
<ref local="orderBucketMetrics"/>
</entry>
</util:map><util:set id="orderBucketMetrics">
<value>orders</value>
<value>success_orders</value>
<value>refund_orders</value>
<value>order_amount</value>
<value>revenue_amount</value>
<value>refund_amount</value>
<value>total_revenue_amount</value>
<value>total_refund_amount</value>
</util:set><util:set id="eventBucketMetrics">
<value>times</value>
</util:set><util:set id="inboundBucketMetrics">
<value>uv</value>
<value>visit</value>
<value>bounce_number</value>
</util:set><util:set id="depthBucketMetrics">
<value>view_depth_of_user</value>
<value>view_depth_of_session</value>
</util:set><util:set id="locationBucketMetrics">
<value>uv</value>
<value>visit</value>
<value>bounce_number</value>
</util:set><util:set id="browserBucketMetrics">
<value>active_users</value>
<value>total_users</value>
<value>new_users</value>
<value>active_members</value>
<value>total_members</value>
<value>new_members</value>
<value>sessions</value>
<value>sessions_length</value>
<value>pv</value>
</util:set><util:set id="userBehavior">
<value>active_users</value>
<value>active_user_rate</value>
<value>total_users</value>
<value>new_users</value>
<value>new_user_rate</value>
<value>new_user_speed_rate</value>
<value>active_user_speed_rate</value>
<value>total_user_speed_rate</value>
<value>active_members</value>
<value>active_member_rate</value>
<value>total_members</value>
<value>new_members</value>
<value>new_member_rate</value>
<value>new_member_speed_rate</value>
<value>active_member_speed_rate</value>
<value>total_member_speed_rate</value><value>sessions</value>
<value>sessions_length</value><value>hourly_sessions</value>
<value>hourly_sessions_length</value>
<value>hourly_active_user</value>
</util:set>
<!-- bucket metric 参数结束--><!-- bucket group 参数-->
<util:map id="groupByColumns">
<entry key="user_behavior">
<ref local="commonGroupByColumns"/>
</entry>
<entry key="browser">
<ref local="browserGroupByColumns"/>
</entry>
<entry key="location">
<ref local="locationGroupByColumns"/>
</entry>
<entry key="depth">
<ref local="commonGroupByColumns"/>
</entry>
<entry key="inbound">
<ref local="inboundGroupByColumns"/>
</entry>
<entry key="event">
<ref local="eventGroupByColumns"/>
</entry>
<entry key="order">
<ref local="orderGroupByColumns"/>
</entry>
</util:map><util:set id="commonGroupByColumns">
<value>day</value>
<!-- <value>week</value>
<value>month</value>
<value>season</value>
<value>year</value> -->
<value>platform</value>
</util:set><util:set id="browserGroupByColumns">
<ref local="commonGroupByColumns"/>
<value>browser</value>
<value>browser_version</value>
</util:set><util:set id="locationGroupByColumns">
<ref local="commonGroupByColumns"/>
<value>country</value>
<value>province</value>
<value>city</value>
</util:set><util:set id="inboundGroupByColumns">
<ref local="commonGroupByColumns"/>
<value>inbound</value>
</util:set><util:set id="eventGroupByColumns">
<ref local="commonGroupByColumns"/>
<value>category</value>
<value>action</value>
</util:set><util:set id="orderGroupByColumns">
<ref local="commonGroupByColumns"/>
<value>currency_type</value>
<value>payment_type</value>
</util:set>
<!-- bucket group 参数--><util:map id="dimensionTableMapping">
<entry key="date" value="dimension_date"/>
<entry key="browser" value="dimension_browser"/>
<entry key="browser_name" value="dimension_browser"/>
<entry key="platform" value="dimension_platform"/>
<entry key="location" value="dimension_location"></entry>
<entry key="location_country" value="dimension_location"></entry>
<entry key="location_province" value="dimension_location"></entry>
<entry key="location_city" value="dimension_location"></entry>
<entry key="inbound" value="dimension_inbound"></entry>
<entry key="event" value="dimension_event"></entry>
<entry key="currency_type" value="dimension_currency_type"></entry>
<entry key="payment_type" value="dimension_payment_type"></entry>
</util:map><util:map id="dimensionColumns">
<entry key="platform" value="id,`platform_name`"/>
<entry key="browser_name" value="distinct `browser_name`"/>
<entry key="location_country" value="distinct `country`"/>
<entry key="location_province" value="distinct `country`, `province`"/>
<entry key="location_city" value="distinct `country`, `province`, `city`"/>
<entry key="inbound" value="`id`, `name`"/>
</util:map>
</beans>

创建包结构

完成web.xml的内容

环境完成后

完成common包中

创建AEConstants

完成model包中的代码

完成util包中的代码

完成calculate包中的代码

完成dao包中的代码

完成service包下面代码

最后再完成controller中的代码

准备页面

运行,访问http://localhost:8080/dataapi/analyse/index.html

出现错误,将jdk版本降下来就行了

spring 3.2不支持1.8编译环境,解决办法就是降为1.7编译环境

spring官网说了,要使用java8,只支持spring 4.X以上版本,而spring的使用最低java要求java5及以上

再次运行就可以了,因为数据是旧的注意日期的选择

代码和数据库已经上传,直接下载就可以运行了

图表显示日志离线信息相关推荐

  1. 日志查看器:显示日志记录信息的快速WPF控件

    对于长时间运行的后台任务,用户了解当前执行的步骤很有帮助.LogViewer可以安全地多线程收集此信息,并将其显示为可滚动文本.LogViewer允许后台线程在不使用任何WPF代码的情况下写入格式化文 ...

  2. 日志打印显示报错信息

    日志打印显示报错信息 直接打印e 日志文件不显示详细报错信息 logger.error("内部错误"+ e); 使用下面这句代码,即可解决问题. logger.error(&quo ...

  3. ASP.net 2.0下应用程序离线信息

    ASP.net 2.0 有一个新特性,就是支持应用程序离线信息. 什么是离线信息呢?以前我们在更新应用程序,导至asp.net应用程序重启,应用程序的用户通常会显示不友好的错误信息,或者IE一直显示加 ...

  4. 处理xmpp 离线信息,

    转:http://blog.csdn.net/kylinbl/article/details/8965074(KylinBL的专栏 ) 最近在使用xmppframwork来实现一个聊天应用,碰到了一个 ...

  5. log4j 配置,tomcat 启动或有后台操作时,控制台会显示很多 DEBUG 信息

    log4j 配置,tomcat 启动或有后台操作时,控制台会显示很多 DEBUG 信息 日志信息可以以文件形式显示,也可以在控制台输出,在 log4j.properties 文件设置. 控制台有很多 ...

  6. mysql 显示表_显示MYSQL表信息的方法

    MYSQL表信息的查看方法是我们经常要实现的功能,下面就为您介绍显示MYSQL表信息的方法,如果您对MYSQL表信息方面感兴趣的话,不妨一看. 在用mysql时(show tables),有时候需要查 ...

  7. html链接文件不可用,使用PPT 图表显示链接文件不可用 怎么解决啊?(excel放进ppt)...

    PPT中EXCEL图表链接不能更新 这个过程是没问题的,但是需要注意的一点是在你拷贝的过程中不能更换文件的保存路径,就是说你拷贝的东西需要是原先设计的哪一个整体,不能做任何更改. ppt中插入exce ...

  8. echarts图表显示相关

    最近做了一个跟图表显示相关得项目,在图表插件得选用上,我使用了百度得插件echarts.一些基本的功能文档里都写的很清楚. 在这里主要说明一下,如何自定义toolbox里得工具,以实现自己想要得功能. ...

  9. python打开文件报错无效序列_黑马python入门(4):python基础(序列,异常,操作文件,模块包,日志调试信息)

    序列 str声明:test_str="abcedf" 也可以保留字符串里面的格式来 test_str=""" \r\n测试标题 hello world ...

最新文章

  1. mysql空间扩展 VS PostGIS
  2. IIS 应用程序池设置
  3. yii2事务运用举例
  4. 分享9个实用的电脑维修技巧,赶紧收藏吧!
  5. NodeJS-queryString
  6. java关键字和标识符_Java数据类型和标识符
  7. 黑五已火 电商跨境成燎原之势
  8. 今日恐慌与贪婪指数为92 贪婪程度有所上升
  9. 产品迭代的节奏怎样适应需求的变化?
  10. 几款KINECT应用
  11. html滑动验证图片,纯js实现图片滑块验证
  12. linux oracle client 安装,Instant Client 下载 适用于 Linux x86-64(64 位)
  13. hbuilder版本更新失败_Hbuilder X升级后报错误:plus.device.getInfo is not a function
  14. CSS中vertical-align和text-align属性详解(使用场景、举例、注意点)、display:table-cell使用详解(基础介绍和使用例子)。
  15. Centos8 yum配置阿里云镜像
  16. 瀚高数据库命令备份还原
  17. [AHK]爬虫基础 解析IP138网站返回的结果
  18. 世界上第一天微型计算机,day 1:计算机发展史和组成部分
  19. 计算机系单身率排行榜,今天6一波~单身率特高的那些大学专业排行榜!
  20. 浏览器去除烦人的黑白滤镜

热门文章

  1. 【鸟哥杂谈】三分钟完成腾讯云部署emqx,公网访问自己的mqtt服务器
  2. WIN10 怎么测试音响哪个是左哪个是右?
  3. K-means算法和模糊C均值算法对比
  4. 软件工程基础复习_3
  5. 我的WafBypass之道(SQL注入篇)
  6. 数据结构(一)逻辑结构和存储结构
  7. My New Mouse
  8. 陈可之18岁画的《历史》被中国美术馆收藏,我的18岁呢?
  9. PDF复制翻译自动去掉换行(谷歌/百度/有道/DeepL)
  10. 社交网络算法-分析指标