-------------------------------------------------------------------------------
action 层 控制层 放的实现类 和对页面数据的封装 struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"/>
<constant name="struts.action.extension" value="action,do,s2"></constant>
<!-- <package name="date" namespace="/" extends="json-default">
ajx 请求 服务器直接返回action 数据
<action name="getdate" class="com.weixin.action.auth.OAuthAction" method="getOAuthCodeRepair">
<result type="json">
默认返回全部数据,设置incluceProperties 返回部分(name user对象)要返回的数据
<param name="incluceProperties">
name,user.*
</param>
</result>
</action>
</package> -->
<package name="ehrlink" extends="json-default">
<action name="init" class="com.weixin.action.NewsAction" method="init">
<result name="success">/news/jsp/news.jsp</result>
</action>
<action name="noticeJump" class="com.weixin.action.NoticeAction" method="noticeJump">
<result name="success">/index.jsp</result>
</action>
<action name="taskGetAllToDoTasks" class="com.weixin.action.TasksAction" method="getAllToDoTasks">
<result name="success">/task/taskList.jsp</result>
</action>
<action name="taskGetAllDoneTasks" class="com.weixin.action.TasksAction" method="getAllDoneTasks">
<!-- <result name="success" type="json">
<param name="root">doneTasks</param>
</result> -->
<result name="success">/task/doneTasks.jsp</result>
</action>
<action name="getAllProposal" class="com.weixin.action.TasksAction" method="getProposalByUserName">
<!-- <result name="success" type="json">
<param name="root">doneTasks</param>
</result> -->
<result name="success">/task/proposal.jsp</result>
</action>
<action name="taskGetAllToDoTasksByJson" class="com.weixin.action.TasksAction" method="getAllToDoTasksByJson">
<result name="success" type="json">
<param name="root">resultData</param>
</result>
</action>
<action name="getAllDoneTasksJson" class="com.weixin.action.TasksAction" method="getAllDoneTasksJson">
<result name="success" type="json">
<param name="root">resultData</param>
</result>
</action>
<action name="followSaveFollow" class="com.weixin.action.FollowAction" method="saveFollow">
<result name="success">/task/taskList.jsp</result>
</action>
<action name="followGetAllfollow" class="com.weixin.action.FollowAction" method="getAllFollowByUserName">
<result name="success">/follow/followList.jsp</result>
</action>
<action name="followDelete" class="com.weixin.action.FollowAction" method="deleteFollowByID">
<result name="success">/follow/followList.jsp</result>
</action>
<action name="nextPage" class="com.weixin.action.FollowAction" method="nextPageJson">
<result name="success" type="json">
<param name="root">resultData</param>
</result>
</action>
<action name="getNodes" class="com.weixin.action.FollowAction" method="getNodes">
<result name="success" type="json">
<param name="root">resultData</param>
</result>
</action>
<action name="getReadNoticeByUserName" class="com.weixin.action.ReadNoticeAction" method="getAllReadNoticeByUserName">
<result name="success">/follow/followList.jsp</result>
</action>
<action name="readNoticeDetail" class="com.weixin.action.ReadNoticeAction" method="getReadNoticeDetail">
<result name="success">/readNotice/readNoticeDetail.jsp</result>
</action>
</package>
</struts>
-----------------------------------------------
constan 枚举类常量
------------------------------------------------
dao 层 follow.xml mybitys.xml 文件以及对应的映射实体类。 SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings enhancementEnabled="true" maxTransactions="20"
maxRequests="32" maxSessions="10" useStatementNamespaces="true"/>
<sqlMap resource="com/ceair/weixin/dao/impl/OrgInfo.xml" />
<sqlMap resource="com/ceair/weixin/dao/impl/User.xml" />
<sqlMap resource="com/ceair/weixin/dao/impl/PushMessage.xml" />
<sqlMap resource="com/ceair/weixin/dao/impl/Token.xml" />
<sqlMap resource="com/ceair/weixin/dao/impl/Follow.xml" />
<sqlMap resource="com/ceair/weixin/dao/impl/OrgT.xml" />
</sqlMapConfig>
-----------------------------------------------------------------------------------------
mobel 层放实体类,封装的对象,本地建表要插入的一些对象
--------------------------------------------------------------------------------------------
Quartz PushMessageQuartz.java 执行推送信息 applicationContext-bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
<beans>
<!-- 定时获取数据,并推送到微信中 -->
<!-- 要调用的工作类 -->
<bean id="pushMessage" class="com.weixin.quartz.PushMessageQuartz"></bean>
<!-- 要调用的工作类 -->
<bean id="pushNewsMessage" class="com.weixin.quartz.PushNewsMessageQuartz"></bean>
<!-- 定义调用对象和调用对象的方法 -->
<bean id="othertask"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="pushMessage" />
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>pushMessage</value>
</property>
</bean>
<!-- 新闻的推送设置 -->
<bean id="pushNewstask"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="pushNewsMessage" />
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>pushNewsMessage</value>
</property>
</bean>
<!-- 定义触发时间 -->
<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="othertask" />
</property>
<!-- cron表达式 -->
<property name="cronExpression">
<!-- 五分钟执行一次 -->
<!-- <value> 10,15,20,25,30,35,40,45,50,55 * * * * ?</value> -->
<value>0 0/5 * * * ?</value>
</property>
</bean>
<!-- 定义触发时间 -->
<bean id="doTimeNews" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="pushNewstask" />
</property>
<!-- cron表达式 -->
<property name="cronExpression">
<!-- 上午10点和下午4执行 -->
<!-- <value> 10,15,20,25,30,35,40,45,50,55 * * * * ?</value> -->
<value>0 0 10,16 * * ? </value>
</property>
</bean>
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuertz" lazy-init="false" autowire="no"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!-- 执行其他的推送设置 -->
<ref local="doTime" />
<!-- 执行新闻推送设置 -->
<ref local="doTimeNews" />
</list>
</property>
</bean>
</beans>
----------------------------------------------------------------
服务端获取数据
com.weixin.services.dbservice
com.weixin.services.dbservice.impl
---------------------------------------
工具类
com.weixin.util
-----------------------------
applicationContext-datasource.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="dataSource_mplatform" class="org.logicalcobwebs.proxool.ProxoolDataSource">
<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<!--测试 -->
<property name="driverUrl" value="jdbc:sqlserver://*.*.*.*:1433;DatabaseName=qiyeweixin"/>
<property name="user" value="weixin"/>
<property name="password" value="weixin"/>
<property name="maximumActiveTime" value="300000"/>
<property name="prototypeCount" value="2"/>
<property name="maximumConnectionCount" value="50"/>
<property name="minimumConnectionCount" value="2"/>
<property name="simultaneousBuildThrottle" value="50"/>
<property name="houseKeepingTestSql" value="select 1"/>
<property name="alias" value="dataSource_mplatform"/>
</bean>
<bean id="sqlMapClientFactoryBean_mplatform" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>classpath:SqlMapConfig.xml</value>
</property>
<property name="dataSource" ref="dataSource_mplatform"/>
</bean>
</beans>
-------------------------------------------------
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<!-- default-lazy-init="true" -->
<import resource="applicationContext-datasource.xml" />
<import resource="applicationContext-bean.xml" />
<!-- 使用annotation 自动注册bean,并检查@Required,@Autowired的属性已被注入 -->
<context:component-scan base-package="com.weixin" />
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource_mplatform" />
</bean>
<!-- 注解事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
------------------------------------------------------
log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %l > %m%n" />
</layout>
</appender>
<appender name="ehrlink.debug" class="org.apache.log4j.DailyRollingFileAppender">
<param name="BufferSize" value="2048" />
<param name="Encoding" value="UTF-8"/>
<param name="File" value="/oracle/Middleware/user_projects/domains/mobile_domain/applications/log4j/ehrlink/ehrlink.debug.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="8mb"/>
<param name="MaxBackupIndex" value="3"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %t %c.%M(%L) > %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="TRACE" />
<param name="LevelMax" value="DEBUG" />
</filter>
</appender>
<appender name="ehrlink.debug.other" class="org.apache.log4j.RollingFileAppender">
<param name="BufferSize" value="2048" />
<param name="Encoding" value="UTF-8"/>
<param name="File" value="/oracle/Middleware/user_projects/domains/mobile_domain/applications/log4j/ehrlink/ehrlink.debug.other.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="8mb"/>
<param name="MaxBackupIndex" value="3"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %t %c.%M(%L) > %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="TRACE" />
<param name="LevelMax" value="DEBUG" />
</filter>
</appender>
<appender name="ehrlink.info" class="org.apache.log4j.RollingFileAppender">
<param name="Encoding" value="UTF-8"/>
<param name="File" value="/oracle/Middleware/user_projects/domains/mobile_domain/applications/log4j/ehrlink/ehrlink.info.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="8mb"/>
<param name="MaxBackupIndex" value="3"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c.%M(%L) > %m%n"/>
</layout>
<!-- Only INFO level information can be caught. -->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<appender name="ehrlink.info.other" class="org.apache.log4j.RollingFileAppender">
<param name="Encoding" value="UTF-8"/>
<param name="File" value="/oracle/Middleware/user_projects/domains/mobile_domain/applications/log4j/ehrlink/ehrlink.info.other.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="8mb"/>
<param name="MaxBackupIndex" value="3"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c.%M(%L) > %m%n"/>
</layout>
<!-- Only INFO level information can be caught. -->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<appender name="ehrlink.error" class="org.apache.log4j.DailyRollingFileAppender">
<param name="Encoding" value="UTF-8"/>
<param name="File" value="/oracle/Middleware/user_projects/domains/mobile_domain/applications/log4j/ehrlink/ehrlink.error.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="8mb"/>
<param name="MaxBackupIndex" value="3"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %t %l > %m%n"/>
</layout>
<!-- Only ERROR level information can be caught. -->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
<appender name="oscache" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<!--
<logger name="com.opensymphony.oscache" additivity="true">
<level value="DEBUG" />
<appender-ref ref="oscache" />
</logger>
<appender name="IBatis" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender>
<logger name="java.sql.Connection" additivity="true">
<level value="DEBUG" />
</logger>
<logger name="java.sql.Statement" additivity="true">
<level value="DEBUG" />
</logger>
<logger name="java.sql.PreparedStatement" additivity="true">
<level value="DEBUG" />
<appender-ref ref="IBatis" />
</logger>
<logger name="java.sql.ResultSet" additivity="true">
<level value="DEBUG" />
<appender-ref ref="IBatis" />
</logger>
-->
<logger name="com.ceair" additivity="false">
<level value="debug" />
<appender-ref ref="console"/>
<appender-ref ref="ehrlink.debug"/>
<appender-ref ref="ehrlink.info"/>
<appender-ref ref="ehrlink.error"/>
</logger>
<root>
<level value="error" />
<appender-ref ref="ehrlink.debug.other"/>
<appender-ref ref="ehrlink.info.other"/>
<appender-ref ref="ehrlink.error"/>
</root>
</log4j:configuration>