Servlet&jsp process(doc) - DOC SERVE

braintreesmileΛογισμικό & κατασκευή λογ/κού

15 Αυγ 2012 (πριν από 5 χρόνια και 3 μήνες)

355 εμφανίσεις

Table of Contents


1. Eclipse Web Tool Platform


1.1. Overview of Eclipse WTP


1.2. Additional Eclipse WTP resources


1.3. Dynamic Web Project


2. Tomcat Installation


3. Installation of WTP


4. WTP Configuration


4.1. Server

5. Servle
ts


5.1. Overview


5.2. Project


5.3. Creating Data Access Object


5.4. Creating the Servlet


5.5. Run


6. JavaServer Pages (JSPs)


6.1. Overview


6.2. Create Project


6.3. Cr
eate the Controller (servlet)


6.4. Create the Views (JSP)


6.5. Ru
n it


7. Web Archive
-

How to create a war file from Eclipse


8. Thank you


9. Questions and Discussion


10. Links and Literature


10.1. Source Code


10.2. Web development resources


10.3. Other Resources


1.

Eclipse Web Tool Platform

1.1.

Overview of Eclipse WTP

Tip

In case you are new to Java web development you may want to get a quick overview of
webdevelopment with Java in the following short article:
Introduction to Java
Webdevelopment

.

Eclipse WTP provides tools for developing standard Java web applications and Java EE
applications. Eclipse WTP simplifies the creation of web artif
acts and provides a runtime
environment in which these artifacts can be deployed, started and debugged. Typical
web artifacts in a Java environment are HTML pages, XML files, webservices, servlets
and JSPs.

The following article will focus on the creation

of servlets and JSP with Eclipse WTP and
how to use the runtime environment of Eclipse to test them.

Eclipse WTP supports all mayor webcontainer, e.g. Jetty and Apache Tomcat as well as
the mayor Java EE application server. This tutorial will be based on
Apache Tomcat.

1.2.

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
-

Tutorial

and
JSF with Apache Myfaces Trinidad
and Eclipse
.

1.3.

Dynamic Web Project

Eclipse uses builders which are responsible for working with the relevant artifacts.
Eclipse WTP uses "Dynamic Web Projects". These projec
ts provide the necessary
builders to run, debug and deploy a Java web application. Therefore for the
development of Java web application you create "Dynamic Web Projects" .

2.

Tomcat Installation

Download the Tomcat server 6.0.x from the following webpage
http://tomcat.apache.org/


Installing Tomcat (on windows) is very easy and self explaining as it comes with a
standard installer. For an overview of the usage and configuration of Tomcat see
Apache Tomcat
-

Tutorial

. For a tomcat installation on other platform please use
Google.

After the installation test if Tomcat in correctly installed by opening a browser to
http://localho
st:8080/.

This should open the Tomcat main page. If it works then Tomcat is correctly installed.

Stop now Tomcat before starting Eclipse. If Tomcat is still running Eclipse WTP will
have problems using the installed Tomcat.

3.

Installation of WTP

Depend
ing on your Eclipse installation you also need to install the WTP tools. Use the
update manager to install the all packages from "Web, XML, and Java EE
Development" except "PHP Development" and "Eclipse RAP" from the standard Galileo
site. Please see
Using the Eclipse Update Manager



4.

WTP Configuration

You have to configure WTP to use the Tomcat installation.

Select Windows
-
> Preferences
-
> Server
-
> Runtime
Environments. Press Add.


Select your version of Tomcat.


Tip

To compile the JSP into servlets you need to use the JDK. In my case the "Workbench
default JRE" is pointing to the JDK. You can check you setup by clicking on "Installed
JRE".


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

4.1.

Server

During development you will create your server. You can manager you server via the
server view. To see if you data was persisted stop and restart the server. You can do
this via the Window
s
-
> Show View
-
> Servers
-
> Servers


The following shows where you can start, stop and restart your server.


5.

Servlets

5.1.

Overview

We will create a
servlet

which works as a webpage counter. This servlet will keep track
of the number of visitors of a webpage. The servlet will persists the number of visitors in
a text file.

5.2.

Project

Create a new dynamic web project called "de.vogella.wtp.filecount
er" by selecting File
-
> New
-
> Other
-
> Web
-
> Dynamic Web Project.



Press finished. If asked if you want 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 will later hold all the JAR files that the Java web application
requires.

5.3.

Creating Data Access Object

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

Create the Java class which will provide the number of visitors write this val
ue to a file.






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 i
nt 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.cre
ateNewFile();





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





writer.println(0);




}




if (writer !=null){





writer.close();




}








fileReader = new FileReader(f);




bufferedReader = new BufferedReader(fileReader);




String initial = buffer
edReader.readLine();




count = Integer.parseInt(initial);



} catch (Exception ex) {




if (writer !=null){





writer.close();




}



}



if (bufferedReader != null) {




try {





bufferedReader.close();




} catch (IOException e) {





e.printStackTrac
e();




}



}



return count;


}



public void save(int count) throws Exception {



FileWriter fileWriter = null;



PrintWriter printWriter = null;



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



printWriter = new PrintWriter(fileWriter);



printWr
iter.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.4.

Creating the Servlet

Create a servlet. Right click on the folde
r Webcontent and select New
-
> Other. Select
Web
-
> Servlet. Maintain the following data.


Press finish.

Tip

You could also create a servlet without the wizard. The wizard creates a Java class
which extends javax.servlet.http.HpptServlet and add the servle
t settings to the web.xml
description file.

Maintain the following code for the servlet.






package de.vogella.wtp.filecounter.servlets;


import java.io.IOException;

import java.io.PrintWriter;


import javax.servlet.ServletException;

import javax.servle
t.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;


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


/**


* Servlet implementation class FileCounter


*/

pub
lic 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 (Exce
ption 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



// everytime the user press refresh



HttpSession session = request.getSession(true);



// Set the session valid for 5 secs



session.
setMaxInactiveInterval(5);



response.setContentType("text/plain");



PrintWriter out = response.getWriter();



if (session.isNew()) {




count++;



}



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


}



public void destroy() {



super.d
estroy();



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 5 s
econds inactive.

5.5.

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.



Press finish. You should see the Eclipse internal web browser displaying y
our the count
number. 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.

Overview

The following demonstrate the usage of JSPs. We will J
SPs for the display and a servlet
as the controller for a web application. The servlet will dispatch the request to the
correct JSP.

6.2.

Create Project

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

6.3.

Create the Controller (servlet)

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






package de.vogella.wtp.jsp.controller;


import java.io.IOException;

import java.util.Map;


import javax.servlet.RequestDispatcher;

impor
t 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 HttpSe
rvlet {


private static final long serialVersionUID = 1L;


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


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


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





protected void doGet(HttpServletRequest req
uest, 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 cont
roller will check which parameters has been passed to the servlet and then
forward the request to the correct JSP.

6.4.

Create the Views (JSP)

Select the folder "WebContent", right
-
mouse click
-
> New
-
> JSP. Call the new JSP
"ShowAll". 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.d
td">

<html>

<head>

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

<title>Show all names</title>

</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 JSP "Delete.jsp".






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


pageEncoding="ISO
-
8859
-
1"%>

<!DOCTYPE html PUBLIC "
-
//W3C//DTD HTML 4.0
1 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>


Delete successful

<form method="GET" action='Controller' nam
e="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.0
1 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>



<td>Last name:</td>



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


</tr>


<tr>



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




type="reset" value="reset"> <inp
ut type="submit" value="back">



</td>


</tr>

</table>

</form>


</body>

</html>





6.5.

Run it

Run your new application by running "ShowAll.jsp" on the server. You should be able to
navigate between the pages.

7.

Web Archive
-

How to create a war file fro
m Eclipse

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

Right click on the project and select "Export".


Specify the target directory and press finish.


Import now the War file to your production Tomcat system and test the web

application.










How to develop webapplication in NETBEANS
:
-

Table of Contents

1.
Creating a new Web Application

2.
Creating a new JSP page

3.
Creating a new Servlet

4.
The web.xml file

5.
Adding .jar files to your application

6.
Restarting Tomcat

7.
Debugging JSPs and

Servlets

8.
Exporting your Web Application

1.

C牥慴r湧n愠new 坥W Ap灬i捡瑩潮

1.

Start a new project and create and mount a directory for your web appl
ication.


2.

With the above directory selected, select:
File → New → JSPs & Servlets → Web
Module.



3.

Hit
Next
, the target directory in the subsequent dialog should be the one you mounted
above.


Now hit
Finish
.

4.

Now you should have a view in your Filesyst
em explorer like this:




You put your
.html

and
.jsp

files in the top level directory,
any file references in your
JSP/servlets are relative to this
directory.



WEB
-
INF/classes

is where
you put your servlet classes.



WEB
-
INF/lib

is where you
put any
.jar

f
iles required by your
application e.g.
postgresql.jar

for web applications that access a
Postgresql database.



WEB
-
INF/web

is your
web.xml

file (double
-
click to edit).



You can ignore the
META
-
INF

directory.



Netbeans also remounts
WEB
-
INF/classes

at the bott
om to
give you a shortcut to your servlet
package hierarchy.

2.

C牥慴r湧n愠new 䩓J 灡来

1.

To create a JSP page select the top level folder in the explorer then do
File → New →
JSPs & Servlets → JSP
.


2.

Hit
Next
.


Enter a name for your JSP (without .jsp ex
tension). You can select a subfolder to put it in
if you want to organise your pages into subfolders. Then hit
Finish
:

3.

Netbeans creates a skeleton JSP page comprising of little more than the
<head>

and
<body>

tags and a couple of commented
-
out sample bean

directives. I have added the
<h1>

and
<p>

lines in the screenshot below.


4.

To run your JSP page select it in the explorer or source editor and hit
F6

or the
button. You will either see the page in Netbeans internal browser:


or you can point Mozilla a
t the relevent URL:


Netbeans 3.6 uses port 8084 for Tomcat so the URL will be of the format
http://localhost:8084/<your web app>/<your jsp or servlet>

3.

C牥慴r湧n愠new 卥牶S整

1.

To create a servlet, select the
WEB
-
INF/classes

folder or the corresponding
mount at the
bottom, then do
File → New → JSPs & Servlets → Servlet
.


Hit
Next

2.

Enter a name for your servlet. You must specify a package for your servlet classes.


Hit
Next
.

3.

Specify a URL mapping for your servlet.

It can be useful to prefix servlet URL
s with
/servlet/

for later deployment on web
servers such as Apache where this prefix can be used for deciding which pages to
forward to web container such as Tomcat for processing.

You can also specify any servlet initialisation parameters that you can th
en access from
the servlet's
init()

method.


Hit
Finish

4.

Netbeans creates a skeleton servlet with
init(), destroy(), doGet(), doPost()
and getServletInfo()

methods.


By default the familiar
doGet() and doPost()

methods are both forwarded to a single
com
mon
processRequest()

method as shown above. But you can delete this if you
want and code the appropriate
doGet()

and
doPost()

method bodies as appropriate.

5.

To run your servlet select it in the explorer or the source editor and hit
F6

or the
button and Net
beans should start Tomcat. Fire up your browser and point it at the
relevant URL thus:


4.

T桥h
web.xml

file

The
web.xml

file is the
Web Application Deployment Descriptor
, which defines which servlets
should be run for certain URLs and some other parameters of your web application.

Netbeans creates one for you when you create a new web applicati
on and it looks something like
this:


The format of the URL
-
to
-
servlet mappings is described
here
.

You can see that Netbeans has automatically
added
<servlet>

and
<servlet
-
mapping>

entries
for
MyServlet

we just created above.

The
<session
-
config>

contains a definition for the time in minutes before a user's session
times out (in this case 30 minutes) and a <welcome
-
file
-
list> section describing w
hich files will
be loaded as the default home page for the web application. In this case it will try
index.jsp
,
index.html

and finally if these don't exist
index.htm
.

When you create a new servlet you can set up URL mappings in the New
-
Servlet dialogs and
Netbeans will add the appropriate entries to your
web.xml
, but you are free to edit these by hand.

5.

A摤楮d
.jar

files to your application

If your web applications needs additional libraries such as for database access then copy the
corresponding
.jar

file to your project's
WEB
-
INF/lib

directory (e.g.
postgresql.jar
) and
then right
-
click on
WEB
-
INF/lib

a
nd select
Refresh Folder

and the file will be added to your
web application's classpath.

I have not found an easy way to copy files from within Netbeans. If you copy and paste a jar file
between mounts it tends to unpack the jar file, so I usually copy the
m in by hand e.g.:

cp /bham/common/java/lib/postgresql.jar ~/work/mywebapp/WEB
-
INF/lib/

Then subsequently, right
-
click on
WEB
-
INF/lib

and select
Refresh Folder

6.

R敳e慲瑩湧nT潭捡o

1.

If you edit your code, hitting
(run) again will recompile and restart Tomcat.

2.

To restart the whole web application select
WEB
-
INF

in the explorer and hit
(run).
Any altered JSP/servlets will be recompiled and redeployed.

3.

Occasionally n
ot all changes will be registered, such as if you manually edit
web.xml

or
edit tag libraries. In which case I manually restart Tomcat by going to the Runtime tab
and right
-
click on the node
Server Registry → Tomcat 5 Servers →
http://localhost:8084

and se
lect
Start / Stop Server



7.

D敢畧杩湧nJ卐猠慮搠S敲癬整e

1.

Set any breakpoints where you would like execution to halt in your JSP or Servlet code
by moving the cursor to the appropriate line in the editor and either hit
Shift
-
F8

or right
-
click →
Toggle Bre
akpoint
.


2.

To debug the current JSP or Servlet that you are editing hit the
button whilst the
cursor is in the editor pane. To debug the whole web application hit the
button whilst
WEB
-
INF

is selected in the Explorer.

The application will run until a br
eakpoint is encountered.


The green line shows the current line to be executed and the execution can be controlled
by the buttons at the top:


The buttons left to right are
Stop, Pause, Continue, Step Over, Step Into, Step
Out and Run to Cursor
. (
Pause

is greyed out as the program is already paused at the
breakpoint).

In the panes at the bottom you can see the Call Stack, the values of Local Variables (you
can expand objects to look at member variables) and the values of any Watches you have
set. You ca
n set a new watch on a variable by right
-
clicking on it and selecting
New
Watch
.

For debugging web applications Netbeans also provides a HTTP Monitor so that you can
look at the values of parameters in the actual HTTP requests.

3.

To see the servlet code gene
rated for a JSP page (remember JSPs are just templates for
servlets created automatically by the container), right click anywhere in the source of the
JSP and select
View Servlet
.

8.

䕸灯牴p湧 y潵爠W敢eA灰汩c慴a潮

To create a web application
.war

file to d
eploy on external JSP/Servlet containers, right
-
click on
WEB
-
INF

and select
Export WAR file...

then give it a name in the file dialog.