diff --git a/examples.module b/examples.module
index a68dbce..35ba87d 100644
--- a/examples.module
+++ b/examples.module
@@ -45,6 +45,7 @@ function examples_toolbar() {
     'page_example' => 'page_example_description',
     'phpunit_example' => 'phpunit_example_description',
     'simpletest_example' => 'simpletest_example_description',
+    'session_example' => 'session_example.form',
     'tour_example' => 'tour_example_description',
   );
 
diff --git a/session_example/session_example.info.yml b/session_example/session_example.info.yml
new file mode 100644
index 0000000..780019c
--- /dev/null
+++ b/session_example/session_example.info.yml
@@ -0,0 +1,7 @@
+name: 'Session example'
+type: module
+description: 'An example of how to use session in Drupal 8.'
+package: Example modules
+core: 8.x
+dependencies:
+  - examples
diff --git a/session_example/session_example.links.menu.yml b/session_example/session_example.links.menu.yml
new file mode 100644
index 0000000..0d5077b
--- /dev/null
+++ b/session_example/session_example.links.menu.yml
@@ -0,0 +1,7 @@
+# Define the menu links for this module
+
+session_example.form:
+  title: 'Session Example'
+  route_name: session_example.form
+  description: 'Setting Form'
+  weight: 10
diff --git a/session_example/session_example.links.task.yml b/session_example/session_example.links.task.yml
new file mode 100644
index 0000000..3c1efe8
--- /dev/null
+++ b/session_example/session_example.links.task.yml
@@ -0,0 +1,8 @@
+session_example.form:
+  route_name: session_example.form
+  base_route: session_example.form
+  title: Form
+session_example.view:
+  route_name: session_example.view
+  base_route: session_example.form
+  title: View
diff --git a/session_example/session_example.routing.yml b/session_example/session_example.routing.yml
new file mode 100644
index 0000000..a67fde4
--- /dev/null
+++ b/session_example/session_example.routing.yml
@@ -0,0 +1,17 @@
+session_example.form:
+  path: '/examples/session_example'
+  defaults:
+    _form: '\Drupal\session_example\Form\SessionExampleForm'
+    _title: 'Session Example'
+  requirements:
+    _access: 'TRUE'
+  options:
+    _admin_route: TRUE
+session_example.view:
+  path: '/examples/session_example/view'
+  defaults:
+    _controller: '\Drupal\session_example\Controller\SessionExampleController::showSession'
+  requirements:
+    _access: 'TRUE'
+  options:
+    _admin_route: TRUE
diff --git a/session_example/src/Controller/SessionExampleController.php b/session_example/src/Controller/SessionExampleController.php
new file mode 100644
index 0000000..83da33a
--- /dev/null
+++ b/session_example/src/Controller/SessionExampleController.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\session_example\Controller\SessionExampleController.
+ */
+
+namespace Drupal\session_example\Controller;
+
+use Drupal\Core\Controller\ControllerBase;
+use Symfony\Component\HttpFoundation\Request;
+
+class SessionExampleController extends ControllerBase {
+
+  /**
+   * A session controller example.
+   *
+   * @param \Symfony\Component\HttpFoundation\Request $request
+   *   The request object.
+   *
+   * @return string
+   *   A rendered array containing name and mail from session.
+   */
+  public function showSession(Request $request) {
+    $session = $request->getSession();
+    $name = $session->get('session_example.name', $this->t('No Name'));
+    $email = $session->get('session_example.email', $this->t('No EMail'));
+    return [
+      '#markup' => $this->t('Name: @name, EMail: @email', ['@name' => $name, '@email' => $email]),
+      '#cache' => [
+      'max-age' => 0,
+      ]
+    ];
+  }
+}
diff --git a/session_example/src/Form/SessionExampleForm.php b/session_example/src/Form/SessionExampleForm.php
new file mode 100644
index 0000000..7403d37
--- /dev/null
+++ b/session_example/src/Form/SessionExampleForm.php
@@ -0,0 +1,121 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\session_example\Form\SessionExampleForm.
+ */
+
+namespace Drupal\session_example\Form;
+
+use Drupal\Core\Form\FormBase;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Utility\LinkGeneratorInterface;
+use Drupal\Core\Url;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\HttpFoundation\RequestStack;
+
+class SessionExampleForm extends FormBase {
+
+  /**
+   *  The request object.
+   *
+   * @var \Symfony\Component\HttpFoundation\RequestStack
+   */
+  protected $request;
+
+  /**
+   * The Link generator.
+   *
+   * @var \Drupal\Core\Utility\LinkGeneratorInterface
+   */
+  protected $link_generator;
+
+  /**
+   * Constructs a new SessionExampleForm object.
+   *
+   * @param \Symfony\Component\HttpFoundation\RequestStack
+   *   The request stack object.
+   * @param  \Drupal\Core\Utility\LinkGeneratorInterface
+   *   The link generator.
+   */
+  public function __construct(RequestStack $request, LinkGeneratorInterface $link_generator) {
+    $this->request = $request;
+    $this->link_generator = $link_generator;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    return new static(
+      $container->get('request_stack'),
+      $container->get('link_generator')
+    );
+  }
+
+  /**
+   * Get the session object from here.
+   *
+   * @return \Symfony\Component\HttpFoundation\Session\SessionInterface
+   */
+  public function getExampleSession() {
+    $request = $this->request->getCurrentRequest();
+    $session = $request->getSession();
+    return $session;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return 'session_example_form';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, FormStateInterface $form_state) {
+    $session = $this->getExampleSession();
+    $form['name'] = [
+      '#type' => 'textfield',
+      '#title' => $this->t('Name'),
+      '#default_value' => $session->get('session_example.name', 'My Name'),
+    ];
+    $form['email'] = [
+      '#type' => 'textfield',
+      '#title' => $this->t('Email'),
+      '#default_value' => $session->get('session_example.email', 'My Email'),
+    ];
+    $form['save'] = [
+      '#type' => 'submit',
+      '#value' => $this->t('Save'),
+    ];
+    $form['reset'] = [
+      '#type' => 'submit',
+      '#value' => $this->t('Clear Session'),
+      '#submit' => ['::submitClearSession']
+    ];
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    $session = $this->getExampleSession();
+    $session->set('session_example.name', $form_state->getValue('name'));
+    $session->set('session_example.email', $form_state->getValue('email'));
+    $link = $this->link_generator->generate($this->t('Check here'), Url::fromRoute('session_example.view'));
+    drupal_set_message($this->t('The session has been saved successfully. @link', ['@link' => $link]));
+  }
+
+  /**
+   * Clears the name and email session.
+   */
+  public function submitClearSession(array &$form, FormStateInterface $form_state) {
+    $session = $this->getExampleSession();
+    $session->remove('session_example.name');
+    $session->remove('session_example.email');
+    drupal_set_message($this->t('Session is cleared.'));
+  }
+}
diff --git a/session_example/src/Tests/SessionExampleTest.php b/session_example/src/Tests/SessionExampleTest.php
new file mode 100644
index 0000000..f69a49b
--- /dev/null
+++ b/session_example/src/Tests/SessionExampleTest.php
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * @file
+ * Test cases for Session Example Module.
+ */
+
+namespace Drupal\session_example\Tests;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests the basic functions of the Session Example module.
+ *
+ * @package Drupal\session_example\Tests
+ *
+ * @ingroup session_example
+ *
+ * @group session_example
+ * @group examples
+ */
+class SessionExampleTest extends WebTestBase {
+  public static $modules = array('session_example', 'block');
+
+  /**
+   * Basic tests for Session Example.
+   */
+  public function testSessionExample() {
+
+    $this->drupalPlaceBlock('system_menu_block:tools', array());
+    $this->drupalGet('');
+    $this->assertLink(t('Session Example'));
+
+    $this->clickLink(t('Session Example'));
+    $this->assertFieldByName('name', 'My Name', 'Name Field contains My Name');
+    $this->assertFieldByName('email', 'My Email', 'Email Field contains My Email');
+
+    $this->clickLink(t('View'));
+    $this->assertText('No Name');
+    $this->assertText('No EMail');
+
+    $this->clickLink(t('Form'));
+    $this->drupalPostForm(NULL, array(), t('Save'));
+    $this->assertText('The session has been saved successfully.');
+    $this->assertLink(t('Check here'));
+
+    $this->clickLink(t('Check here'));
+    $this->assertText('My Name');
+    $this->assertText('My Email');
+
+    $this->clickLink(t('Form'));
+    $this->drupalPostForm(NULL, array(), t('Clear Session'));
+    $this->assertText('Session is cleared.');
+
+    $this->clickLink(t('View'));
+    $this->assertText('No Name');
+    $this->assertText('No EMail');
+
+  }
+}
diff --git a/src/Tests/ExamplesTest.php b/src/Tests/ExamplesTest.php
index 13425d8..6c525e4 100644
--- a/src/Tests/ExamplesTest.php
+++ b/src/Tests/ExamplesTest.php
@@ -42,7 +42,7 @@ class ExamplesTest extends WebTestBase {
 
     // Assert that the tray registered by example is present.
     $this->assertRaw('id="toolbar-item-examples-tray"');
-    $this->assertRaw('<nav class="toolbar-lining clearfix" role="navigation" aria-label="Developer Examples">');
+    $this->assertRaw('<nav class="toolbar-lining clearfix" aria-label="Developer Examples" role="navigation">');
 
     // Assert that PHPUnit link does not appears in the tray.
     $this->assertNoLink('PHPUnit example');
