博客分類: spring
- <context-param>
- <param-name>webAppRootKey</param-name>
- <param-value>root</param-value>
- </context-param>
- <!--Log4jConfigListener要在ContextLoaderListener前 -->
- <listener>
- <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
- </listener>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <listener>
- <description>Used to clean up when a session is destroyed</description>
- <display-name>ZK Session Cleaner</display-name>
- <listener-class>org.zkoss.zk.ui.http.HttpSessionListener</listener-class>
- </listener>
- <filter>
- <filter-name>loginFilter</filter-name>
- <filter-class>com.mypro.LoginFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>loginFilter</filter-name>
- <url-pattern>*.zul</url-pattern>
- </filter-mapping>
- <servlet>
- <description>ZK loader for ZUML pages</description>
- <servlet-name>zkLoader</servlet-name>
- <servlet-class>org.zkoss.zk.ui.http.DHtmlLayoutServlet</servlet-class>
- <init-param>
- <param-name>update-uri</param-name>
- <param-value>/zkau</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>zkLoader</servlet-name>
- <url-pattern>*.zul</url-pattern>
- </servlet-mapping>
- <servlet>
- <description>The asynchronous update engine for ZK</description>
- <servlet-name>auEngine</servlet-name>
- <servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>auEngine</servlet-name>
- <url-pattern>/zkau/*</url-pattern>
- </servlet-mapping>
- <error-page>
- <exception-type>java.lang.Throwable</exception-type>
- <location>/error.zul</location>
- </error-page>
- <error-page>
- <error-code>404</error-code>
- <location>/404.zul</location>
- </error-page>
- <!-- MIME mapping -->
- ……
如果在web.xml中未指明spring的配置配置文件名,默認在WEB-INF目錄下查找applicationContext.xml。下面包含property、spring、hibernate、cxf的配置:
- <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
- <!--IoC自動掃描帶@Controller、@Service、@Repository、@Resource、@Transactional等註釋的類-->
- <context:component-scan base-package="com.pro.control,com.pro.service.impl,com.pro.dao.hibernate.impl" />
- <!--配置屬性文件的存放地址-->
- <context:property-placeholder location="WEB-INF/config.properties"/>
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName" value="${jdbc.driverClassName}"/>
- <property name="url" value="${jdbc.url}"/>
- <property name="username" value="${jdbc.username}"/>
- <property name="password" value="${jdbc.password}"/>
- </bean>
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" destroy-method="close">
- <property name="dataSource" ref="dataSource" />
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
- <prop key="hibernate.current_session_context_class">thread</prop>
- <prop key="hibernate.hbm2ddl.auto">none</prop>
- <prop key="hibernate.show_sql">true</prop>
- <prop key="hibernate.format_sql">true</prop>
- <prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>
- <prop key="hibernate.c3p0.validate">true</prop>
- <prop key="hibernate.c3p0.max_size">20</prop>
- <prop key="hibernate.c3p0.min_size">5</prop>
- <prop key="hibernate.c3p0.timeout">120</prop>
- <prop key="hibernate.c3p0.max_statements">100</prop>
- <prop key="hibernate.c3p0.idle_test_period">120</prop>
- <prop key="hibernate.c3p0.acquire_increment">2</prop>
- <prop key="connection.useUnicode">true</prop>
- <prop key="connection.characterEncoding">UTF-8</prop>
- </props>
- </property>
- <!--自動掃描hibernate實體:帶@Entity註釋-->
- <property name="packagesToScan" value="com.pro.dao.hibernate.vo" />
- </bean>
- <!-- 事務配置 -->
- <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <property name="sessionFactory" ref="sessionFactory"></property>
- </bean>
- <tx:annotation-driven transaction-manager="transactionManager"/>
- <!-- 配置cxf服務器的訪問地址:http://192.168.1.120:8000/ -->
- <bean id="endpoint" class="com.pro.CxfInterface"
- factory-bean="clientFactory" factory-method="create" />
- <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
- <property name="serviceClass" value="com.pro.CxfInterface" />
- <property name="address" value="http://192.168.1.120:8000/" />
- </bean>
- </beans>
Ioc控制的Bean默認是單例,如果要設置非單例在類前註明如下:
- @Controller("employmentCtrl")
- @Scope("prototype")
- public class EmploymentCtrl{
- @Resource
- private EmploymentService employService;
- ......
- }
業務類:
- @Service("employService")
- public class EmploymentServiceImpl implements EmploymentService {
- @Resource
- private EmploymentDao employDao;
- @Override
- @Transactional(isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class, timeout = 30)
- public void addOrEditEmployment{......}
hibernate實體類例子如下(oracle爲例,也可設置爲native方便移植,屬性與表的字段一致即可):
- @Entity
- @Table(name = "employment")
- public class Employment implements Serializable {
- private static final long serialVersionUID = 6678401113364404864L;
- @Id
- @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "emp_seq")
- @SequenceGenerator(name = "emp_seq", sequenceName = "seq_emp", allocationSize = 1)
- private long id;
- ......
log4j有兩種文件配置方式:log4j.xml和.property配置文件,默認放置在WEB-INF/下面,以log4j.xml爲例配置如下:
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE log4j:configuration SYSTEM "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="[%p] %d [%c.%M()] - %m%n"/>
- </layout>
- </appender>
- <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
- <param name="File" value="${root}logs/log.log" />
- <param name="Threshold" value="DEBUG" />
- <param name="Append" value="true" />
- <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="[%p] %d [%c.%M] - %m%n"/>
- </layout>
- </appender>
- <logger name="org.apache">
- <level value="WARN"/>
- </logger>
- <logger name="org.springframework">
- <level value="WARN"></level>
- </logger>
- <logger name="java.sql">
- <level value="INFO"/>
- </logger>
- <logger name="com.mypro">
- <level value="DEBUG"/>
- </logger>
- <root>
- <level value="WARN"/>
- <appender-ref ref="CONSOLE"/>
- <appender-ref ref="FILE"/>
- </root>
- </log4j:configuration>
log4j的日誌格式(Layout)說明如下:
- 符號 描述
- ----------------------------------------
- %d 當前時間
- %r 自程序開始後消耗的毫秒數
- %t 表示日誌記錄請求生成的線程
- %p 表示日誌語句的優先級
- %r 與日誌請求相關的類別名稱
- %c 日誌信息所在的類名
- %M 日誌信息所在類的方法
- %L 日誌信息所在方法的行數
- %m%n 表示日誌信息的內容