type=page
status=published
title=The mood Example Application
next=servlets016.html
prev=servlets014b.html
~~~~~~
= The mood Example Application


[[GKCPG]]

[[the-mood-example-application]]
The mood Example Application
----------------------------

The `mood` example application, located in the
tut-install`/examples/web/servlet/mood/` directory, is a simple example
that displays Duke's moods at different times during the day. The
example shows how to develop a simple application by using the
`@WebServlet`, `@WebFilter`, and `@WebListener` annotations to create a
servlet, a listener, and a filter.

The following topics are addressed here:

* link:#CHDEBFCB[Components of the mood Example Application]
* link:#GKCOJ[Running the mood Example]

[[CHDEBFCB]]

[[components-of-the-mood-example-application]]
Components of the mood Example Application
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The `mood` example application is comprised of three components:
`mood.web.MoodServlet`, `mood.web.TimeOfDayFilter`, and
`mood.web.SimpleServletListener`.

`MoodServlet`, the presentation layer of the application, displays
Duke's mood in a graphic, based on the time of day. The `@WebServlet`
annotation specifies the URL pattern:

[source,oac_no_warn]
----
@WebServlet("/report")
public class MoodServlet extends HttpServlet {
    ...
----

`TimeOfDayFilter` sets an initialization parameter indicating that Duke
is awake:

[source,oac_no_warn]
----
@WebFilter(filterName = "TimeOfDayFilter",
urlPatterns = {"/*"},
initParams = {
    @WebInitParam(name = "mood", value = "awake")})
public class TimeOfDayFilter implements Filter {
    ...
----

The filter calls the `doFilter` method, which contains a `switch`
statement that sets Duke's mood based on the current time.

`SimpleServletListener` logs changes in the servlet's lifecycle. The log
entries appear in the server log.

[[GKCOJ]]

[[running-the-mood-example]]
Running the mood Example
~~~~~~~~~~~~~~~~~~~~~~~~

You can use either NetBeans IDE or Maven to build, package, deploy, and
run the `mood` example.

The following topics are addressed here:

* link:#GKCOB[To Run the mood Example Using NetBeans IDE]
* link:#GKCPJ[To Run the mood Example Using Maven]

[[GKCOB]]

[[to-run-the-mood-example-using-netbeans-ide]]
To Run the mood Example Using NetBeans IDE
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1.  Make sure that GlassFish Server has been started (see
link:usingexamples002.html#BNADI[Starting and Stopping GlassFish
Server]).
2.  From the File menu, choose Open Project.
3.  In the Open Project dialog box, navigate to:
+
[source,oac_no_warn]
----
tut-install/examples/web/servlet
----
4.  Select the `mood` folder.
5.  Click Open Project.
6.  In the Projects tab, right-click the `mood` project and select
Build.
7.  In a web browser, enter the following URL:
+
[source,oac_no_warn]
----
http://localhost:8080/mood/report
----
+
The URL specifies the context root, followed by the URL pattern.
+
A web page appears with the title "Servlet MoodServlet at /mood", a text
string describing Duke's mood, and an illustrative graphic.

[[GKCPJ]]

[[to-run-the-mood-example-using-maven]]
To Run the mood Example Using Maven
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1.  Make sure that GlassFish Server has been started (see
link:usingexamples002.html#BNADI[Starting and Stopping GlassFish
Server]).
2.  In a terminal window, go to:
+
[source,oac_no_warn]
----
tut-install/examples/web/servlet/mood/
----
3.  Enter the following command to deploy the application:
+
[source,oac_no_warn]
----
mvn install
----
4.  In a web browser, enter the following URL:
+
[source,oac_no_warn]
----
http://localhost:8080/mood/report
----
+
The URL specifies the context root, followed by the URL pattern.
+
A web page appears with the title "Servlet MoodServlet at /mood", a text
string describing Duke's mood, and an illustrative graphic.
