0

I have a login servlet that takes values from a login html file and redirects immediately to sessiondemo.html.

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

  public class logIn extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse res)
                      throws ServletException, IOException {

      res.setContentType("text/html");
      PrintWriter out = res.getWriter();
      HttpSession session = req.getSession(true);

      //getting the value(s) from HTML
      String fname = req.getParameter("fname");
      String lname = req.getParameter("lname");
      String email = req.getParameter("email");
      String address = req.getParameter("address");

      //Storing the values in Session
      session.setAttribute("FirstName", fname );
      session.setAttribute("LastName", lname );
      session.setAttribute("Email", email);
      session.setAttribute("address", address);

      res.sendRedirect("http://localhost:8080/apps/sessiondemo.html");
      out.close(); 
    }
  }

What I cant figure out is, I want to display the first and last name in the sessiondemo html. I know the code has to be written in the seesiondemo html but it is not working.

Here is what I tried:

<% session.getAttribute("FirstName", fname);
        out.println("You are logged in as" + fname + "!");%>

XML files

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
  <description>Test examples</description>
  <display-name>My Servlets</display-name>

 <servlet>
  <servlet-name>GET</servlet-name>
  <servlet-class>GET</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>GET</servlet-name>
  <url-pattern>/GET</url-pattern>
</servlet-mapping>

 <servlet>
  <servlet-name>POST</servlet-name>
  <servlet-class>POST</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>POST</servlet-name>
  <url-pattern>/POST</url-pattern>
</servlet-mapping>

 <servlet>
  <servlet-name>Cart</servlet-name>
  <servlet-class>Cart</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>Cart</servlet-name>
  <url-pattern>/Cart</url-pattern>
</servlet-mapping>

<servlet>
  <servlet-name>logIn</servlet-name>
  <servlet-class>logIn</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>logIn</servlet-name>
  <url-pattern>/logIn</url-pattern>
</servlet-mapping>


</web-app>
Reda93
  • 23
  • 3
  • 10

3 Answers3

1

For session try using this...

<% request.getSession().getAttribute("FirstName") %>
kirti
  • 4,499
  • 4
  • 31
  • 60
  • I am supposed to be working with sessions, so if you know how to do it in sessions, plz tell me ? – Reda93 Oct 30 '14 at 15:38
  • I tried with only FirstName but didnt work so I just gave it a shot, I know it only takes one argument and I know its wrong, instead of telling me its wrong, plz you can at least tell me how to fix it ? – Reda93 Oct 30 '14 at 15:45
1

Forget about scriptlets, avoid its usage. Use Expression language instead:

<div id="divUser">
    Welcome ${FirstName} ${LastName}
</div>

Here, ${FirstName} will be replaced by the attribute with name "FirstName" stored in one of these scopes:

  • Page Scope
  • Request Scope
  • Session Scope
  • Application Scope

This will only work when using it in JSP. HTML is static, so it's not compiled nor evaluated by the application server, and you will get no results.

More info:

You should also specify that you're using at least Servlets 2.4 to enable Expression Language. Currently, Servlet is in version 3.1, but you can use Servlets 3.0 in your Jetty 9+ installation. Change your web.xml file to have this statement at the top:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
      version="3.0"> 

    <description>Test examples</description>
    <display-name>My Servlets</display-name>

    <!-- rest of the content of your web.xml -->

</web-app>

You can check the jetty servlet version compatibility here: Jetty Version Comparison Table

Community
  • 1
  • 1
Luiggi Mendoza
  • 85,076
  • 16
  • 154
  • 332
0

not using localhost ,replace with ip eg: 'http://localhost:8080/apps/sessiondemo.html 'replace 'http://127.0.0.1:8080/apps/sessiondemo.html' and try again.

wendy
  • 1