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>
<!-- 根据数据库字段长自动匹配,默认为false:bigdecimal,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"
#将需要返回id的xml文件加在下面
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"/>
<!--可以增加其他数据类型,请参考spring的API-->
<!-- 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会作为基目录访问http:kkkkk:端口;
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集合,Map的Key是过滤的属性名,Map的Value是过滤属性对应的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------------------");
}
}
}
到此两个分支流程完毕!
- mvc下访问数据库和搜索引擎sphinx架构搭建
- 搭建Sphinx全文搜索引擎
- Sphinx搜索引擎架构与使用文档(和MySQL结合)
- php sphinx 高效率搜索引擎搭建
- CentOS7下sphinx搭建
- CentOS7下sphinx搭建
- Sphinx+Mysql+shell搜索引擎架构 AND 安装
- php sphinx 高效率搜索引擎搭建(一)
- php sphinx 高效率搜索引擎搭建(一)
- php sphinx 高效率搜索引擎搭建(一)
- php sphinx 高效率搜索引擎搭建(二)
- php sphinx 高效率搜索引擎搭建(一)
- CS架构下数据库访问
- centso5下使用coreseek(sphinx)建立搜索引擎
- centos下,搜索引擎sphinx/coreseek安装教程
- 搜索引擎Sphinx在windows下安装使用
- CentOS7.0 下sphinx搭建
- sphinx搜索引擎的安装和使用
- 选项卡
- hadoop 之 mapreduce 特性
- service层AOP(基于注解的方法切入)
- linux的exec和source命令区别
- 《剑指offer》:[13]对几万公司员工年龄的排序算法
- mvc下访问数据库和搜索引擎sphinx架构搭建
- Spark知识体系完整解读
- java开发环境搭建
- handler机制的原理
- Winform子窗体刷新父窗体
- java得到类信息的代码演示
- Qt学习笔记01
- c语言实现一个简单的语法分析器
- 1、CommonUtils.uuid()和CommonUtils.toBean(map, Person.class)