mvc下访问数据库和搜索引擎sphinx架构搭建

来源:互联网 发布:exe软件汉化工具 编辑:程序博客网 时间:2024/05/16 19:38

登录界面代码总结流程

 

首先,数据库是已经有设计好的,或者设计文档,这样的话可以开始后面的步骤。

第一步:Copy武汉舆情所需要jar包到web_info目录下面lib文件夹下,并构建路径。

aopalliance-1.0.jar

aspectjweaver-1.7.1.jar

bcloud-1.6.jar

commons-codec-1.10.jar

commons-codec-1.6.jar

commons-fileupload-1.2.2.jar

commons-httpclient-3.0.1.jar

commons-io-1.3.2.jar

commons-lang.jar

commons-logging-1.1.1.jar

core.jar

dom4j-1.6.1.jar

druid-0.2.9.jar

htmlunit-2.9.jar

iText-2.1.7.jar

iText-rtf-2.1.7.jar

iTextAsian.jar

jackson-core-asl-1.9.12.jar

jackson-mapper-asl-1.9.12.jar

jaxen-1.1-beta-6.jar

jcommon-1.0.23.jar

jfreechart-1.0.19.jar

jstl-1.2.jar

junit4.4.jar

jxl.jar

log4j-1.2.17.jar

mail.jar

mybatis-3.1.1.jar

mybatis-spring-1.1.1.jar

mysql-connector-java-5.1.21.jar

org.apache.commons.collections.jar

org.springframework.oxm-3.0.0.RELEASE.jar

oscache-2.4.1.jar

poi-3.9-20121203.jar

slf4j-api-1.7.2.jar

sms_jiangsu.jar

spring-aop-3.2.0.RELEASE.jar

spring-beans-3.2.0.RELEASE.jar

spring-context-3.2.0.RELEASE.jar

spring-core-3.2.0.RELEASE.jar

spring-expression-3.2.0.RELEASE.jar

spring-jdbc-3.1.1.RELEASE.jar

spring-test-3.2.0.RELEASE.jar

spring-tx-3.1.1.RELEASE.jar

spring-web-3.2.0.RELEASE.jar

spring-webmvc-3.2.0.RELEASE.jar

unionws_bigdata1.0.jar

uploadFDFS.jar

xpp3_min-1.1.3.4.O.jar

xstream-1.3.1.jar

第二步:配置web.xml文件

<?xml version="1.0"encoding="UTF-8"?>

<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5">

 

 <display-name></display-name>

 <context-param>

   <description>上下文参数</description>

   <param-name>contextConfigLocation</param-name>

   <param-value>

                     classpath*:config/spring/**/*.xml

              </param-value>

 </context-param>

 <context-param>

   <description>log4j配置文件</description>

   <param-name>log4jConfigLocation</param-name>

   <param-value>classpath:config/log4j.xml</param-value>

 </context-param>

 <context-param>

   <description>web项目根目录</description>

   <param-name>webAppRootKey</param-name>

   <param-value>datatransaction.root</param-value>

 </context-param>

 <listener>

   <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>

 </listener>

 <listener>

   <description>spring监听器</description>

   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

 </listener>

 <listener>

   <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>

 </listener>

 <filter>

   <description>字符集过滤器</description>

   <filter-name>encodingFilter</filter-name>

   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

   <init-param>

     <description>字符集编码</description>

     <param-name>encoding</param-name>

     <param-value>UTF-8</param-value>

   </init-param>

 </filter>

 <filter-mapping>

   <filter-name>encodingFilter</filter-name>

   <url-pattern>/*</url-pattern>

 </filter-mapping>

 <servlet>

   <description>spring mvcservlet</description>

   <servlet-name>springMVC</servlet-name>

   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

   <init-param>

     <description>spring mvc的配置文件</description>

     <param-name>contextConfigLocation</param-name>

     <param-value>classpath:config/spring/spring-mvc.xml</param-value>

   </init-param>

 </servlet>

 <servlet-mapping>

   <servlet-name>springMVC</servlet-name>

   <url-pattern>/</url-pattern>

 </servlet-mapping>

 <servlet>

   <servlet-name>DruidStatView</servlet-name>

   <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>

 </servlet>

 <servlet-mapping>

   <servlet-name>DruidStatView</servlet-name>

   <url-pattern>/druid/*</url-pattern>

 </servlet-mapping>

 <servlet>

   <servlet-name>disuz_uc_api</servlet-name>

   <servlet-class>api.ucenter.UC</servlet-class>

   <load-on-startup>2</load-on-startup>

 </servlet>

 <servlet-mapping>

   <servlet-name>disuz_uc_api</servlet-name>

   <url-pattern>/api/uc.php</url-pattern>

 </servlet-mapping>

 <session-config>

   <session-timeout>-1</session-timeout>

 </session-config>

 <error-page>

   <error-code>404</error-code>

   <location>/404.jsp</location>

 </error-page>

 <error-page>

   <error-code>401</error-code>

   <location>/404.jsp</location>

 </error-page>

 <error-page>

   <error-code>403</error-code>

   <location>/404.jsp</location>

 </error-page>

 <error-page>

   <error-code>408</error-code>

   <location>/404.jsp</location>

 </error-page>

 <error-page>

   <error-code>500</error-code>

   <location>/404.jsp</location>

 </error-page>

 <error-page>

   <error-code>502</error-code>

   <location>/404.jsp</location>

 </error-page>

 <error-page>

   <error-code>504</error-code>

   <location>/404.jsp</location>

 </error-page>

 <error-page>

   <error-code>503</error-code>

   <location>/404.jsp</location>

 </error-page>

 <jsp-config>

   <taglib>

     <taglib-uri>http://www.bigdata.com/jstl/string</taglib-uri>

     <taglib-location>/WEB-INF/tld/string.tld</taglib-location>

   </taglib>

 </jsp-config>

 <servlet-mapping>

   <servlet-name>default</servlet-name>

   <url-pattern>*.jpg</url-pattern>

 </servlet-mapping>

 <servlet-mapping>

   <servlet-name>default</servlet-name>

   <url-pattern>*.js</url-pattern>

 </servlet-mapping>

 <servlet-mapping>

   <servlet-name>default</servlet-name>

   <url-pattern>*.css</url-pattern>

 </servlet-mapping>

 <servlet-mapping>

   <servlet-name>default</servlet-name>

   <url-pattern>*.min.css</url-pattern>

 </servlet-mapping>

 <servlet-mapping>

   <servlet-name>default</servlet-name>

   <url-pattern>*.png</url-pattern>

 </servlet-mapping>

 <servlet-mapping>

   <servlet-name>default</servlet-name>

   <url-pattern>*.gif</url-pattern>

 </servlet-mapping>

 <servlet-mapping>

   <servlet-name>default</servlet-name>

   <url-pattern>*.ico</url-pattern>

 </servlet-mapping>

 <servlet-mapping>

   <servlet-name>default</servlet-name>

   <url-pattern>*.cur</url-pattern>

 </servlet-mapping>

 <servlet-mapping>

   <servlet-name>default</servlet-name>

   <url-pattern>*.swf</url-pattern>

 </servlet-mapping>

 <servlet-mapping>

   <servlet-name>default</servlet-name>

   <url-pattern>*.htm</url-pattern>

 </servlet-mapping>

 <servlet-mapping>

   <servlet-name>default</servlet-name>

   <url-pattern>*.xml</url-pattern>

 </servlet-mapping>

 <servlet-mapping>

   <servlet-name>default</servlet-name>

   <url-pattern>*.swf</url-pattern>

 </servlet-mapping>

 <servlet-mapping>

     <servlet-name>default</servlet-name>

     <url-pattern>*.json</url-pattern>

 </servlet-mapping>

</web-app>

第三步:配置tld文件夹下的string.tld文件,方便在String处理的时候更加方便(该文件在配置的时候对应name为Tool工具类中的方法名,function-class对应的是调用的工具类,function-signature对应的方法返回值的类型,方法名,以及对应参数的类型)

<?xml version="1.0"encoding="UTF-8" ?> 

<taglibxmlns="http://java.sun.com/xml/ns/j2ee" 

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 

 version="2.0"> 

 

 <description>my string library</description> 

 <display-name>my string</display-name> 

 <tlib-version>1.0</tlib-version> 

 <short-name>str</short-name> 

 <uri>http://www.bigdata.com/jstl/string</uri> 

   

 <function> 

   <name>subString</name> 

   <function-class>com.bigdata.financial.wh.appraise.tools.StringUtil</function-class> 

   <function-signature>java.lang.String subString(java.lang.String,int, java.lang.String)</function-signature> 

 </function> 

 

 <function> 

   <name>getLength</name> 

   <function-class>com.bigdata.financial.wh.appraise.tools.StringUtil</function-class> 

   <function-signature>java.lang.StringgetLength(java.lang.String)</function-signature> 

 </function>

 

 <function> 

   <name>getContextStr</name> 

   <function-class>com.bigdata.financial.wh.appraise.tools.UtilSelf</function-class> 

   <function-signature>java.lang.StringgetContextStr(java.lang.String)</function-signature> 

 </function>

 

 <function> 

   <name>htmlStringFilter</name> 

   <function-class>com.bigdata.financial.wh.appraise.tools.HtmlUtil</function-class> 

   <function-signature>java.lang.StringhtmlStringFilter(java.lang.String)</function-signature> 

 </function>

 <function>

     <name>colorStrByKeyWord</name>

     <function-class>com.bigdata.financial.wh.appraise.tools.StringUtil</function-class>

     <function-signature>java.lang.StringcolorStrByKeyWord(java.lang.String,java.lang.String,java.lang.String)</function-signature>

 </function>

 <function>

     <name>fmtLongToDate</name>

     <function-class>com.bigdata.financial.wh.appraise.tools.DateUtil</function-class>

     <function-signature>java.lang.StringfmtLongToDate(long,java.lang.String)</function-signature>

 </function>

</taglib> 

第四步:在项目文件夹下的默认的src文件夹下,创建包文件config和config.spring和config.properties和fdfs_client.conf文件,在创建配置文件的时候,搭建所需要的类的包。

一①在dbConfig.properties中配置数据库连接文件,这是其中一种方式连接数据库

jdbc_driverClassName=com.mysql.jdbc.Driver

jdbc_url=jdbc:mysql://172.16.10.57:3306/user_manage_center?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true

jdbc_username=pubweb

jdbc_password=bd2p1Du002

jdbc_validationQuery=SELECT1

 

#jdbc_driverClassName=com.mysql.jdbc.Driver

#jdbc_url=jdbc:mysql://172.16.18.182:3306/cjnews?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true

#jdbc_username=root

#jdbc_password=cJrB123

#jdbc_validationQuery=SELECT 1

在这个文件中注释用#号键

二②在generatorConfig.xml是mybatis生成器的配置,连接到数据库的

<?xmlversion="1.0" encoding="UTF-8" ?>

<!DOCTYPEgeneratorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis GeneratorConfiguration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >

<generatorConfiguration>

<classPathEntry location="F:\jar\mysql-connector-java.jar" />

  <context id="context1" >

    <jdbcConnectiondriverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://192.168.1.197:3306/cjnews"userId="root" password="bigdata@mysql"/>

      

       <!-- 是否强制转换只有forceBigDecimals一个属性--> 

       <javaTypeResolver>

              <!-- 根据数据库字段长自动匹配,默认为falsebigdecimal,long,int,short ,true时始终使用bigdecimal--> 

              <propertyname="forceBigDecimals" value="true" />

       </javaTypeResolver>

    <javaModelGeneratortargetPackage="com.bigdata.financial.wh.appraise.model"targetProject="bigdata_financial_wh_appraise\src" />

    <sqlMapGeneratortargetPackage="com.bigdata.financial.wh.appraise.mapping"targetProject="bigdata_financial_wh_appraise\src" />

    <javaClientGenerator targetPackage="com.bigdata.financial.wh.appraise.dao"targetProject="bigdata_financial_wh_appraise\src"type="XMLMAPPER" />

 

 

       <!-- <tableschema="appraise"tableName="appraise_51certificate_info">

              <generatedKeycolumn="id" sqlStatement="Mysql" identity="true"/>

       </table> -->

       <!-- 九派新闻抓取数据原始表 -->

       <table schema="jiupaino"tableName="paper_crawlernews">

             

       </table>

  </context>

</generatorConfiguration>

三③log4j日志配置文件,方便调试,和连接数据库的时候,出现问题的时候方便追踪。

<?xmlversion="1.0" encoding="utf-8" ?>

<!DOCTYPElog4j:configuration SYSTEM "log4j.dtd">

 

<log4j:configurationxmlns:log4j="http://jakarta.apache.org/log4j/">

 

    <!-- 调试时的日志 -->

    <appender name="debug"class="org.apache.log4j.RollingFileAppender">

              <paramname="File" value="c:/logs/log-debug.html" />

        <!-- 设置File参数:日志输出文件名 -->

        <param name="Append"value="true" />

        <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->

        <paramname="MaxBackupIndex" value="10" /> <!--日志备份文件的个数-->

        <param name="MaxFileSize"value="500KB" /> <!--设置文件大小 -->

        <layoutclass="org.apache.log4j.HTMLLayout">

            <!-- 设置输出文件项目和格式 -->

            <param name="Title"value="日志"/>

        </layout>

    </appender>

 

    <!-- 数据库日志 -->

    <appender name="dao"class="org.apache.log4j.RollingFileAppender">

        <param name="File"value="c:/logs/log-dao.html" />

        <!-- 设置File参数:日志输出文件名 -->

        <param name="Append"value="true" />

        <paramname="MaxBackupIndex" value="10" /> <!--日志备份文件的个数-->

        <param name="MaxFileSize"value="500KB" /> <!--设置文件大小 -->

        <layoutclass="org.apache.log4j.HTMLLayout">

            <!-- 设置输出文件项目和格式 -->

            <param name="Title"value="管理日志"/>

        </layout>

    </appender>

      

       <!-- Application Loggers -->

    <loggername="com.bigdata.log-info">

          <level value="info"/> 

    </logger>

   

    <loggername="com.bigdata.log-error">

          <levelvalue="error" /> 

          <appender-refref="log-error" /> 

    </logger> 

 

    <category name="java.sql">

        <priority value="debug"/>

        <appender-refref="log-dao" />

    </category>

    <categoryname="com.ibatis">

        <priority value="debug"/>

        <appender-ref ref="dao"/>

    </category>

 

       <!-- Root Logger -->

    <root>

        <priority value="debug"/>

        <appender-ref ref="debug"/>

    </root>

 

</log4j:configuration>

四④需要加id加回调的mybatis的一个file文件

useGeneratedKeys="true"keyProperty="id"

#将需要返回idxml文件加在下面

PaperNewsMapper.xml

2①Config.Spring文件,就是搭建spring架构的配置文件,下面是面向aop的配置

<?xmlversion="1.0" encoding="UTF-8"?>

<beans

xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="

       http://www.springframework.org/schema/beans

       http://www.springframework.org/schema/beans/spring-beans-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/aop

       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

">

 

       <description>

              spring-aop

              1、以AOP方式记录异常信息和成功操作信息

              2、以AOP方式管理事务

       </description>

       <!-- AOP方式记录异常信息和成功操作信息 -->

       <!-- <bean id="exLogger"class="com.bigdata.financial.investment.debtright.tools.ExceptionLogger"></bean>

       <bean id="optLogger"class="com.bigdata.financial.investment.debtright.tools.OptLogger"></bean>-->

       <!-- <aop:config>

              定义切入点

              <aop:pointcutid="loggerPointcut"expression="bean(*Service)"></aop:pointcut>

              定义切面,记录异常日志

              <aop:aspect id="exLoggerAspect"ref="exLogger">

                     异常通知throwing属性值为loggerException方法的参数名

                     <aop:after-throwingpointcut-ref="loggerPointcut" method="loggerException"throwing="ex"/>

              </aop:aspect>

              定义切面,记录成功操作日志

              <aop:aspectid="optloggerAspect" ref="optLogger">

                     环绕通知

                     <aop:aroundpointcut-ref="loggerPointcut" method="loggerOpt"/>

              </aop:aspect>

       </aop:config> -->

</beans>

2②下面是spring的上下文配置文件

<?xmlversion="1.0" encoding="UTF-8"?>

<beans

xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

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

">

      

       <!-- 引入属性文件 -->

       <!-- <context:property-placeholderlocation="classpath:config/dbConfig.properties" /> -->

       <beanid="propertyPlaceholderConfigurer"  

       class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 

          <property name="locations"> 

              <list> 

                  <value>classpath:config/dbConfig.properties</value>

              </list> 

          </property> 

       </bean> 

      

       <!-- 开启组件扫描 -->

       <context:component-scanbase-package="com.bigdata.financial.wh.appraise" />

      

       <!-- 激活在bean中定义的各种注解,@Transactional注解除外,它需要tx:annotation-driven激活  -->

       <context:annotation-config />

</beans>

2③下面是spring-mvc的配置文件

<?xmlversion="1.0" encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:context="http://www.springframework.org/schema/context"

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/mvc

       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

">

 

       <!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 -->

       <context:component-scanbase-package="com.bigdata.financial.wh.appraise.controller" />

      

       <!-- 配置多请求数据类型,如json xml-->

    <beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

          <propertyname="messageConverters">

                 <list>

                        <refbean="stringHttpMessageConverter" />

                        <!--<ref bean="jsonHttpMessageConverter" /> -->

                        <!--<ref bean="xmlHttpMessageConverter" /> -->

                 </list>

          </property>

    </bean>

   

    <beanid="stringHttpMessageConverter"class="org.springframework.http.converter.StringHttpMessageConverter">

          <propertyname="supportedMediaTypes">

                 <list>

                        <value>text/plain;charset=UTF-8</value>

                 </list>

          </property>

    </bean>

   

    <beanid="jsonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">

          <propertyname="supportedMediaTypes">

                 <list>

                        <value>application/json;charset=UTF-8</value>

                 </list>

          </property>

    </bean>

   

    <beanid="xmlHttpMessageConverter"class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">

         <propertyname="supportedMediaTypes">

                 <list>

                        <value>application/vnd.stocks+xml;charset=UTF-8</value>

                 </list>

           </property>

    </bean>

    <beanclass="org.springframework.http.converter.FormHttpMessageConverter"/>

    <beanclass="org.springframework.http.converter.BufferedImageHttpMessageConverter"/>

    <beanclass="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>

    <beanclass="org.springframework.http.converter.ResourceHttpMessageConverter"/>

    <!--可以增加其他数据类型,请参考springAPI-->

 

       <!-- jsp视图:对模型视图名称的解析,即在模型视图名称添加前后缀 -->

       <beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"

              p:viewClass="org.springframework.web.servlet.view.JstlView"

              p:prefix="/WEB-INF/views/"

              p:suffix=".jsp" />

      

       <!--定义异常处理页面-->

    <!-- <beanid="exceptionResolver"class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">

          <propertyname="defaultErrorView" value="error" />

    </bean> -->

   

       <!-- 启用mvc的注解功能,spring3.1以后的版本默认使用RequestMappingHandlerAdapter处理mvc请求与返回数据 -->

    <mvc:annotation-driven />

 

       <!-- 拦截器 -->

      <mvc:interceptors>

              <beanclass="com.bigdata.financial.wh.appraise.interceptor.AuthorityAnnotationInterceptor"/>

       </mvc:interceptors>

      

       <!-- 配置springMVC处理上传文件的信息 -->

       <bean id="multipartResolver"

              class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

              <propertyname="defaultEncoding" value="utf-8" />

              <propertyname="maxUploadSize" value="10485760000" />

              <propertyname="maxInMemorySize" value="40960" />

       </bean>

      

         <!-- 拦截器配置-->

    <mvc:interceptors>

        <!-- 配置Token拦截器,防止用户重复提交数据 -->

        <mvc:interceptor>

            <mvc:mappingpath="/**"/>

            <beanclass="com.bigdata.financial.wh.appraise.interceptor.TokenInterceptor"/>

        </mvc:interceptor>

    </mvc:interceptors>

</beans>

2④spring-mybatis融合的配置文件

<?xmlversion="1.0" encoding="UTF-8"?>

<beans

xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="

       http://www.springframework.org/schema/beans

       http://www.springframework.org/schema/beans/spring-beans-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/aop

       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

">

 

       <!-- 配置数据源 -->

       <bean name="dataSource"class="com.alibaba.druid.pool.DruidDataSource"init-method="init" destroy-method="close">

              <property name="url"value="${jdbc_url}" />

              <propertyname="username" value="${jdbc_username}" />

              <propertyname="password" value="${jdbc_password}" />

 

              <!-- 初始化连接大小 -->

              <propertyname="initialSize" value="0" />

              <!-- 连接池最大使用连接数量 -->

              <propertyname="maxActive" value="20" />

              <!-- 连接池最大空闲 -->

              <propertyname="maxIdle" value="20" />

              <!-- 连接池最小空闲 -->

              <property name="minIdle"value="0" />

              <!-- 获取连接最大等待时间 -->

              <propertyname="maxWait" value="60000" />

 

              <!-- <propertyname="poolPreparedStatements" value="true" /><property name="maxPoolPreparedStatementPerConnectionSize"value="33" /> -->

 

              <property name="validationQuery"value="${jdbc_validationQuery}" />

              <propertyname="testOnBorrow" value="false" />

              <propertyname="testOnReturn" value="false" />

              <propertyname="testWhileIdle" value="true" />

 

              <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->

              <property name="timeBetweenEvictionRunsMillis"value="60000" />

              <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->

              <propertyname="minEvictableIdleTimeMillis" value="25200000" />

 

              <!-- 打开removeAbandoned功能-->

              <propertyname="removeAbandoned" value="true" />

              <!-- 1800秒,也就是30分钟-->

              <propertyname="removeAbandonedTimeout" value="1800" />

              <!-- 关闭abanded连接时输出错误日志 -->

              <propertyname="logAbandoned" value="true" />

 

              <!-- 监控数据库-->

              <!-- <propertyname="filters" value="stat" /> -->

              <propertyname="filters" value="mergeStat" />

       </bean>

 

       <!-- myBatis文件-->

       <bean id="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">

              <propertyname="dataSource" ref="dataSource" />

              <!-- 自动扫描entity目录,省掉Configuration.xml里的手工配置 -->

              <propertyname="mapperLocations" value="classpath:com/bigdata/financial/wh/appraise/mapping/**/*.xml"/>

       </bean>

 

       <beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">

              <propertyname="basePackage"value="com.bigdata.financial.wh.appraise.dao" />

              <propertyname="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

       </bean>

 

       <!-- 配置事务管理器 -->

       <beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

              <propertyname="dataSource" ref="dataSource" />

       </bean>

 

       <!-- 注解方式配置事物 -->

       <!-- 使用annotation定义数据库事务,这样可以在类或方法中直接使用@Transactional注解来声明事务 -->

    <tx:annotation-driventransaction-manager="transactionManager"proxy-target-class="true"/>

 

       <!-- 拦截器方式配置事物 -->

       <tx:adviceid="transactionAdvice"transaction-manager="transactionManager">

              <tx:attributes>

                     <tx:methodname="add*" propagation="REQUIRED" />

                     <tx:methodname="append*" propagation="REQUIRED" />

                     <tx:methodname="insert*" propagation="REQUIRED" />

                     <tx:methodname="save*" propagation="REQUIRED" />

                     <tx:methodname="update*" propagation="REQUIRED" />

                     <tx:methodname="modify*" propagation="REQUIRED" />

                     <tx:methodname="edit*" propagation="REQUIRED" />

                     <tx:methodname="delete*" propagation="REQUIRED" />

                     <tx:methodname="remove*" propagation="REQUIRED" />

                     <tx:method name="repair"propagation="REQUIRED" />

                     <tx:methodname="delAndRepair" propagation="REQUIRED" />

 

                     <tx:methodname="get*" propagation="SUPPORTS" />

                     <tx:methodname="find*" propagation="SUPPORTS" />

                     <tx:methodname="load*" propagation="SUPPORTS" />

                     <tx:methodname="search*" propagation="SUPPORTS" />

                     <tx:methodname="datagrid*" propagation="SUPPORTS" />

 

                     <tx:methodname="*" propagation="SUPPORTS" />

              </tx:attributes>

       </tx:advice>

       <aop:config>

              <aop:pointcutid="transactionPointcut" expression="execution(*com.bigdata.financial.wh.appraise.service..*Impl.*(..))" />

              <aop:advisorpointcut-ref="transactionPointcut"advice-ref="transactionAdvice" />

       </aop:config>

 

 

       <!-- 配置druid监控springjdbc -->

       <beanid="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">

       </bean>

       <beanid="druid-stat-pointcut"class="org.springframework.aop.support.JdkRegexpMethodPointcut"scope="prototype">

              <propertyname="patterns">

                     <list>

                            <value>com.bigdata.financial.wh.appraise.service.*</value>

                     </list>

              </property>

       </bean>

      

       <aop:config>

              <aop:advisoradvice-ref="druid-stat-interceptor"pointcut-ref="druid-stat-pointcut" />

       </aop:config>

</beans>

2⑤spring的头部配置文件

<?xmlversion="1.0" encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans" 

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xmlns:task="http://www.springframework.org/schema/task" 

   xsi:schemaLocation="http://www.springframework.org/schema/beans

          http://www.springframework.org/schema/beans/spring-beans.xsd 

       http://www.springframework.org/schema/taskhttp://www.springframework.org/schema/task/spring-task-3.0.xsd">

       <task:annotation-driven/>             

</beans>

3uc的配置文件

#

#================================================

#Ucenter API for JAVA

#================================================

UC_API= http://192.168.11.194/Bbs/uc_server

UC_IP= 192.168.11.194

UC_KEY= dhdsj

UC_APPID= 2

UC_CONNECT=

4fdfs-client.conf文件

connect_timeout= 2

network_timeout= 30

charset= UTF-8

http.tracker_http_port= 89

http.anti_steal_token= no

http.secret_key= FastDFS1234567890

tracker_server= 172.16.10.110:22122

client_self_ip= 172.16.10.110

storage_src= 172.16.10.110

storage_src1= 172.16.10.110

storage_target=file1.infobigdata.com

第五步:在webroot目录下面创建文件夹放置css,Js,图片,数据库sql建表文件,文档说明等。以及通用的jsp页面调用文件。它一般与web-info,meta-info文件夹同级;

 

第六步:在web-inf目录下创建文件,放置view的jsp文件,全局的页面可以直接放在web-inf目录下面,其他子文件可以放在更多目录结构文件的下面,比如webpe

第七步:根据业务逻辑,可以从controller层开始编写代码(前提是有许多封装好了工具类已经写好了,放在工具类中),不然从前面写好接口等,还得去编写具体的工具类。

以登录为例。的controller层写法,在浏览器访问服务器的时候第一个页面

首先controller配置访问的地址:

packagecom.bigdata.financial.wh.appraise.controller;

 

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.stereotype.Controller;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.servlet.ModelAndView;

importcom.bigdata.financial.wh.appraise.model.Page;

importcom.bigdata.financial.wh.appraise.service.IndexService;

 

/**

 * 首页请求控制类

 * @author sunxiang

 *

 */

@Controller

@RequestMapping("/")//请求的requestMapping为一个斜杠,在mvc会作为基目录访问httpkkkkk:端口;

publicclass WelcomeController extends BaseController {

       private Integer defEnd=0;

       private Integer defSTART=29;

       @Autowired

       private IndexService indexService;//注意使用了spring的注解架构,所以首先Autowired,及实例化对象要先做。

 

      

       /**

        * 欢迎界面

        *@return

        */

       @RequestMapping("")

       public ModelAndView welcome(StringfromUrl){

              ModelAndView mav = newModelAndView();

              mav.addObject("fromUrl",fromUrl);//登录后要跳转的地址

             

              Page page =indexService.getRealtimeQuery(getDate(defSTART), getDate(defEnd), newPage(),"1","-1");

              mav.addObject("yqList",page.getData());//登录页面舆情信息

              //跳转至登录页面

              mav.setViewName("/webpe/user/login");

              return mav;

       }

}

这个类调用了service层的接口,那么要在实现类配置注解

packagecom.bigdata.financial.wh.appraise.service.impl;

 

importjava.util.HashMap;

importjava.util.List;

importjava.util.Map;

 

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.stereotype.Service;

 

importcom.bigdata.financial.wh.appraise.common.CommonPublic;

importcom.bigdata.financial.wh.appraise.common.opinion.NewsResultList;

importcom.bigdata.financial.wh.appraise.dao.IndexMapper;

importcom.bigdata.financial.wh.appraise.model.Page;

importcom.bigdata.financial.wh.appraise.service.IndexService;

importcom.bigdata.financial.wh.appraise.tools.PageUtil;

importcom.bigdata.unionservice.news.NewsBean;

 

@Service("indexService")//controller类对应的注解service实现

publicclass IndexServiceImpl implements IndexService {

      

       @Autowired

       private IndexMapper indexMapper;//调用dao层的接口

 

       @Override

       public Map<String, Object>getBanner() {

              return indexMapper.getBanner();

       }

 

       @Override

       public List<Map<String,Object>> getBannerList() {

              returnindexMapper.getBannerList();

       }

 

       @Override

       public Page getRealtimeQuery(StringbeginDate, String endDate,Page page,String sourceType,String sortType) {

              Map<String, Object> filter =new HashMap<String, Object>();

              if("1".equals(sourceType)){

                     filter.put(CommonPublic.PRODUCTATTR,CommonPublic.QG_PRODUCTID);

                     filter.put(CommonPublic.MODULEATTR,CommonPublic.MODULEIDARY_QG);

              } elseif("2".equals(sourceType)){

                     filter.put(CommonPublic.PRODUCTATTR,CommonPublic.HB_PRODUCTID);

                     filter.put(CommonPublic.MODULEATTR,CommonPublic.MODULEIDARY_HB);

              } else {

                     filter.put(CommonPublic.PRODUCTATTR,CommonPublic.WH_PRODUCTID);

                     filter.put(CommonPublic.MODULEATTR,CommonPublic.MODULEIDARY);

              }

             

              //filter.put(CommonPublic.MODULEATTR,CommonPublic.MODULEIDARY);

             

              String sort = null;

              if("1".equals(sortType)|| "-1".equals(sortType)) {

                 sort = CommonPublic.TIME_DESC;

              } else {

                 sort = CommonPublic.COUNT_DESC;

              }

             

              //根据已有过滤条件,查询

              NewsResultList query = newNewsResultList();

             

              int start =(page.getCurrentPage()-1)*10;

             

              Map<String, Object> queryMap= query.getNewsList(null, filter, sort, start, 11, beginDate, endDate,"yyyy-MM-dd", true);

 

              int total =Integer.parseInt(queryMap.get("total").toString());

              List<NewsBean> newsList =(List<NewsBean>) queryMap.get("newsList");

             

              page =PageUtil.getPage(page.getCurrentPage(), 10, total, newsList);

             

              return page;

       }

 

       @Override

       public int getRiLiData(StringbeginDate,String endDate,String sourceType) {

             

              Map<String, Object> filter =new HashMap<String, Object>();

              if("1".equals(sourceType)){

                     filter.put(CommonPublic.PRODUCTATTR,CommonPublic.QG_PRODUCTID);

              } elseif("2".equals(sourceType)){

                     filter.put(CommonPublic.PRODUCTATTR,CommonPublic.HB_PRODUCTID);

              } else {

                     filter.put(CommonPublic.PRODUCTATTR,CommonPublic.WH_PRODUCTID);

              }

              //filter.put(CommonPublic.MODULEATTR,CommonPublic.MODULEIDARY);

              //根据已有过滤条件,查询

              NewsResultList query = newNewsResultList();

             

              Map<String, Object> queryMap= query.getNewsList(null, filter, CommonPublic.TIME_DESC, 0, 11, beginDate,endDate, "yyyy-MM-dd", true);

 

              int total =Integer.parseInt(queryMap.get("total").toString());

             

              return total;

       }

}

由于在该层,一个是可以查询数据库的,一个是利用sphinx的网络爬虫去做引擎数据的,所以,不用调用mapper的文件,可以在impl实现类里面编写传递参数的控制,不用去调用dao层的接口

我们只讨论这里查询数据库的mybatis。这个mybatis对应的就是和dao层的对接,注意下面的对应的不是该接口方法要求的sql对应,只是说明顺序

<?xmlversion="1.0" encoding="UTF-8"?>

<!DOCTYPEmapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mappernamespace="com.bigdata.financial.wh.appraise.dao.SelectMapper">//对应相应的dao层的类

       <select id="queryProvince" resultType="java.util.Map">//id对应相应层内的方法名,以及相应的parametertype和resulttype,由于parametermap和resultmap没有配置,所以尽量不要用。如果sql返回出问题可以在这里检查。还要注意sql的拼写;

              SELECT linkageid as id,name asarea_designation FROM paper_linkage WHERE parentid = 0 AND child =1

       </select>

       <select id="queryCityByProvinceId"resultType="java.util.Map" parameterType="java.lang.Integer">

              SELECT linkageid as id,name asarea_designation FROM paper_linkage WHERE parentid = #{province_id}

       </select>

       <select id="querycountyByCityId"resultType="java.util.Map" parameterType="java.lang.Integer">

              SELECT linkageid as id,name asarea_designation FROM base_info.new_area_info WHERE LEVEL = 5 AND pre_id =#{city_id}

       </select>

       <select id="queryTrade" resultType="java.util.Map">

              SELECT id,trade_category FROMbase_info.trade_info WHERE is_used = 1

       </select>

       <select id="queryTypeSub" resultType="java.util.Map">

              SELECT id,name FROM data_typeWHERE pid = #{dataType}

       </select>

      

       <select id="queryProvinceByAreaId"resultType="java.util.Map">

              SELECT id,area_designation FROMbase_info.new_area_info WHERE LEVEL = 3 AND pre_id = #{areaId}

       </select>

</mapper>

上面的在impl层实现的方法,调用的类和调用jdbc的逻辑差不多。

例如,处理参数,调用新闻处理类

packagecom.bigdata.financial.wh.appraise.common.opinion;

 

importjava.util.HashMap;

importjava.util.Iterator;

importjava.util.List;

importjava.util.Map;

importjava.util.regex.Pattern;

 

importcom.bigdata.financial.wh.appraise.common.CommonPublic;

importcom.bigdata.financial.wh.appraise.tools.TimeFormat;

importcom.bigdata.unionservice.news.ArtResultBean;

importcom.bigdata.unionservice.news.AttrFilter;

importcom.bigdata.unionservice.news.NewsBean;

importcom.bigdata.unionservice.news.SphinxTerm;

 

 

/**

 * 舆情数据库查询

 * @author DELL

 *

 */

publicclass NewsResultList {

      

       /**

        * 判断字符串是否为数字

        *@param str    要判断的字符串

        */

       public static boolean isNumeric(Stringstr){

          Pattern pattern = Pattern.compile("[0-9]*");

          return pattern.matcher(str).matches();   

       }

      

       /**

        * 返回文章的相关数据信息

        *@param queryValue    查询关键字

        *@param filter        过滤条件的Map集合,MapKey是过滤的属性名,MapValue是过滤属性对应的ID集合,每个ID集合是List列表

        *@param sortBy            排序方式

        *@param offset             查询文章起始位置

        *@param limit               列表长度

        *@param beginDate            起始时间

        *@param endDate         结束时间

        *@param format            时间的样式

        *@param repeat            是否过滤掉相似文章:true-过滤;false-不过滤

        */

       @SuppressWarnings({ "rawtypes"})

       public Map<String, Object>getNewsList(String queryValue, Map<String, Object> filter,

                     String sortBy, int offset,int limit, String beginDate, String endDate, String format, boolean repeat){

                            Map<String,Object> map = new HashMap<String, Object>();

             

              SphinxTerm st = new SphinxTerm();

             

              //按照指定的关键字查询文章

              if(null != queryValue &&!queryValue.equals("")) {

                     st.setQValue(queryValue);

                     //st.setMatchMode(SphinxTerm.MATCHSCOPE_TITLE);

              }

 

              st.setOffset(offset);          //设置获取文章的起始位置

              st.setLimit (limit);             //设置获取的文章数

              st.setGroupByAttr(CommonPublic.FINGERPRINT);//方法去重

             

              TimeFormat dateMode =TimeFormat.getInstance();

             

              //过滤文章的开始时间

              if(null != beginDate &&!"".equals(beginDate)) {

                     long minTime =dateMode.getTimeToSecond(format, beginDate);

                     st.setMinTime(minTime);        //按创建文章的时间过滤

              }

              //过滤文章的结束时间

              if(null != endDate &&!"".equals(endDate)) {

                     long maxTime =dateMode.getTimeToSecond(format, endDate) + TimeFormat.SECONDDAY-1;

                     st.setMaxTime(maxTime);

              }

             

              //指定文章的排序方式

              if(null != sortBy) {

                     if(sortBy.equals(CommonPublic.TIME_DESC)){                //按照时间降序方式对文章进行排序

                            st.setSortAttr(CommonPublic.PUBTIME);

                            st.setSortMode(SphinxTerm.SORTMODE_TIME_DESC);

                     } else if(sortBy.equals(CommonPublic.WEIGHT_TIME_DESC)){//按照时间+相关度倒序

                            st.setSortMode(SphinxTerm.SORTMODE_TIME_RELEVANCE);

                     } elseif(sortBy.equals(CommonPublic.COUNT_DESC)) {//按照媒体转载量倒序

                            st.setGroupSort(SphinxTerm.GROUPSORT_COUNT);

                     }elseif(sortBy.equals(CommonPublic.TIME_ASC)) {//按时间升序

                            st.setSortAttr(CommonPublic.PUBTIME);

                            st.setGroupSort(SphinxTerm.SORTMODE_TIME_ASC);

                     }

              }

             

              //==========按照指定的过滤条件对文章信息进行过滤============

              if(null != filter) {

                     Iterator iter =filter.entrySet().iterator();

                     Map.Entry entry = null;

                     while (iter.hasNext()) {

                         entry = (Map.Entry) iter.next();

                         AttrFilter attrFilter = new AttrFilter();   //设置过滤条件

                            attrFilter.setAttribute(entry.getKey().toString());        //按指定的过滤条件过滤

                           

                            if(entry.getValue()instanceof Integer) {              //int类型的数据

                                   attrFilter.getValueArray().add(Long.valueOf(entry.getValue().toString()));

                            } elseif(entry.getValue() instanceof Long) { //long类型的数据

                                   attrFilter.getValueArray().add(Long.valueOf(entry.getValue().toString()));

                            } elseif(entry.getValue() instanceof int[]){          //int[]类型的数组

                                   int[]filterId = (int[]) entry.getValue();    //获取指定的过滤条件对应的ID

                                   for(int id :filterId) {

                                          attrFilter.getValueArray().add(Long.valueOf(id));

                                   }

                            } elseif(entry.getValue() instanceof long[]){              //long[]类型的数组

                                   long[]filterId = (long[]) entry.getValue();     //获取指定的过滤条件对应的ID

                                   for(long id :filterId) {

                                          attrFilter.getValueArray().add(id);

                                   }

                            }

                           

                            st.getFilterList().add(attrFilter);

                     }

              }

             

              //过滤掉相似文章

              if(true == repeat) {

                     st.setGroupType(SphinxTerm.GROUPTYPE_ATTR);

                     st.setGroupByAttr(CommonPublic.FINGERPRINT);            //根据语义指纹进行分组,就可以去除重复的文章

              }

             

              ArtResultBean articleBean =NewsQuery.query(st);  //到文章列表中查询

             

              if(null != articleBean){//如果查询到了

                     List<NewsBean>newsBean = articleBean.getQryMatchs();

                     map.put("newsList", newsBean);

                     map.put("total",articleBean.getTotalFound());

                     map.put("return_count",articleBean.getTotal());

              }

              return map;

       }

 

}

新闻处理类,处理设置sphinx的参数。调用类

packagecom.bigdata.financial.wh.appraise.common.opinion;

 

importjava.net.MalformedURLException;

importjava.net.URL;

importjava.util.HashMap;

importjava.util.List;

importjava.util.Map;

importjavax.xml.namespace.QName;

importjavax.xml.ws.Service;

importcom.bigdata.financial.wh.appraise.common.CommonPublic;

importcom.bigdata.unionservice.news.ArtResultBean;

importcom.bigdata.unionservice.news.AttrFilter;

importcom.bigdata.unionservice.news.MapConvertor;

importcom.bigdata.unionservice.news.MapEntry;

importcom.bigdata.unionservice.news.NewsBean;

importcom.bigdata.unionservice.news.NewsService;

importcom.bigdata.unionservice.news.SphinxTerm;

 

 

/**

 * 新闻查询服务

 * */

publicclass NewsQuery {

 

       /**

        * 文章查询服务

        **/

       public static NewsServicegetNewsService() throws MalformedURLException{

              URL wsdlURL = newURL("http://unionws.bigdata.com/services/NewsService?wsdl");

              QName serviceName = newQName("http://unionws.peopleyuqing.com", "NewsService");

              Service service =Service.create(wsdlURL, serviceName);

              NewsService artSearcher =service.getPort(NewsService.class);

              return artSearcher;

       }

      

       /**

        * 按照自定义规则查询

        **/

       public static ArtResultBeanqueryByCondition(int conditionId){

              ArtResultBean bean = null;

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     bean =ns.queryByCondition(conditionId);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return bean;

       }

      

       /**

        * 按照自定义规则查询,并增加动态条件

        **/

       public static ArtResultBeanqueryByConditionAndST(int conditionId, SphinxTerm sTerm){

              ArtResultBean bean = null;

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     bean =ns.queryByConditionAndST(conditionId, sTerm);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return bean;

       }

      

       /**

        * 按照自定义规则统计

        **/

       public static ArtResultBeanstatByCondition(int conditionId){

              ArtResultBean bean = null;

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     bean = ns.statByCondition(conditionId);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return bean;

       }

      

       /**

        * 批量修改相似文章正负面属性

        **/

       public static booleanupdateSimilarPlusAttr(List<Long> newsIdList, int plusAttr){

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     returnns.updateSimilarPlusAttr(newsIdList, CommonPublic.PRODUCTID, plusAttr);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return false;

       }

       /**

        * 按照自定义规则统计,并增加动态条件

        **/

       public static ArtResultBeanstatByConditionAndST(int conditionId, SphinxTerm sTerm){

              ArtResultBean bean = null;

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     bean =ns.statByConditionAndST(conditionId, sTerm);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return bean;

       }

      

       /**

        * 按照自定义规则统计,返回当前查询条件下总记录数

        **/

       public static longgetTotalFoundByCondition(int conditionId){

              long totalFound = 0L;

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     totalFound =ns.getTotalFoundByCondition(conditionId);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return totalFound;

       }

 

       /**

        * 按照自定义规则统计,返回当前查询条件下总记录数

        **/

       public static longgetTotalFoundByConditionAndST(int conditionId, SphinxTerm sTerm){

              long totalFound = 0L;

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     totalFound =ns.getTotalFoundByConditionAndST(conditionId, sTerm);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return totalFound;

       }

      

       /**

        * 查询

        **/

       public static ArtResultBeanquery(SphinxTerm st){

              ArtResultBean bean = null;

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     st.setSourceType(1);

                     bean = ns.query(st);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return bean;

       }

      

       /**

        * 批量查询

        */

       public static List<ArtResultBean>batchQry(List<SphinxTerm> termList){

              List<ArtResultBean> beanList= null;

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     beanList = ns.batchQry(termList);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return beanList;

       }

      

       /**

        * 统计

        **/

       public static ArtResultBeanstatQuery(SphinxTerm st){

              ArtResultBean bean = null;

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     st.setSourceType(1);

                     bean = ns.statQuery(st);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return bean;

       }

      

       /**

        * 返回文章总记录数

        **/

       public static longgetQueryTotalFound(SphinxTerm st){

              long totalFound = 0L;

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     totalFound =ns.getQueryTotalFound(st);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return totalFound;

       }

      

       /**

        * 查询相似文章列表

        **/

       public static ArtResultBean querySame(intoffset, int limit, long newsId){

              ArtResultBean bean = null;

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     bean = ns.querySame(offset,limit, newsId);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return bean;

       }

      

       /**

        * 获取文章详细内容

        **/

       public static NewsBean getNewsDetail(longnewsId){

              com.bigdata.unionservice.news.NewsBeanbean = null;

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     bean =ns.getNewsDetail(newsId);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return bean;

       }

      

       /**

        * 根据id获取文章信息,来自搜索引擎

        **/

       public static NewsBeangetNewsBeanFromIndex(long newsId){

              NewsBean bean = null;

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     bean =ns.getNewsBeanFromIndex(newsId);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return bean;

       }

      

       /**

        * 按文章ID,获取文章列表

        *@param newsIdList List<Long>文章id

        *@param isContent  boolean   是否需要文章正内

        *@return List<NewsBean>

        */

       public static List<NewsBean>getNewsList(List<Long> newsIdList,boolean isContent){

              List<NewsBean> result =null;

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     result = ns.getNewsList(newsIdList,isContent);

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return result;

       }

      

      

       /**

        * 按语义指纹,获取站点列表

        *@param fingerprintIds List<Long>语义指纹

        *@return Map<Long, List<Integer>> key=语义指纹,value=站点Id列表

        */

       public static Map<Long,  List<Integer>>getWebsiteByFingerprint(List<Long> fingerprintIds){

              Map<Long,  List<Integer>> result = newHashMap<Long, List<Integer>>();

              try {

                     NewsService ns =NewsQuery.getNewsService();

                     MapConvertor mapConvertor =ns.getWebSiteListByFingerPrint(fingerprintIds);

              for (MapEntry e : mapConvertor.getEntries())

              {

                   result.put(e.getKey(),e.getValue());

              }

              } catch (MalformedURLException e){

                     e.printStackTrace();

              }

              return result;

       }

      

       public static void main(String args[]){

             

              SphinxTerm st = new SphinxTerm();

              st.setOffset(0);

              st.setLimit(5);

 

              AttrFilter attrFilter = newAttrFilter();

              attrFilter.setAttribute("plusAttr");          //按模块过滤

              long plusId = 62L;

              attrFilter.getValueArray().add(plusId);

              st.getFilterList().add(attrFilter);

 

//           st.setGroupType(SphinxTerm.GROUPTYPE_ATTR);

//           st.setGroupByAttr("fingerprint");           //按语义指纹进行分组

//           st.setGroupSort(SphinxTerm.GROUPSORT_COUNT);

             

             

              ArtResultBean artResultBean =NewsQuery.query(st);

              if(null == artResultBean){

                     System.out.println("Returnis NULL");

              }else{

                     System.out.println(artResultBean.getTotalFound());

                     List<NewsBean>newsBean = artResultBean.getQryMatchs();

                     System.out.println(artResultBean.getTotalFound());

                     System.out.println(newsBean.size());

                     System.out.println("------------------START----------------");

                     for(int i = 0; i <newsBean.size(); ++i){

                            System.out.println(newsBean.get(i).getId());

                            System.out.println(newsBean.get(i).getTitle());

                            System.out.println(newsBean.get(i).getModuleAttr());

                     }

                     System.out.println("-----------------END------------------");

              }

       }

}

到此两个分支流程完毕!

0 0
原创粉丝点击