table样式显示 |
|
|
<table border="1" width="800">
<thead>
<tr class="col-name">
<th></th>
<th class="baobei">宝贝</th>
<th class="price">单价(元)</th>
<th class="quantity">数量</th>
<th class="after-service">售后</th>
<th class="amount">实付款(元)</th>
<th class="trade-status">
<div class="trade-status">
<select id="J_TradeStatusHandle">
<option value="ALL">交易状态</option>
<option value="NOT_PAID">等待买家付款</option>
<option value="PAID">买家已付款</option>
<option value="SEND">卖家已发货</option>
<option value="SUCCESS">交易成功</option>
<option value="DROP">交易关闭</option>
<option value="REFUNDING">退款中的订单</option>
</select>
</div>
</th>
<th class="remark">交易操作</th>
<th class="other">其它操作</th>
</tr>
</thead>
<c:out value="${fn:length(orderList)}"></c:out>
<c:forEach items="${orderList}" var="orderInfo">
<tbody>
<tr>
<td colspan="9"><span>订单编号:</span><span>${orderInfo.orderId}</span>
<span>成交时间</span><span>${orderInfo.createOrderDate}</span><span>店铺名称</span>
<span></span></td>
</tr>
<!-- 林产品信息 -->
<c:forEach items="${orderInfo.orderItemInfos}" var="orderItemInfo"
varStatus="vstatus">
<c:out value="${vstatus.index}"></c:out>
<tr>
<!-- 林产品 -->
<td colspan="2">${ orderItemInfo.productTitle}</td>
<!-- 单价 -->
<td>${orderItemInfo.productPrice}</td>
<!-- 数量 -->
<td>${orderItemInfo.productQuantity}</td>
<!-- 售后 -->
<td>售后</td>
<!-- 这里只运行一次 -->
<c:if test="${vstatus.index ==0}">
<td rowspan="${fn:length(orderInfo.orderItemInfos)}">${orderInfo.price
}</td>
<td rowspan="${fn:length(orderInfo.orderItemInfos)}">${orderInfo.tradeStatusName}</td>
<td rowspan="${fn:length(orderInfo.orderItemInfos)}">交易操作</td>
<td rowspan="${fn:length(orderInfo.orderItemInfos)}">其他操作</td>
<!-- 这里只运行一次 -->
</c:if>
</tr>
</c:forEach>
<!-- 从这里得合并-->
</tbody>
</c:forEach>
<tfoot></tfoot>
</table>
|
applicationContext.xml详细配置 |
spring |
|
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--Spring 定义本地资源文件
<bean id="propertyConfigure"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>
classpath:resource/properties/*.properties
</value>
</list>
</property>
</bean>
-->
<!--Spring 定义 JNDI 连接池
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean"
destroy-method="close">
<property name="jndiName">-->
<!-- tomcat -->
<!-- <value>java:comp/env/jcptDataSourceJNDI</value>-->
<!-- apusic -->
<!--<value>jcptDataSourceJNDI</value>-->
<!-- jboss -->
<!--<value>java:/jcptDataSourceJNDI</value>-->
<!-- </property>
</bean>
-->
<!--Spring 定义 proxool连接池
<bean id="JDBCDataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close">
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="driverUrl" value="jdbc:oracle:thin:szpf/szpf@192.168.0.2:1521:orcl" />
<property name="user" value="szpf" />
<property name="password" value="szpf" />
<property name="alias" value="test" />
<property name="minimumConnectionCount" value="10" />
<property name="maximumConnectionCount" value="20" />
<property name="prototypeCount" value="10" />
<property name="houseKeepingSleepTime" value="30000" />
<property name="trace" value="true" />
<property name="verbose" value="true" />
</bean>
-->
<!--Spring 定义 C3p0 连接池
<bean id="JDBCDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />
<property name="jdbcUrl" value="jdbc:oracle:thin:@192.168.0.2:1521:orcl" />
<property name="user" value="szpf" />
<property name="password" value="szpf" />
<property name="minPoolSize" value="10" />
<property name="maxPoolSize" value="20" />
<property name="maxIdleTime" value="60" />
<property name="acquireIncrement" value="2" />
<property name="maxStatements" value="0" />
<property name="initialPoolSize" value="2" />
<property name="idleConnectionTestPeriod" value="60" />
<property name="acquireRetryAttempts" value="10" />
<property name="breakAfterAcquireFailure" value="true" />
<property name="testConnectionOnCheckout" value="false" />
</bean>
-->
<!-- Spring 自带的连接池 -->
<bean id="JDBCDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@192.168.0.2:1521:orcl" />
<property name="username" value="szpf" />
<property name="password" value="szpf" />
<property name="maxActive" value="100" />
<property name="maxIdle" value="30" />
<property name="minIdle" value="10" />
<property name="maxWait" value="1000" />
</bean>
<!-- 配置SessionFactory -->
<bean id="SessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 如果使用Hibernate3的注释POJO则使用此:class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" -->
<property name="dataSource">
<ref bean="JDBCDataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.max_fetch_depth">1</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.jdbc.batch_size">50</prop>
</props>
</property>
<!-- Hibernate2 的hbm.xml方式配置POJO -->
<property name="mappingResources">
<list>
<value>com/pufang/system/model/SysUser.hbm.xml</value>
<value>com/pufang/system/model/System.hbm.xml</value>
<!-- 注意这个是:通用写法
<value>classpath*:/com/pufang/manager/**/po/*.hbm.xml</value>
<value>classpath*:/com/pufang_pt/**/model/*.hbm.xml</value>
-->
</list>
</property>
<!-- Hibernate3 注释方式的POJO 直接指定java类 -->
<property name="annotatedClasses">
<list>
<!--
<value>com.pufang.model.XXXX</value>
<value>com.pufang.model.XXXX</value>
-->
</list>
</property>
<!-- Hibernate3 注释方式的POJO 直接指定包路径
<property name="packagesToScan" value="com.**.model"/> //通用包路径写法
<property name="packagesToScan"> //清单方式指定包路径
<list>
<value>com.pufang.base.model</value>
<value>com.pufang.system.model</value>
</list>
</property>
-->
</bean>
<!-- 定义事务管理类 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="SessionFactory" />
</bean>
<!-- 事务处理的AOP配置 所有服务层bean声明都要继承此bean-->
<bean id="TransactionProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<!-- 为了保证服务层统一的事务处理。服务层接口,类的方法必须以下面的方法为开口 -->
<!--
spring 捕获到RuntimeException和其他一些异常时才会回滚,不是所有异常都会回滚,-Exception 设置
为任何异常都回滚 ZOUWEI
-->
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="up*">PROPAGATION_REQUIRED</prop>
<prop key="mod*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="deploy*">PROPAGATION_REQUIRED</prop>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="submit*">PROPAGATION_REQUIRED</prop>
<prop key="goback">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
</beans>
|
applicationContext.xml |
spring |
|
<?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:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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/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">
<!-- 自动扫描包,可以写多个 -->
<context:component-scan base-package="com.xxx,com.xxx.session,com.xxx.xxx" ></context:component-scan>
<!-- 多视图处理器 -->
<bean class="com.xxx.core.web.MixedViewResolver">
<property name="resolvers">
<map>
<entry key="jsp">
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
</bean>
</entry>
<entry key="ftl">
<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="true"/>
<property name="contentType" value="text/html;charset=UTF-8"></property>
<!-- 宏命令的支持 -->
<property name="exposeSpringMacroHelpers" value="true"/>
<property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
<property name="requestContextAttribute" value="rc"></property>
</bean>
</entry>
</map>
</property>
</bean>
<!-- freemarker config -->
<bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/ftl/" />
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">5</prop>
<prop key="default_encoding">UTF-8</prop>
<prop key="locale">zh_CN</prop>
</props>
</property>
</bean>
<!-- 日志拦截器-->
<bean id="logNDCInteceptor" class="com.xxx.core.web.LogNDCInteceptor"/>
<!-- 权限拦截器-->
<bean id="myPermissionsInteceptor" class="com.xxx.userplatform.mvc.MyPermissionsInteceptor"></bean>
<!-- RequestHelper拦截器-->
<bean id="myRequestHelperInteceptor" class="com.xxx.core.web.MyRequestHelperInteceptor"></bean>
<!-- 用户信息拦截器-->
<bean id="myUserInfoInteceptor" class="com.xxx.userplatform.mvc.MyUserInfoInteceptor"></bean>
<!-- 注解请求映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<ref bean="logNDCInteceptor"/> <!-- 日志拦截器 -->
<ref bean="myRequestHelperInteceptor"/> <!-- RequestHelper拦截器-->
<ref bean="myPermissionsInteceptor"/> <!-- 权限拦截器-->
<ref bean="myUserInfoInteceptor"/> <!-- 用户信息拦截器-->
</list>
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="byteArray_hmc" />
<ref bean="string_hmc" />
<ref bean="resource_hmc" />
<ref bean="source_hmc" />
<ref bean="xmlAwareForm_hmc" />
<ref bean="jaxb2RootElement_hmc" />
<ref bean="jackson_hmc" />
</list>
</property>
</bean>
<bean id="byteArray_hmc" class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /><!-- 处理.. -->
<bean id="string_hmc" class="org.springframework.http.converter.StringHttpMessageConverter" /><!-- 处理.. -->
<bean id="resource_hmc" class="org.springframework.http.converter.ResourceHttpMessageConverter" /><!-- 处理.. -->
<bean id="source_hmc" class="org.springframework.http.converter.xml.SourceHttpMessageConverter" /><!-- 处理.. -->
<bean id="xmlAwareForm_hmc" class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" /><!-- 处理.. -->
<bean id="jaxb2RootElement_hmc" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" /><!-- 处理.. -->
<bean id="jackson_hmc" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /><!-- 处理json-->
<!-- 总错误处理-->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!-- 上传文件大于最大尺寸后转向出错页面 -->
<prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">
redirect:/uploadError.jsp
</prop>
</props>
</property>
<property name="defaultErrorView">
<value>forward:/error.jsp</value>
</property>
<property name="defaultStatusCode">
<value>200</value>
</property>
<property name="warnLogCategory">
<value>org.springframework.web.servlet.handler.SimpleMappingExceptionResolver</value>
</property>
</bean>
<!-- 允许对静态资源文件的访问 -->
<mvc:default-servlet-handler/>
<!-- 数据源 ,DBCP连接池-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@192.168.3.141:1521:xxx"/>
<property name="username" value="xxxdb"/>
<property name="password" value="xxxdb"/>
<property name="initialSize" value="2"/>
<property name="maxActive" value="10"/>
<property name="maxIdle" value="10"/>
<property name="maxWait" value="1000"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
<!-- JNDI数据源
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>jdbc/xxx</value>
</property>
</bean>
-->
<!-- JDBC模板 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 用注解来实现事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<!-- 用于持有ApplicationContext,可以使用SpringContextHolder.getBean('xxxx')的静态方法得到spring bean对象 -->
<bean class="com.xxxxx.SpringContextHolder" lazy-init="false" />
</beans>
|
配置spring的web.xml |
spring |
|
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>spring_mvc_1</display-name>
<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- Bootstraps the root web application context before servlet initialization -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- Reads request input using UTF-8 encoding -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping></web-app>
|
log4j.xml |
log4j |
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.context">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
<!-- Root Logger -->
<root>
<priority value="warn" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
|
一个简单的Maven Web方面的pom文件 |
jetty插件。 |
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.sonatype.mavenbook.ch05</groupId>
<artifactId>simple-webapp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>simple</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<finalName>simple-webapp</finalName>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>7.1.0.RC1</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webAppConfig>
<contextPath>/webapp</contextPath>
</webAppConfig>
</configuration>
</plugin>
</plugins>
</build>
</project>
|