Added petclinic sample
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
<!-- Tomcat context descriptor used for specifying a custom ClassLoader -->
|
||||
<Context path="/petclinic" reloadable="false">
|
||||
<!-- please note that useSystemClassLoaderAsParent is available since Tomcat 5.5.20 / remove if previous versions are being used -->
|
||||
<!--
|
||||
<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" useSystemClassLoaderAsParent="false"/>
|
||||
-->
|
||||
</Context>
|
||||
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Application context definition for PetClinic on Hibernate.
|
||||
-->
|
||||
<beans xmlns="http://www.springframework.org/schema/beans" 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"
|
||||
xmlns:jee="http://www.springframework.org/schema/jee" 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/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
|
||||
|
||||
<!-- ========================= RESOURCE DEFINITIONS ========================= -->
|
||||
|
||||
<!-- Configurer that replaces ${...} placeholders with values from a properties file -->
|
||||
<!-- (in this case, JDBC-related settings for the dataSource definition below) -->
|
||||
<context:property-placeholder location="classpath:jdbc.properties"/>
|
||||
|
||||
<!--
|
||||
Uses Apache Commons DBCP for connection pooling. See Commons DBCP documentation
|
||||
for the required JAR files. Alternatively you can use another connection pool
|
||||
such as C3P0, similarly configured using Spring.
|
||||
-->
|
||||
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
|
||||
p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}" p:username="${jdbc.username}"
|
||||
p:password="${jdbc.password}"/>
|
||||
|
||||
<!-- JNDI DataSource for JEE environments -->
|
||||
<!--
|
||||
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/petclinic"/>
|
||||
-->
|
||||
|
||||
<!-- Hibernate SessionFactory -->
|
||||
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
|
||||
p:dataSource-ref="dataSource" p:mappingResources="petclinic.hbm.xml">
|
||||
<property name="hibernateProperties">
|
||||
<props>
|
||||
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
|
||||
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
|
||||
<prop key="hibernate.generate_statistics">${hibernate.generate_statistics}</prop>
|
||||
</props>
|
||||
</property>
|
||||
<property name="eventListeners">
|
||||
<map>
|
||||
<entry key="merge">
|
||||
<bean class="org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener"/>
|
||||
</entry>
|
||||
</map>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
|
||||
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"
|
||||
p:sessionFactory-ref="sessionFactory"/>
|
||||
|
||||
<!-- Transaction manager that delegates to JTA (for a transactional JNDI DataSource) -->
|
||||
<!--
|
||||
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>
|
||||
-->
|
||||
|
||||
|
||||
<!-- ========================= BUSINESS OBJECT DEFINITIONS ========================= -->
|
||||
|
||||
<!--
|
||||
Activates various annotations to be detected in bean classes:
|
||||
Spring's @Required and @Autowired, as well as JSR 250's @Resource.
|
||||
-->
|
||||
<context:annotation-config/>
|
||||
|
||||
<!--
|
||||
Instruct Spring to perform declarative transaction management
|
||||
automatically on annotated classes.
|
||||
-->
|
||||
<tx:annotation-driven/>
|
||||
|
||||
<!--
|
||||
Exporter that exposes the Hibernate statistics service via JMX. Autodetects the
|
||||
service MBean, using its bean name as JMX object name.
|
||||
-->
|
||||
<context:mbean-export/>
|
||||
|
||||
<!-- PetClinic's central data access object: Hibernate implementation -->
|
||||
<bean id="clinic" class="org.springframework.samples.petclinic.hibernate.HibernateClinic"/>
|
||||
|
||||
<!-- Hibernate's JMX statistics service -->
|
||||
<bean name="petclinic:type=HibernateStatistics" class="org.hibernate.jmx.StatisticsService" autowire="byName"/>
|
||||
|
||||
</beans>
|
||||
@@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Application context definition for PetClinic on JDBC.
|
||||
-->
|
||||
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
|
||||
xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee"
|
||||
xmlns:tx="http://www.springframework.org/schema/tx"
|
||||
xsi:schemaLocation="
|
||||
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
|
||||
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/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
|
||||
|
||||
<!-- ========================= RESOURCE DEFINITIONS ========================= -->
|
||||
|
||||
<!-- Configurer that replaces ${...} placeholders with values from a properties file -->
|
||||
<!-- (in this case, JDBC-related settings for the dataSource definition below) -->
|
||||
<context:property-placeholder location="classpath:jdbc.properties"/>
|
||||
|
||||
<!--
|
||||
Uses Apache Commons DBCP for connection pooling. See Commons DBCP documentation
|
||||
for the required JAR files. Alternatively you can use another connection pool
|
||||
such as C3P0, similarly configured using Spring.
|
||||
-->
|
||||
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
|
||||
p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}" p:username="${jdbc.username}"
|
||||
p:password="${jdbc.password}"/>
|
||||
|
||||
<!-- JNDI DataSource for JEE environments -->
|
||||
<!--
|
||||
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/petclinic"/>
|
||||
-->
|
||||
|
||||
<!-- Transaction manager for a single JDBC DataSource (alternative to JTA) -->
|
||||
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
|
||||
p:dataSource-ref="dataSource"/>
|
||||
|
||||
<!-- Transaction manager that delegates to JTA (for a transactional JNDI DataSource) -->
|
||||
<!--
|
||||
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>
|
||||
-->
|
||||
|
||||
|
||||
<!-- ========================= BUSINESS OBJECT DEFINITIONS ========================= -->
|
||||
|
||||
<!--
|
||||
Activates various annotations to be detected in bean classes: Spring's
|
||||
@Required and @Autowired, as well as JSR 250's @PostConstruct,
|
||||
@PreDestroy and @Resource (if available) and JPA's @PersistenceContext
|
||||
and @PersistenceUnit (if available).
|
||||
-->
|
||||
<context:annotation-config/>
|
||||
|
||||
<!--
|
||||
Instruct Spring to retrieve and apply @AspectJ aspects which are defined
|
||||
as beans in this context (such as the CallMonitoringAspect below).
|
||||
-->
|
||||
<aop:aspectj-autoproxy/>
|
||||
|
||||
<!--
|
||||
Instruct Spring to perform automatic transaction management on annotated classes.
|
||||
The SimpleJdbcClinic implementation declares @Transactional annotations.
|
||||
"proxy-target-class" is set because of SimpleJdbcClinic's @ManagedOperation usage.
|
||||
-->
|
||||
<tx:annotation-driven/>
|
||||
|
||||
<!--
|
||||
Exporter that exposes the Clinic DAO and the CallMonitoringAspect via JMX,
|
||||
based on the @ManagedResource, @ManagedAttribute, and @ManagedOperation annotations.
|
||||
-->
|
||||
<context:mbean-export/>
|
||||
|
||||
<!-- PetClinic's central data access object using Spring's SimpleJdbcTemplate -->
|
||||
<bean id="clinic" class="org.springframework.samples.petclinic.jdbc.SimpleJdbcClinic"/>
|
||||
|
||||
<!-- Call monitoring aspect that monitors call count and call invocation time -->
|
||||
<bean id="callMonitor" class="org.springframework.samples.petclinic.aspects.CallMonitoringAspect"/>
|
||||
|
||||
</beans>
|
||||
@@ -0,0 +1,101 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Application context definition for PetClinic on JPA.
|
||||
-->
|
||||
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
|
||||
xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee"
|
||||
xmlns:tx="http://www.springframework.org/schema/tx"
|
||||
xsi:schemaLocation="
|
||||
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
|
||||
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/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
|
||||
|
||||
<!-- ========================= RESOURCE DEFINITIONS ========================= -->
|
||||
|
||||
<!--
|
||||
Activates a load-time weaver for the context. Any bean within the context that
|
||||
implements LoadTimeWeaverAware (such as LocalContainerEntityManagerFactoryBean)
|
||||
will receive a reference to the autodetected load-time weaver.
|
||||
-->
|
||||
<context:load-time-weaver/>
|
||||
|
||||
<!-- Configurer that replaces ${...} placeholders with values from a properties file -->
|
||||
<!-- (in this case, JDBC-related settings for the dataSource definition below) -->
|
||||
<context:property-placeholder location="classpath:jdbc.properties"/>
|
||||
|
||||
<!--
|
||||
Uses Apache Commons DBCP for connection pooling. See Commons DBCP documentation
|
||||
for the required JAR files. Alternatively you can use another connection pool
|
||||
such as C3P0, similarly configured using Spring.
|
||||
-->
|
||||
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
|
||||
p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}" p:username="${jdbc.username}"
|
||||
p:password="${jdbc.password}"/>
|
||||
|
||||
<!-- JNDI DataSource for JEE environments -->
|
||||
<!--
|
||||
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/petclinic"/>
|
||||
-->
|
||||
|
||||
<!-- JPA EntityManagerFactory -->
|
||||
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
|
||||
p:dataSource-ref="dataSource">
|
||||
<property name="jpaVendorAdapter">
|
||||
<bean class="org.springframework.orm.jpa.vendor.TopLinkJpaVendorAdapter"
|
||||
p:databasePlatform="${jpa.databasePlatform}" p:showSql="${jpa.showSql}"/>
|
||||
<!--
|
||||
<bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter"
|
||||
p:database="${jpa.database}" p:showSql="${jpa.showSql}"/>
|
||||
-->
|
||||
<!--
|
||||
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
|
||||
p:database="${jpa.database}" p:showSql="${jpa.showSql}"/>
|
||||
-->
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- Transaction manager for a single JPA EntityManagerFactory (alternative to JTA) -->
|
||||
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
|
||||
p:entityManagerFactory-ref="entityManagerFactory"/>
|
||||
|
||||
|
||||
<!-- ========================= BUSINESS OBJECT DEFINITIONS ========================= -->
|
||||
|
||||
<!--
|
||||
Activates various annotations to be detected in bean classes: Spring's
|
||||
@Required and @Autowired, as well as JSR 250's @PostConstruct,
|
||||
@PreDestroy and @Resource (if available) and JPA's @PersistenceContext
|
||||
and @PersistenceUnit (if available).
|
||||
-->
|
||||
<context:annotation-config/>
|
||||
|
||||
<!--
|
||||
Instruct Spring to perform declarative transaction management
|
||||
automatically on annotated classes.
|
||||
-->
|
||||
<tx:annotation-driven mode="aspectj"/>
|
||||
|
||||
<!--
|
||||
Simply defining this bean will cause requests to owner names to be saved.
|
||||
This aspect is defined in petclinic.jar's META-INF/aop.xml file.
|
||||
Note that we can dependency inject this bean like any other bean.
|
||||
-->
|
||||
<bean class="org.springframework.samples.petclinic.aspects.UsageLogAspect" p:historySize="300"/>
|
||||
|
||||
<!--
|
||||
Post-processor to perform exception translation on @Repository classes (from native
|
||||
exceptions such as JPA PersistenceExceptions to Spring's DataAccessException hierarchy).
|
||||
-->
|
||||
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
|
||||
|
||||
<!--
|
||||
Will automatically be transactional due to @Transactional.
|
||||
EntityManager will be auto-injected due to @PersistenceContext.
|
||||
PersistenceExceptions will be auto-translated due to @Repository.
|
||||
-->
|
||||
<bean id="clinic" class="org.springframework.samples.petclinic.jpa.EntityManagerClinic"/>
|
||||
|
||||
</beans>
|
||||
@@ -0,0 +1,18 @@
|
||||
# For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!
|
||||
# For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
|
||||
log4j.rootLogger=INFO, stdout, logfile
|
||||
|
||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n
|
||||
|
||||
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.logfile.File=${petclinic.root}/WEB-INF/petclinic.log
|
||||
log4j.appender.logfile.MaxFileSize=512KB
|
||||
# Keep three backup files.
|
||||
log4j.appender.logfile.MaxBackupIndex=3
|
||||
# Pattern to output: date priority [category] - message
|
||||
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
|
||||
|
||||
log4j.logger.org.springframework.samples.petclinic.aspects=DEBUG
|
||||
@@ -0,0 +1,8 @@
|
||||
welcome=Welcome
|
||||
required=is required
|
||||
notFound=has not been found
|
||||
duplicate=is already in use
|
||||
nonNumeric=must be all numeric
|
||||
duplicateFormSubmission=Duplicate form submission is not allowed
|
||||
typeMismatch.date=invalid date
|
||||
typeMismatch.birthDate=invalid date
|
||||
@@ -0,0 +1,8 @@
|
||||
welcome=Willkommen
|
||||
required=muss angegeben werden
|
||||
notFound=wurde nicht gefunden
|
||||
duplicate=ist bereits vergeben
|
||||
nonNumeric=darf nur numerisch sein
|
||||
duplicateFormSubmission=Wiederholtes Absenden des Formulars ist nicht erlaubt
|
||||
typeMismatch.date=ung<EFBFBD>ltiges Datum
|
||||
typeMismatch.birthDate=ung<EFBFBD>ltiges Datum
|
||||
@@ -0,0 +1 @@
|
||||
# This file is intentionally empty. Message look-ups will fall back to the default "messages.properties" file.
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.0"
|
||||
configId="org/springframework/samples/petclinic">
|
||||
<context-root>/petclinic</context-root>
|
||||
<context-priority-classloader>true</context-priority-classloader>
|
||||
</web-app>
|
||||
@@ -0,0 +1,19 @@
|
||||
<%@ include file="/WEB-INF/jsp/includes.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/header.jsp" %>
|
||||
|
||||
<%
|
||||
Exception ex = (Exception) request.getAttribute("exception");
|
||||
%>
|
||||
|
||||
<h2>Data access failure: <%= ex.getMessage() %></h2>
|
||||
<p/>
|
||||
|
||||
<%
|
||||
ex.printStackTrace(new java.io.PrintWriter(out));
|
||||
%>
|
||||
|
||||
<p/>
|
||||
<br/>
|
||||
<a href="<c:url value="/welcome.do"/>">Home</a>
|
||||
|
||||
<%@ include file="/WEB-INF/jsp/footer.jsp" %>
|
||||
@@ -0,0 +1,24 @@
|
||||
<%@ include file="/WEB-INF/jsp/includes.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/header.jsp" %>
|
||||
|
||||
<h2>Find Owners:</h2>
|
||||
|
||||
<form:form modelAttribute="owner">
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Last Name: <form:errors path="*" cssClass="errors"/>
|
||||
<br/>
|
||||
<form:input path="lastName" size="30" maxlength="80"/>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><p class="submit"><input type="submit" value="Find Owners"/></p></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form:form>
|
||||
|
||||
<br/>
|
||||
<a href="<c:url value="/addOwner.do"/>">Add Owner</a>
|
||||
|
||||
<%@ include file="/WEB-INF/jsp/footer.jsp" %>
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
<table class="footer">
|
||||
<tr>
|
||||
<td><a href="<c:url value="/welcome.do"/>">Home</a></td>
|
||||
<td align="right"><img src="<c:url value="/images/springsource-logo.png"/>"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,14 @@
|
||||
<!--
|
||||
PetClinic :: a Spring Framework demonstration
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<link rel="stylesheet" href="<c:url value="/styles/petclinic.css"/>" type="text/css"/>
|
||||
<title>PetClinic :: a Spring Framework demonstration</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="main">
|
||||
@@ -0,0 +1,4 @@
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
@@ -0,0 +1,98 @@
|
||||
<%@ include file="/WEB-INF/jsp/includes.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/header.jsp" %>
|
||||
|
||||
<h2>Owner Information</h2>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<td><b>${owner.firstName} ${owner.lastName}</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Address</th>
|
||||
<td>${owner.address}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>City</th>
|
||||
<td>${owner.city}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Telephone </th>
|
||||
<td>${owner.telephone}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="table-buttons">
|
||||
<tr>
|
||||
<td colspan="2" align="center">
|
||||
<form method="GET" action="<c:url value="/editOwner.do"/>">
|
||||
<input type="hidden" name="ownerId" value="${owner.id}"/>
|
||||
<p class="submit"><input type="submit" value="Edit Owner"/></p>
|
||||
</form>
|
||||
</td>
|
||||
<td>
|
||||
<form method="GET" action="<c:url value="/addPet.do"/>" name="formAddPet">
|
||||
<input type="hidden" name="ownerId" value="${owner.id}"/>
|
||||
<p class="submit"><input type="submit" value="Add New Pet"/></p>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2>Pets and Visits</h2>
|
||||
|
||||
<c:forEach var="pet" items="${owner.pets}">
|
||||
<table width="94%">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<table>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<td><b>${pet.name}</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Birth Date</th>
|
||||
<td><fmt:formatDate value="${pet.birthDate}" pattern="yyyy-MM-dd"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Type</th>
|
||||
<td>${pet.type.name}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<table>
|
||||
<tr>
|
||||
<thead>
|
||||
<th>Visit Date</th>
|
||||
<th>Description</th>
|
||||
</thead>
|
||||
</tr>
|
||||
<c:forEach var="visit" items="${pet.visits}">
|
||||
<tr>
|
||||
<td><fmt:formatDate value="${visit.date}" pattern="yyyy-MM-dd"/></td>
|
||||
<td>${visit.description}</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="table-buttons">
|
||||
<tr>
|
||||
<td>
|
||||
<form method="GET" action="<c:url value="/editPet.do"/>" name="formEditPet${pet.id}">
|
||||
<input type="hidden" name="petId" value="${pet.id}"/>
|
||||
<p class="submit"><input type="submit" value="Edit Pet"/></p>
|
||||
</form>
|
||||
</td>
|
||||
<td>
|
||||
<form method="GET" action="<c:url value="/addVisit.do"/>" name="formVisitPet${pet.id}">
|
||||
<input type="hidden" name="petId" value="${pet.id}"/>
|
||||
<p class="submit"><input type="submit" value="Add Visit"/></p>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</c:forEach>
|
||||
|
||||
<%@ include file="/WEB-INF/jsp/footer.jsp" %>
|
||||
@@ -0,0 +1,58 @@
|
||||
<%@ include file="/WEB-INF/jsp/includes.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/header.jsp" %>
|
||||
|
||||
<h2><c:if test="${owner.new}">New </c:if>Owner:</h2>
|
||||
|
||||
<form:form modelAttribute="owner">
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
First Name: <form:errors path="firstName" cssClass="errors"/>
|
||||
<br/>
|
||||
<form:input path="firstName" size="30" maxlength="80"/>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Last Name: <form:errors path="lastName" cssClass="errors"/>
|
||||
<br/>
|
||||
<form:input path="lastName" size="30" maxlength="80"/>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Address: <form:errors path="address" cssClass="errors"/>
|
||||
<br/>
|
||||
<form:input path="address" size="30" maxlength="80"/>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
City: <form:errors path="city" cssClass="errors"/>
|
||||
<br/>
|
||||
<form:input path="city" size="30" maxlength="80"/>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Telephone: <form:errors path="telephone" cssClass="errors"/>
|
||||
<br/>
|
||||
<form:input path="telephone" size="20" maxlength="20"/>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${owner.new}">
|
||||
<p class="submit"><input type="submit" value="Add Owner"/></p>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<p class="submit"><input type="submit" value="Update Owner"/></p>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form:form>
|
||||
|
||||
<%@ include file="/WEB-INF/jsp/footer.jsp" %>
|
||||
@@ -0,0 +1,33 @@
|
||||
<%@ include file="/WEB-INF/jsp/includes.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/header.jsp" %>
|
||||
|
||||
<h2>Owners:</h2>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Address</th>
|
||||
<th>City</th>
|
||||
<th>Telephone</th>
|
||||
<th>Pets</th>
|
||||
</thead>
|
||||
</tr>
|
||||
<c:forEach var="owner" items="${selections}">
|
||||
<tr>
|
||||
<td>
|
||||
<a href="owner.do?ownerId=${owner.id}">${owner.firstName} ${owner.lastName}</a>
|
||||
</td>
|
||||
<td>${owner.address}</td>
|
||||
<td>${owner.city}</td>
|
||||
<td>${owner.telephone}</td>
|
||||
<td>
|
||||
<c:forEach var="pet" items="${owner.pets}">
|
||||
${pet.name}
|
||||
</c:forEach>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</table>
|
||||
|
||||
<%@ include file="/WEB-INF/jsp/footer.jsp" %>
|
||||
@@ -0,0 +1,47 @@
|
||||
<%@ include file="/WEB-INF/jsp/includes.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/header.jsp" %>
|
||||
|
||||
<h2><c:if test="${pet.new}">New </c:if>Pet</h2>
|
||||
|
||||
<b>Owner:</b> ${pet.owner.firstName} ${pet.owner.lastName}
|
||||
<br/>
|
||||
|
||||
<form:form modelAttribute="pet">
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
Name: <form:errors path="name" cssClass="errors"/>
|
||||
<br/>
|
||||
<form:input path="name" size="30" maxlength="30"/>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Birth Date: <form:errors path="birthDate" cssClass="errors"/>
|
||||
<br/>
|
||||
<form:input path="birthDate" size="10" maxlength="10"/> (yyyy-mm-dd)
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Type: <form:errors path="type" cssClass="errors"/>
|
||||
<br/>
|
||||
<form:select path="type" items="${types}"/>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${pet.new}">
|
||||
<p class="submit"><input type="submit" value="Add Pet"/></p>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<p class="submit"><input type="submit" value="Update Pet"/></p>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form:form>
|
||||
|
||||
<%@ include file="/WEB-INF/jsp/footer.jsp" %>
|
||||
@@ -0,0 +1,49 @@
|
||||
<%@ include file="/WEB-INF/jsp/includes.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/header.jsp" %>
|
||||
|
||||
<h2/>Internal error</h2>
|
||||
<p/>
|
||||
|
||||
<%
|
||||
try {
|
||||
// The Servlet spec guarantees this attribute will be available
|
||||
Throwable exception = (Throwable) request.getAttribute("javax.servlet.error.exception");
|
||||
|
||||
if (exception != null) {
|
||||
if (exception instanceof ServletException) {
|
||||
// It's a ServletException: we should extract the root cause
|
||||
ServletException sex = (ServletException) exception;
|
||||
Throwable rootCause = sex.getRootCause();
|
||||
if (rootCause == null)
|
||||
rootCause = sex;
|
||||
out.println("** Root cause is: "+ rootCause.getMessage());
|
||||
rootCause.printStackTrace(new java.io.PrintWriter(out));
|
||||
}
|
||||
else {
|
||||
// It's not a ServletException, so we'll just show it
|
||||
exception.printStackTrace(new java.io.PrintWriter(out));
|
||||
}
|
||||
}
|
||||
else {
|
||||
out.println("No error information available");
|
||||
}
|
||||
|
||||
// Display cookies
|
||||
out.println("\nCookies:\n");
|
||||
Cookie[] cookies = request.getCookies();
|
||||
if (cookies != null) {
|
||||
for (int i = 0; i < cookies.length; i++) {
|
||||
out.println(cookies[i].getName() + "=[" + cookies[i].getValue() + "]");
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace(new java.io.PrintWriter(out));
|
||||
}
|
||||
%>
|
||||
|
||||
<p/>
|
||||
<br/>
|
||||
|
||||
|
||||
<%@ include file="/WEB-INF/jsp/footer.jsp" %>
|
||||
@@ -0,0 +1,26 @@
|
||||
<%@ include file="/WEB-INF/jsp/includes.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/header.jsp" %>
|
||||
|
||||
<h2>Veterinarians:</h2>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Specialties</th>
|
||||
</thead>
|
||||
</tr>
|
||||
<c:forEach var="vet" items="${vetList}">
|
||||
<tr>
|
||||
<td>${vet.firstName} ${vet.lastName}</td>
|
||||
<td>
|
||||
<c:forEach var="specialty" items="${vet.specialties}">
|
||||
${specialty.name}
|
||||
</c:forEach>
|
||||
<c:if test="${vet.nrOfSpecialties == 0}">none</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</table>
|
||||
|
||||
<%@ include file="/WEB-INF/jsp/footer.jsp" %>
|
||||
@@ -0,0 +1,70 @@
|
||||
<%@ include file="/WEB-INF/jsp/includes.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/header.jsp" %>
|
||||
|
||||
<h2><c:if test="${visit.new}">New </c:if>Visit:</h2>
|
||||
|
||||
<form:form modelAttribute="visit">
|
||||
<b>Pet:</b>
|
||||
<table width="333">
|
||||
<tr>
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Birth Date</th>
|
||||
<th>Type</th>
|
||||
<th>Owner</th>
|
||||
</thead>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>${visit.pet.name}</td>
|
||||
<td><fmt:formatDate value="${visit.pet.birthDate}" pattern="yyyy-MM-dd"/></td>
|
||||
<td>${visit.pet.type.name}</td>
|
||||
<td>${visit.pet.owner.firstName} ${visit.pet.owner.lastName}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table width="333">
|
||||
<tr>
|
||||
<th>
|
||||
Date:
|
||||
<br/><form:errors path="date" cssClass="errors"/>
|
||||
</th>
|
||||
<td>
|
||||
<form:input path="date" size="10" maxlength="10"/> (yyyy-mm-dd)
|
||||
</td>
|
||||
<tr/>
|
||||
<tr>
|
||||
<th valign="top">
|
||||
Description:
|
||||
<br/><form:errors path="description" cssClass="errors"/>
|
||||
</th>
|
||||
<td>
|
||||
<form:textarea path="description" rows="10" cols="25"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="hidden" name="petId" value="${visit.pet.id}"/>
|
||||
<p class="submit"><input type="submit" value="Add Visit"/></p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form:form>
|
||||
|
||||
<br/>
|
||||
<b>Previous Visits:</b>
|
||||
<table width="333">
|
||||
<tr>
|
||||
<th>Date</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
<c:forEach var="visit" items="${visit.pet.visits}">
|
||||
<c:if test="${!visit.new}">
|
||||
<tr>
|
||||
<td><fmt:formatDate value="${visit.date}" pattern="yyyy-MM-dd"/></td>
|
||||
<td>${visit.description}</td>
|
||||
</tr>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
</table>
|
||||
|
||||
<%@ include file="/WEB-INF/jsp/footer.jsp" %>
|
||||
@@ -0,0 +1,16 @@
|
||||
<%@ include file="/WEB-INF/jsp/includes.jsp" %>
|
||||
<%@ include file="/WEB-INF/jsp/header.jsp" %>
|
||||
|
||||
<img src="images/pets.png" align="right" style="position:relative;right:30px;">
|
||||
<h2><fmt:message key="welcome"/></h2>
|
||||
|
||||
<ul>
|
||||
<li><a href="<c:url value="/findOwners.do"/>">Find owner</a></li>
|
||||
<li><a href="<c:url value="/vets.do"/>">Display all veterinarians</a></li>
|
||||
<li><a href="<c:url value="/html/petclinic.html"/>">Tutorial</a></li>
|
||||
<li><a href="<c:url value="/docs/index.html"/>">Documentation</a></li>
|
||||
</ul>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<%@ include file="/WEB-INF/jsp/footer.jsp" %>
|
||||
@@ -0,0 +1,68 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
- DispatcherServlet application context for PetClinic's web tier.
|
||||
-->
|
||||
<beans xmlns="http://www.springframework.org/schema/beans" 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-2.5.xsd
|
||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
|
||||
|
||||
<!--
|
||||
- The controllers are autodetected POJOs labeled with the @Controller annotation.
|
||||
-->
|
||||
<context:component-scan base-package="org.springframework.samples.petclinic.web"/>
|
||||
|
||||
<!--
|
||||
- The form-based controllers within this application provide @RequestMapping
|
||||
- annotations at the type level for path mapping URLs and @RequestMapping
|
||||
- at the method level for request type mappings (e.g., GET and POST).
|
||||
- In contrast, ClinicController - which is not form-based - provides
|
||||
- @RequestMapping only at the method level for path mapping URLs.
|
||||
-
|
||||
- DefaultAnnotationHandlerMapping is driven by these annotations and is
|
||||
- enabled by default with Java 5+.
|
||||
-->
|
||||
|
||||
<!--
|
||||
- This bean processes annotated handler methods, applying PetClinic-specific PropertyEditors
|
||||
- for request parameter binding. It overrides the default AnnotationMethodHandlerAdapter.
|
||||
-->
|
||||
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
|
||||
<property name="webBindingInitializer">
|
||||
<bean class="org.springframework.samples.petclinic.web.ClinicBindingInitializer"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!--
|
||||
- This bean resolves specific types of exceptions to corresponding logical
|
||||
- view names for error views. The default behaviour of DispatcherServlet
|
||||
- is to propagate all exceptions to the servlet container: this will happen
|
||||
- here with all other types of exceptions.
|
||||
-->
|
||||
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
|
||||
<property name="exceptionMappings">
|
||||
<props>
|
||||
<prop key="org.springframework.dao.DataAccessException">dataAccessFailure</prop>
|
||||
<prop key="org.springframework.transaction.TransactionException">dataAccessFailure</prop>
|
||||
</props>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!--
|
||||
- This bean configures the 'prefix' and 'suffix' properties of
|
||||
- InternalResourceViewResolver, which resolves logical view names
|
||||
- returned by Controllers. For example, a logical view name of "vets"
|
||||
- will be mapped to "/WEB-INF/jsp/vets.jsp".
|
||||
-->
|
||||
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/"
|
||||
p:suffix=".jsp"/>
|
||||
|
||||
<!--
|
||||
- Message source for this context, loaded from localized "messages_xx" files.
|
||||
- Could also reside in the root application context, as it is generic,
|
||||
- but is currently just used within PetClinic's web tier.
|
||||
-->
|
||||
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"
|
||||
p:basename="messages"/>
|
||||
|
||||
</beans>
|
||||
@@ -0,0 +1,143 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<web-app version="2.4" xmlns="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-app_2_4.xsd">
|
||||
|
||||
<display-name>Spring PetClinic</display-name>
|
||||
|
||||
<description>Spring PetClinic sample application</description>
|
||||
|
||||
<!--
|
||||
Key of the system property that should specify the root directory of this
|
||||
web app. Applied by WebAppRootListener or Log4jConfigListener.
|
||||
-->
|
||||
<context-param>
|
||||
<param-name>webAppRootKey</param-name>
|
||||
<param-value>petclinic.root</param-value>
|
||||
</context-param>
|
||||
|
||||
<!--
|
||||
Location of the Log4J config file, for initialization and refresh checks.
|
||||
Applied by Log4jConfigListener.
|
||||
-->
|
||||
<context-param>
|
||||
<param-name>log4jConfigLocation</param-name>
|
||||
<param-value>/WEB-INF/classes/log4j.properties</param-value>
|
||||
</context-param>
|
||||
|
||||
<!--
|
||||
- Location of the XML file that defines the root application context.
|
||||
- Applied by ContextLoaderServlet.
|
||||
-
|
||||
- Can be set to:
|
||||
- "/WEB-INF/applicationContext-hibernate.xml" for the Hibernate implementation,
|
||||
- "/WEB-INF/applicationContext-jpa.xml" for the JPA one, or
|
||||
- "/WEB-INF/applicationContext-jdbc.xml" for the JDBC one.
|
||||
-->
|
||||
<context-param>
|
||||
<param-name>contextConfigLocation</param-name>
|
||||
|
||||
<param-value>/WEB-INF/applicationContext-jdbc.xml</param-value>
|
||||
<!--
|
||||
<param-value>/WEB-INF/applicationContext-hibernate.xml</param-value>
|
||||
<param-value>/WEB-INF/applicationContext-jpa.xml</param-value>
|
||||
-->
|
||||
|
||||
<!--
|
||||
To use the JPA variant above, you will need to enable Spring load-time
|
||||
weaving in your server environment. See PetClinic's readme and/or
|
||||
Spring's JPA documentation for information on how to do this.
|
||||
-->
|
||||
</context-param>
|
||||
|
||||
<!--
|
||||
- Configures Log4J for this web app.
|
||||
- As this context specifies a context-param "log4jConfigLocation", its file path
|
||||
- is used to load the Log4J configuration, including periodic refresh checks.
|
||||
-
|
||||
- Would fall back to default Log4J initialization (non-refreshing) if no special
|
||||
- context-params are given.
|
||||
-
|
||||
- Exports a "web app root key", i.e. a system property that specifies the root
|
||||
- directory of this web app, for usage in log file paths.
|
||||
- This web app specifies "petclinic.root" (see log4j.properties file).
|
||||
-->
|
||||
<!-- Leave the listener commented-out if using JBoss -->
|
||||
<!--
|
||||
<listener>
|
||||
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
|
||||
</listener>
|
||||
-->
|
||||
|
||||
<!--
|
||||
- Loads the root application context of this web app at startup,
|
||||
- by default from "/WEB-INF/applicationContext.xml".
|
||||
- Note that you need to fall back to Spring's ContextLoaderServlet for
|
||||
- J2EE servers that do not follow the Servlet 2.4 initialization order.
|
||||
-
|
||||
- Use WebApplicationContextUtils.getWebApplicationContext(servletContext)
|
||||
- to access it anywhere in the web application, outside of the framework.
|
||||
-
|
||||
- The root context is the parent of all servlet-specific contexts.
|
||||
- This means that its beans are automatically available in these child contexts,
|
||||
- both for getBean(name) calls and (external) bean references.
|
||||
-->
|
||||
<listener>
|
||||
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
|
||||
</listener>
|
||||
|
||||
<!--
|
||||
- Servlet that dispatches request to registered handlers (Controller implementations).
|
||||
- Has its own application context, by default defined in "{servlet-name}-servlet.xml",
|
||||
- i.e. "petclinic-servlet.xml".
|
||||
-
|
||||
- A web app can contain any number of such servlets.
|
||||
- Note that this web app has a shared root application context, serving as parent
|
||||
- of all DispatcherServlet contexts.
|
||||
-->
|
||||
<servlet>
|
||||
<servlet-name>petclinic</servlet-name>
|
||||
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
|
||||
<load-on-startup>2</load-on-startup>
|
||||
</servlet>
|
||||
|
||||
<!--
|
||||
- Maps the petclinic dispatcher to "*.do". All handler mappings in
|
||||
- petclinic-servlet.xml will by default be applied to this subpath.
|
||||
- If a mapping isn't a /* subpath, the handler mappings are considered
|
||||
- relative to the web app root.
|
||||
-
|
||||
- NOTE: A single dispatcher can be mapped to multiple paths, like any servlet.
|
||||
-->
|
||||
<servlet-mapping>
|
||||
<servlet-name>petclinic</servlet-name>
|
||||
<url-pattern>*.do</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<session-config>
|
||||
<session-timeout>10</session-timeout>
|
||||
</session-config>
|
||||
|
||||
<welcome-file-list>
|
||||
<!-- Redirects to "welcome.htm" for dispatcher handling -->
|
||||
<welcome-file>index.jsp</welcome-file>
|
||||
</welcome-file-list>
|
||||
|
||||
<error-page>
|
||||
<exception-type>java.lang.Exception</exception-type>
|
||||
<!-- Displays a stack trace -->
|
||||
<location>/WEB-INF/jsp/uncaughtException.jsp</location>
|
||||
</error-page>
|
||||
|
||||
<!--
|
||||
- Reference to PetClinic database.
|
||||
- Only needed if not using a local DataSource but a JNDI one instead.
|
||||
-->
|
||||
<!--
|
||||
<resource-ref>
|
||||
<res-ref-name>jdbc/petclinic</res-ref-name>
|
||||
<res-type>javax.sql.DataSource</res-type>
|
||||
<res-auth>Container</res-auth>
|
||||
</resource-ref>
|
||||
-->
|
||||
|
||||
</web-app>
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 54 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
@@ -0,0 +1,5 @@
|
||||
<%@ include file="/WEB-INF/jsp/includes.jsp" %>
|
||||
|
||||
<%-- Redirected because we can't set the welcome page to a virtual URL. --%>
|
||||
<c:redirect url="/welcome.do"/>
|
||||
|
||||
@@ -0,0 +1,234 @@
|
||||
/* main elements */
|
||||
|
||||
body,div,td {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #fff;
|
||||
background-image: url(../images/banner-graphic.png);
|
||||
background-position: top center;
|
||||
background-repeat: no-repeat;
|
||||
text-align: center;
|
||||
min-width: 600px;
|
||||
margin-top: 60px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
div {
|
||||
margin: 5px 25px 5px 25px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* header and footer elements */
|
||||
|
||||
#main {
|
||||
margin:0 auto;
|
||||
position:relative;
|
||||
top: 35px;
|
||||
left:0px;
|
||||
width:560px;
|
||||
text-align:left;
|
||||
}
|
||||
|
||||
.footer {
|
||||
background:#fff;
|
||||
border:none;
|
||||
margin-top:20px;
|
||||
border-top:1px solid #999999;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.footer td {color:#999999;}
|
||||
|
||||
.footer a:link {color: #7db223;}
|
||||
|
||||
|
||||
/* text styles */
|
||||
|
||||
h1,h2,h3 {
|
||||
font-family: Helvetica, sans-serif;
|
||||
color: #7db223;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 20px;
|
||||
line-height: 26px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 18px;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 15px;
|
||||
line-height: 21px;
|
||||
color:#555;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.errors {
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: underline;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
a:link {
|
||||
color: #7db223;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #456314;
|
||||
}
|
||||
|
||||
a:active {
|
||||
color: #7db223;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #7db223;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: disc url(../images/bullet-arrow.png);
|
||||
}
|
||||
|
||||
li {
|
||||
padding-top: 5px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
li ul {
|
||||
list-style: square url(images/sub-bullet.gif);
|
||||
}
|
||||
|
||||
li ul li ul {
|
||||
list-style: circle none;
|
||||
}
|
||||
|
||||
/* table elements */
|
||||
|
||||
table {
|
||||
background: #d6e2c3;
|
||||
margin: 3px 0 0 0;
|
||||
border: 4px solid #d6e2c3;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table table {
|
||||
margin: -5px 0;
|
||||
border: 0px solid #e0e7d3;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table td,table th {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
table th {
|
||||
font-size: 12px;
|
||||
text-align: left;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table thead {
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
background-color: #c2ceaf;
|
||||
}
|
||||
|
||||
table a:link {color: #303030;}
|
||||
|
||||
caption {
|
||||
caption-side: top;
|
||||
width: auto;
|
||||
text-align: left;
|
||||
font-size: 12px;
|
||||
color: #848f73;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
background: #e0e7d3;
|
||||
padding: 8px;
|
||||
padding-bottom: 22px;
|
||||
border: none;
|
||||
width: 560px;
|
||||
}
|
||||
|
||||
fieldset label {
|
||||
width: 70px;
|
||||
float: left;
|
||||
margin-top: 1.7em;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
fieldset textfield {
|
||||
margin: 3px;
|
||||
height: 20px;
|
||||
background: #e0e7d3;
|
||||
}
|
||||
|
||||
fieldset textarea {
|
||||
margin: 3px;
|
||||
height: 165px;
|
||||
background: #e0e7d3;
|
||||
}
|
||||
|
||||
fieldset input {
|
||||
margin: 3px;
|
||||
height: 20px;
|
||||
background: #e0e7d3;
|
||||
}
|
||||
|
||||
fieldset table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
fieldset th {
|
||||
padding-left: 25px;
|
||||
}
|
||||
|
||||
.table-buttons {
|
||||
background-color:#fff;
|
||||
border:none;
|
||||
}
|
||||
|
||||
.table-buttons td {
|
||||
border:none;
|
||||
}
|
||||
|
||||
.submit input {
|
||||
background:url(../images/submit-bg.png) repeat-x;
|
||||
border: 2px outset #d7b9c9;
|
||||
color:#383838;
|
||||
padding:2px 10px;
|
||||
font-size:11px;
|
||||
text-transform:uppercase;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
.updated {
|
||||
background:#ecf1e5;
|
||||
font-size:11px;
|
||||
margin-left:2px;
|
||||
border:4px solid #ecf1e5;
|
||||
}
|
||||
|
||||
.updated td {
|
||||
padding:2px 8px;
|
||||
font-size:11px;
|
||||
color:#888888;
|
||||
}
|
||||
Reference in New Issue
Block a user