26
Servlet and JSP development with Eclipse WTP - Tutorial Lars Vogel Version 2.1 Copyright © 2008, 2009, 2010, 2011, 2012 Lars Vogel 15.11.2012 Revision History Revision 0.1 - 2.1 12.12.2007 - 15.11.2012 Lars Vogel bug fixing and improvem Eclipse Web Tool Platform (WTP) This tutorial describes the development of servlets and JSPs with Eclipse WTP. This tutorial is based on Eclipse 3.7 (Indigo) and Tomcat 6.0 and JDK 1.6. Table of Contents 1. Eclipse Web Tool Platform 2. Tomcat Installation 3. Installation of WTP 4. WTP Configuration 4.1. Setting up runtime environments 4.2. Server 5. Servlets 5.1. Project 5.2. Creating Data Access Object 5.3. Creating the Servlet 5.4. Run 6. JavaServer Pages (JSPs) 6.1. Create Project

Servlet and jsp development with eclipse wtp

Embed Size (px)

DESCRIPTION

software for everybody

Citation preview

Page 1: Servlet and jsp development with eclipse wtp

Servlet and JSP development with Eclipse

WTP - Tutorial

Lars Vogel

Version 2.1

Copyright © 2008, 2009, 2010, 2011, 2012 Lars Vogel

15.11.2012

Revision History

Revision 0.1 - 2.1 12.12.2007 - 15.11.2012 Lars

Vogel

bug fixing and improvements

Eclipse Web Tool Platform (WTP)

This tutorial describes the development of servlets and JSPs with Eclipse WTP. This

tutorial is based on Eclipse 3.7 (Indigo) and Tomcat 6.0 and JDK 1.6.

Table of Contents

1. Eclipse Web Tool Platform

2. Tomcat Installation

3. Installation of WTP

4. WTP Configuration

4.1. Setting up runtime environments

4.2. Server

5. Servlets

5.1. Project

5.2. Creating Data Access Object

5.3. Creating the Servlet

5.4. Run

6. JavaServer Pages (JSPs)

6.1. Create Project

Page 2: Servlet and jsp development with eclipse wtp

6.2. Create the JSP

6.3. Run it

6.4. Adjust web.xml

7. JSP's and Servlets

7.1. Create Project

7.2. Create the Controller (servlet)

7.3. Create the Views (JSP)

7.4. Run it

8. Web Archive - How to create a war file from Eclipse

9. Additional Eclipse WTP resources

10. Support this website

10.1. Thank you

10.2. Questions and Discussion

11. Links and Literature

11.1. Source Code

11.2. Web development resources

11.3. vogella Resources

1. Eclipse Web Tool Platform

Eclipse WTP provides tools for developing standard Java web applications and Java EE

applications. Typical web artifacts in a Java environment are HTML pages, XML files,

webservices, servlets and JSPs. Eclipse WTP simplifies the creation these web artifacts

and provides runtime environments in which these artifacts can be deployed, started

and debugged.

In Eclipse WTP you create Dynamic Web Projects. These projects provide the

necessary functionality to run, debug and deploy Java web applications. If you are

completely new to Java web development, you may want to read Introduction to Java

Web development tutorial.

Eclipse WTP supports all major web containers, e.g., Jetty and Apache Tomcat as well

as the mayor Java EE application server. This tutorial uses Apache Tomcat as a web

container.

2. Tomcat Installation

Apache Tomcat Tutorial for instructions how to install Apache Tomcat.

After the installation, test if Tomcat is correctly installed by opening a browser

to http://localhost:8080/. This should open an information page of Tomcat.

Afterwards, stop Tomcat. Eclipse WTP needs to start Tomcat itself for its deployments.

3. Installation of WTP

In case you have downloaded an Eclipse version for Java development, you can update

it via the Eclipse Update Manager. Install all packages from the category "Web, XML,

Page 3: Servlet and jsp development with eclipse wtp

Java EE Development and OSGi Enterprise Development" except "PHP Development"

and the "RAP" Tooling.

For an introduction in the Eclipse IDE please see the Eclipse IDE Tutorial.

4. WTP Configuration 4.1. Setting up runtime environments

To configure Eclipse WTP, select from the

menu Window → Preferences → Server → Runtime Environments. Press

the Add button.

Select your version of Tomcat.

Page 4: Servlet and jsp development with eclipse wtp

To compile the JSP into servlets, you need to use the JDK. You can check your setup

by clicking on the Installed JRE button.

Page 5: Servlet and jsp development with eclipse wtp

Press Finish and then OK. You are now ready to use Tomcat with WTP.

4.2. Server

During development, you will create your server. You can manage your server via

the Server view.

Page 6: Servlet and jsp development with eclipse wtp

You can stop and start the server via the Window → Show View → Servers → Servers

menu menu.

5. Servlets 5.1. Project

Page 7: Servlet and jsp development with eclipse wtp

We will create a servlet which works as a webpage counter. This servlet keeps track of

the number of visitors of a webpage. The servlet will persist the number of visitors in a

text file. Create a new Dynamic Web Project called de.vogella.wtp.filecounter by

selecting File → New → Other... → Web → Dynamic Web Project.

Page 8: Servlet and jsp development with eclipse wtp

Press finished. If Eclipse asks you, to switch to the Java EE Perspective answer yes.

A new project has been created with the standard structure of a Java web application.

The WEB-INF/lib directory holds all the JAR files that the Java web application

requires.

5.2. Creating Data Access Object

Create a new package called de.vogella.wtp.filecounter.dao.

Create the Java class which will provide the number of visitors and write this value to a

file.

Page 9: Servlet and jsp development with eclipse wtp

package de.vogella.wtp.filecounter.dao;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

public class FileDao {

public int getCount() {

int count = 0;

// Load the file with the counter

FileReader fileReader = null;

BufferedReader bufferedReader = null;

PrintWriter writer = null ;

try {

File f = new File("FileCounter.initial");

if (!f.exists()) {

f.createNewFile();

writer = new PrintWriter(new FileWriter(f));

writer.println(0);

}

if (writer !=null){

writer.close();

}

fileReader = new FileReader(f);

bufferedReader = new BufferedReader(fileReader);

String initial = bufferedReader.readLine();

count = Integer.parseInt(initial);

} catch (Exception ex) {

if (writer !=null){

writer.close();

Page 10: Servlet and jsp development with eclipse wtp

}

}

if (bufferedReader != null) {

try {

bufferedReader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return count;

}

public void save(int count) throws Exception {

FileWriter fileWriter = null;

PrintWriter printWriter = null;

fileWriter = new FileWriter("FileCounter.initial");

printWriter = new PrintWriter(fileWriter);

printWriter.println(count);

// make sure to close the file

if (printWriter != null) {

printWriter.close();

}

}

}

Tip

This Java class is not a servlet, it is a normal Java class.

5.3. Creating the Servlet

Create a servlet. Right-click on the folder Webcontent and select New → Other.

Select Web → Servlet. Enter the following data.

Page 11: Servlet and jsp development with eclipse wtp

Press finish.

You could also create a servlet without the wizard. The wizard creates a Java class

which extends thejavax.servlet.http.HttpServlet and adds the servlet settings to

the web.xml file.

Enter the following code.

package de.vogella.wtp.filecounter.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;

Page 12: Servlet and jsp development with eclipse wtp

import javax.servlet.http.HttpSession;

import de.vogella.wtp.filecounter.dao.FileDao;

/**

* Servlet implementation class FileCounter

*/

public class FileCounter extends HttpServlet {

private static final long serialVersionUID = 1L;

int count;

private FileDao dao;

public void init() throws ServletException {

dao = new FileDao();

try {

count = dao.getCount();

} catch (Exception e) {

getServletContext().log("An exception occurred in FileCounter", e);

throw new ServletException("An exception occurred in FileCounter"

+ e.getMessage());

}

}

protected void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

// Set a cookie for the user, so that the counter does not increate

// every time the user press refresh

HttpSession session = request.getSession(true);

// Set the session valid for 5 secs

session.setMaxInactiveInterval(5);

response.setContentType("text/plain");

Page 13: Servlet and jsp development with eclipse wtp

PrintWriter out = response.getWriter();

if (session.isNew()) {

count++;

}

out.println("This site has been accessed " + count + " times.");

}

public void destroy() {

super.destroy();

try {

dao.save(count);

} catch (Exception e) {

e.printStackTrace();

}

}

}

This code will read the counter from a file on the server and return plain text to the

browser. The servlet will increase the counter if the user was inactive for 5 seconds.

5.4. Run

Select your servlet, right-click on it and select Run As → Run on Server.

Select your server and include your servlet so that is runs on the server.

Page 14: Servlet and jsp development with eclipse wtp
Page 15: Servlet and jsp development with eclipse wtp

Press Finish. You should see the Eclipse internal web browser displaying the count

number to you. If you wait 5 seconds and refresh, the number should increase.

Congratulations. You created your first working servlet with Eclipse WTP!

6. JavaServer Pages (JSPs) 6.1. Create Project

Page 16: Servlet and jsp development with eclipse wtp

The following will demonstrate the creation and usage of a JaveServer Page. Create a

new Dynamic Web Project calledde.vogella.wtp.jspsimple and a package with the same

name.

6.2. Create the JSP

Select the folder "WebContent", right-click New → JSP. and create the JSP "FirstJSP".

Select the "New JSP File (html)" template.

Create the following coding.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Page 17: Servlet and jsp development with eclipse wtp

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>JSP with the current date</title>

</head>

<body>

<%java.text.DateFormat df = new java.text.SimpleDateFormat("dd/MM/yyyy"); %>

<h1>Current Date: <%= df.format(new java.util.Date()) %> </h1>

</body>

</html>

6.3. Run it

Start your webapplication. You find your JSP under the

URL http://localhost:8080/de.vogella.wtp.jspsimple/FirstJSP.jsp.

6.4. Adjust web.xml

Set the JSP page as the welcome page for your application to have it automatically

opened if the application is started. Modify theWebContent/WEB-INF/web.xml file.

<?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_2_5.xsd" id="WebApp_ID" version="2.5">

<display-name>de.vogella.wtp.jspsimple</display-name>

<welcome-file-list>

<welcome-file>FirstJSP.jsp</welcome-file>

Page 18: Servlet and jsp development with eclipse wtp

</welcome-file-list>

</web-app>

This allows to start the JSP via the

URL http://localhost:8080/de.vogella.wtp.jspsimple.

7. JSP's and Servlets 7.1. Create Project

This example will demonstrate the usage of JSPs for the display and a servlet as the

controller for a web application. The servlet will dispatch the request to the correct JSP.

Create the Dynamic Web Project "de.vogella.wtp.jsp" and the package

"de.vogella.wtp.jsp"

7.2. Create the Controller (servlet)

Create a new servlet called Controller in the de.vogella.wtp.jsp.controller package.

package de.vogella.wtp.jsp.controller;

import java.io.IOException;

import java.util.Map;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* Servlet implementation class Controller

*/

public class Controller extends HttpServlet {

private static final long serialVersionUID = 1L;

private static String DELETE_JSP = "/Delete.jsp";

private static String EDIT_JSP = "/Edit.jsp";

Page 19: Servlet and jsp development with eclipse wtp

private static String SHOWALL_JSP = "/ShowAll.jsp";

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String forward="";

// Get a map of the request parameters

@SuppressWarnings("unchecked")

Map parameters = request.getParameterMap();

if (parameters.containsKey("delete")){

forward = DELETE_JSP;

} else if (parameters.containsKey("edit")){

forward = EDIT_JSP;

} else {

forward = SHOWALL_JSP;

}

RequestDispatcher view = request.getRequestDispatcher(forward);

view.forward(request, response);

}

}

This controller checks which parameters are passed to the servlet and then forward the

request to the correct JSP.

7.3. Create the Views (JSP)

In the folder "WebContent" create the new JSP "ShowAll" with the following code.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Show all names</title>

Page 20: Servlet and jsp development with eclipse wtp

</head>

<body>

<form method="GET" action='Controller' name="showall">

<table>

<tr>

<td><input type="checkbox" name="id1" /></td>

<td>Jim</td>

<td>Knopf</td>

</tr>

<tr>

<td><input type="checkbox" name="id2" /></td>

<td>Jim</td>

<td>Bean</td>

</tr>

</table>

<p><input type="submit" name="delete" value="delete" />&nbsp;

<input type="submit" name="edit" value="edit" />&nbsp;

<input type="reset"

value="reset" /></p>

</form>

</body>

</html>

Create the Delete.jsp JSP.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Page 21: Servlet and jsp development with eclipse wtp

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Insert title here</title>

</head>

<body>

Delete successful

<form method="GET" action='Controller' name="delete_success"><input

type="submit" value="back"></form>

</body>

</html>

Create the JSP Edit.jsp.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Insert title here</title>

</head>

<body>

<form method="GET" action='Controller' name="edit">

<table>

<tr>

<td>First name:</td>

<td><input type="text" name="firstName"></td>

</tr>

<tr>

Page 22: Servlet and jsp development with eclipse wtp

<td>Last name:</td>

<td><input type="text" name="lastName"></td>

</tr>

<tr>

<td><input type="submit" value="save"> <input

type="reset" value="reset"> <input type="submit" value="back">

</td>

</tr>

</table>

</form>

</body>

</html>

7.4. Run it

Run your new application by running ShowAll.jsp on the server. You should be able

to navigate between the pages.

8. Web Archive - How to create a war file

from Eclipse

´The following describes how to create a Web Archive (WAR) from Eclipse.

Right-click on the project and select Export.

Page 23: Servlet and jsp development with eclipse wtp

Specify the target directory and press Finish.

Page 24: Servlet and jsp development with eclipse wtp

You can now import the WAR file to your production Tomcat system and test the web

application.

9. Additional Eclipse WTP resources

The development of webservices with Eclipse WTP is covered in Webservices with

Axis2 and the Eclipse Web Tool Platform (WTP) - Tutorial.

The development of JavaServerFaces is covered in JavaServer Faces (JSF)

development with Eclipse WTP JSF - Tutorialand JSF with Apache Myfaces

Trinidad and Eclipse.

10. Support this website

This tutorial is Open Content under the CC BY-NC-SA 3.0 DE license. Source code in

this tutorial is distributed under the Eclipse Public License. See the vogella

License page for details on the terms of reuse.

Page 25: Servlet and jsp development with eclipse wtp

Writing and updating these tutorials is a lot of work. If this free community service was

helpful, you can support the cause by giving a tip as well as reporting typos and factual

errors.

10.1. Thank you

Please consider a contribution if this article helped you.

10.2. Questions and Discussion

If you find errors in this tutorial, please notify me (see the top of the page). Please note

that due to the high volume of feedback I receive, I cannot answer questions to your

implementation. Ensure you have read the vogella FAQ as I don't respond to questions

already answered there.

11. Links and Literature 11.1. Source Code

Source Code of Examples

11.2. Web development resources

Introduction into Java Web development

11.3. vogella Resources

vogella Training Android and Eclipse Training from the vogella team

Android Tutorial Introduction to Android Programming

GWT Tutorial Program in Java, compile to JavaScript and HTML

Eclipse RCP Tutorial Create native applications in Java

JUnit Tutorial Test your application

Git Tutorial Put all your files in a distributed version control system

Page 26: Servlet and jsp development with eclipse wtp