WCDS Einfuehrung

1. First HTML

'first.html' :

<!DOCTYPE html>

<html>

	<head>
		<meta charset="UTF-8">
		<title>WCDS - first.html</title>
	</head>

	<body>
		Ein erster Test aus einer HTML-Seite !!!
	</body>

</html>

Home

2. Deploy (MAC)

'deploy.command' :

#!/bin/bash

PROJECT=wcds
WEBSERVER=./apache-tomcat-8.5.20

rm ./$PROJECT.war
rm $WEBSERVER/webapps/$PROJECT.war
rm -r $WEBSERVER/webapps/$PROJECT

jar cvf $PROJECT.war -C $PROJECT .

cp ./$PROJECT.war $WEBSERVER/webapps/

Home

3. Deploy (WINDOWS)

'deploy.bat' :

#!/bin/bash

PROJECT=wcds
WEBSERVER=./apache-tomcat-8.5.20

rm ./$PROJECT.war
rm $WEBSERVER/webapps/$PROJECT.war
rm -r $WEBSERVER/webapps/$PROJECT

jar cvf $PROJECT.war -C $PROJECT .

cp ./$PROJECT.war $WEBSERVER/webapps/

Home

4. Deploy (ANT)

'build.xml' :

<project name="wcds" default="deploy" basedir=".">

    	<property name="webserver" value="apache-tomcat-8.5.20" />
    	<property name="web.dir" value="wcds" />
    	<property name="bin.dir" value="${web.dir}/WEB-INF/classes" />

	<path id="classpath">
		<fileset dir="${webserver}/lib">
			<include name="servlet*.jar" />
		</fileset>
	</path>

	<target name="clean">
		<delete dir="${bin.dir}" />
		<delete file="${webserver}/webapps/${web.dir}.war" />
		<delete dir="${webserver}/webapps/${web.dir}" />
	</target>

	<target name="init" depends="clean">
		<mkdir dir="${bin.dir}" />
	</target>

	<target name="deploy" depends="clean">
		<war destfile="${webserver}/webapps/${web.dir}.war">
			<fileset dir="${web.dir}">
				<include name="**/*.*" />
			</fileset>
		</war>
	</target>

</project>

Home

5. First JSP

'first.jsp' :

<!DOCTYPE html>

<html>

	<head>
		<meta charset="UTF-8">
		<title>WCDS - first.jsp</title>
	</head>

	<body>
		Ein erster Test aus einer JSP-Seite !!! <br /> 
		Diesmal aber mit einem JSP-Tag <br /> 
		
		Datum: <%=new java.util.Date()%>
	</body>

</html>

Home

6. Deployment Descriptor (DD)

'WEB-INF/web.xml' :

<web-app>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<servlet>
		<servlet-name>firstServlet</servlet-name>
		<servlet-class>ch.wcds.servlets.FirstServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>firstServlet</servlet-name>
		<url-pattern>/FirstServlet</url-pattern>
	</servlet-mapping>

</web-app>

Home

7. FirstServlet

'FirstServlet.java' :

package ch.wcds.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FirstServlet extends HttpServlet
{
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException
	{
		response.setContentType("text/html");
		PrintWriter pw = response.getWriter();

		schreibeHtmlCode(pw);
		pw.close();
	}

	private void schreibeHtmlCode(PrintWriter pw)
	{
		pw.println("<!DOCTYPE html>");
		pw.println("<html>");
		pw.println("  <head>");
		pw.println("    <title>WCDS1 2017 - FirstServlet</title>");
		pw.println("  </head>");
		pw.println("  <body>");
		pw.println("    ein erster Test aus dem FirstServlet <br />");
		pw.println("    Datum: " + new java.util.Date());
		pw.println("  </body>");
		pw.println("</html>");
	}
}

Home

8. SecondServlet

'SecondServlet.java' :

package ch.wcds.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/SecondServlet")
public class SecondServlet extends HttpServlet
{
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException
	{
		response.setContentType("text/html");
		PrintWriter pw = response.getWriter();

		schreibeHtmlCode(pw);
		pw.close();
	}

	private void schreibeHtmlCode(PrintWriter pw)
	{
		pw.println("<!DOCTYPE html>");
		pw.println("<html>");
		pw.println("  <head>");
		pw.println("    <title>WCDS1 2017 - SecondServlet</title>");
		pw.println("  </head>");
		pw.println("  <body>");
		pw.println("    ein erster Test aus dem SecondServlet <br />");
		pw.println("    Datum: " + new java.util.Date());
		pw.println("  </body>");
		pw.println("</html>");
	}
}

Home

9. Compile (MAC)

'compile.command' :

#!/bin/bash

WEB_DIR=wcds
WEBSERVER=./apache-tomcat-8.5.20
CP=$WEBSERVER/lib/servlet-api.jar
CLASSES=./$WEB_DIR/WEB-INF/classes 

rm -r $CLASSES
mkdir $CLASSES

javac -cp $CP  -d $CLASSES ./src/*.java 

Home

10. Compile (WINDOWS)

'compile.bat' :

set PROJECT=wcds
set WEBSERVER=.\apache-tomcat-8.5.20

set CP=%WEBSERVER%/lib/servlet-api.jar
set CLASSES=.\%PROJECT%\WEB-INF\classes 

rmdir /s /q %CLASSES%
mkdir %CLASSES%

javac -cp %CP%  -d %CLASSES% .\src\*.java

Home

11. Compile (ANT)

'build.xml' ersetzen :

<project name="wcds" default="help" basedir=".">
	<property name="webserver" value="apache-tomcat-8.5.20" />
	<property name="web.dir" value="wcds" />
	<property name="src.dir" value="src" />
	<property name="bin.dir" value="${web.dir}/WEB-INF/classes" />

	<path id="classpath">
		<fileset dir="${webserver}/lib">
			<include name="servlet*.jar" />
		</fileset>
	</path>

	<target name="clean">
		<delete dir="${bin.dir}" />
		<delete file="${webserver}/webapps/${web.dir}.war" />
		<delete dir="${webserver}/webapps/${web.dir}" />
	</target>

	<target name="init" depends="clean">
		<mkdir dir="${bin.dir}" />
	</target>

	<target name="compile" depends="init">
		<javac destdir="${bin.dir}">
			<src path="${src.dir}" />
			<classpath refid="classpath" />
		</javac>
	</target>

	<target name="deploy" depends="compile">
		<war destfile="${webserver}/webapps/${web.dir}.war">
			<fileset dir="${web.dir}">
				<include name="**/*.*" />
			</fileset>
		</war>
	</target>

	<target name="help">
		<echo>
			folgende Tasks sind vorhanden:
				1) clean
				2) init
				3) compile
				4) deploy
		</echo>
	</target>
</project>

Home

12. Index HTML

'index.html' :

<!DOCTYPE html>

<html>

	<head>
		<title>WCDS - index.html</title>
	</head>
	
	<body>
		<a href="http://localhost:8080/wcds">WCDS</a>
		<hr />
		<br /> <a href="first.html">    first.html    </a>
		<br /> <a href="first.jsp">     first.jsp     </a>
		<br /> <a href="FirstServlet">  FirstServlet  </a>
		<br /> <a href="SecondServlet"> SecondServlet </a>
	</body>

</html>

Home

13. Deployment Descriptor (DD)

'WEB-INF/web.xml' ersetzen :

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
	http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<servlet>
		<servlet-name>firstServlet</servlet-name>
		<servlet-class>ch.wcds.servlets.FirstServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>firstServlet</servlet-name>
		<url-pattern>/FirstServlet</url-pattern>
	</servlet-mapping>

</web-app>

Home

14. Project Object Model (POM)

'pom.xml' ersetzen :

<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>ch.jmb</groupId>
	<artifactId>wcds</artifactId>
	<version>1.0.0</version>
	<packaging>war</packaging>


	<!-- +===============================================+ -->
	<!-- ! ................. PROPERTIES ................ ! -->
	<!-- +===============================================+ -->
	<properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>

		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

		<jetty9.version>9.3.10.v20160621</jetty9.version>
		<jetty9.groupId>org.eclipse.jetty</jetty9.groupId>
	</properties>
	<!-- +===============================================+ -->


	<!-- +===============================================+ -->
	<!-- ! ................ DEPENDENCIES ............... ! -->
	<!-- +===============================================+ -->
	<dependencies>

		<!-- +===========================================+ -->
		<!-- ! ................. JUNIT ................. ! -->
		<!-- +===========================================+ -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<!-- +===========================================+ -->


		<!-- +===========================================+ -->
		<!-- ! ................ MYTOOLS ................ ! -->
		<!-- +===========================================+ -->
		<dependency>
			<groupId>ch.jmb</groupId>
			<artifactId>tools</artifactId>
			<version>1.8.0</version>
		</dependency>
		<!-- +===========================================+ -->


		<!-- +===========================================+ -->
		<!-- ! .................. PDF .................. ! -->
		<!-- +===========================================+ -->
		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>itextpdf</artifactId>
			<version>5.5.11</version>
		</dependency>
		<!-- +===========================================+ -->


		<!-- +===========================================+ -->
		<!-- ! ................. EMAIL ................. ! -->
		<!-- +===========================================+ -->
		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.4.7</version>
		</dependency>
		<!-- +===========================================+ -->


		<!-- +===========================================+ -->
		<!-- ! ........... WCDS EXTERNE TAGS ........... ! -->
		<!-- +===========================================+ -->
		<dependency>
			<groupId>ch.jmb</groupId>
			<artifactId>wcdsex</artifactId>
			<version>1.0.0</version>
		</dependency>
		<!-- +===========================================+ -->


		<!-- +===========================================+ -->
		<!-- ! ............... WEBSOCKET ............... ! -->
		<!-- +===========================================+ -->
		<dependency>
			<groupId>javax.websocket</groupId>
			<artifactId>javax.websocket-api</artifactId>
			<version>1.1</version>
			<scope>provided</scope>
		</dependency>
		<!-- +===========================================+ -->



		<!-- +===========================================+ -->
		<!-- ! ........... SERVLETs and JSPs ........... ! -->
		<!-- +===========================================+ -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>javax.servlet.jsp-api</artifactId>
			<version>2.3.1</version>
			<scope>provided</scope>
		</dependency>
		<!-- +===========================================+ -->


		<!-- +===========================================+ -->
		<!-- ! ........ JSP STANDARD TAG LIBRARY ........! -->
		<!-- +===========================================+ -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
		<!-- +===========================================+ -->


		<!-- +===========================================+ -->
		<!-- ! .............. ECLIPSELINK ..............! -->
		<!-- +===========================================+ -->
		<dependency>
			<groupId>org.eclipse.persistence</groupId>
			<artifactId>org.eclipse.persistence.jpa</artifactId>
			<version>2.6.4</version>
		</dependency>
		<!-- +===========================================+ -->


		<!-- +===========================================+ -->
		<!-- ! . DB JARs (H2, MYSQL, POSTGRES, ORACLE) . ! -->
		<!-- +===========================================+ -->
		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<version>1.4.196</version>
			<type>jar</type>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.36</version>
			<type>jar</type>
		</dependency>

		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<version>9.4.1208.jre7</version>
			<type>jar</type>
		</dependency>

		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc7</artifactId>
			<version>11.0.0</version>
			<type>jar</type>
		</dependency>
		<!-- +===========================================+ -->

	</dependencies>
	<!-- +===============================================+ -->


	<!-- +===============================================+ -->
	<!-- ! ................... BUILD ................... ! -->
	<!-- +===============================================+ -->
	<build>
		<finalName>${project.artifactId}</finalName>

		<plugins>
			<!-- +=================+ -->
			<!-- | Webserver JETTY | -->
			<!-- +=================+ -->
			<plugin>
				<groupId>${jetty9.groupId}</groupId>
				<version>${jetty9.version}</version>
				<artifactId>jetty-maven-plugin</artifactId>
				<configuration>
					<webAppConfig>
						<contextPath>
							/${project.artifactId}
						</contextPath>
					</webAppConfig>
				</configuration>
			</plugin>
		</plugins>

	</build>
	<!-- +===============================================+ -->

</project>

Home

15. Copy nach Maven Repository (M2)

Copy :

ojdbc.jar

cd verzeichnis/in/dem/ojdbc7.jar/steht

mvn install:install-file \
-Dfile=./ojdbc7.jar \
-DgroupId=com.oracle \
-DartifactId=ojdbc7 \
-Dversion=11.0.0 \
-Dpackaging=jar \
-DgeneratePom=true

<dependency>
	<groupId>com.oracle</groupId>
	<artifactId>ojdbc7</artifactId>
	<version>11.0.0</version>
</dependency>

mytools.jar

cd verzeichnis/in/dem/mytools.jar/steht

mvn install:install-file \
-Dfile=./mytools-1.8.0.jar \
-DgroupId=ch.jmb \
-DartifactId=tools \
-Dversion=1.8.0 \
-Dpackaging=jar \
-DgeneratePom=true

<dependency>
	<groupId>ch.jmb</groupId>
	<artifactId>tools</artifactId>
	<version>1.8.0</version>
</dependency>

Home