2014-10-30 52 views
0

我有一個登錄servlet,它接受來自登錄html文件的值並立即重定向到sessiondemo.html。servlet中的session.getAttribute和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(); 
    } 
    } 

我無法弄清楚的是,我想在sessiondemo html中顯示姓和名。我知道代碼必須寫在seesiondemo html中,但它不起作用。

這裏是我的嘗試:

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

XML文件

<?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> 
+0

你爲什麼要嘗試_that_?什麼是'HttpSession#getAttribute(...)'的聲明?它接受了多少個論據? – 2014-10-30 15:32:18

+0

我只是給它一個鏡頭,如果你知道如何在HTML中顯示名字,幫助我? – Reda93 2014-10-30 15:34:49

+0

這表明我沒有做過你的研究。 ['HttpSession#getAttribute(String)'](http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpSession.html#getAttribute%28java.lang.String%29)只需要一個參數,一個'String'值,不是兩個。 – 2014-10-30 15:42:19

回答

1

對於使用這個會話的try ...

<% request.getSession().getAttribute("FirstName") %> 
+0

我應該和會話一起工作,所以如果你知道如何在會話中使用它,請告訴我? – Reda93 2014-10-30 15:38:29

+0

檢查編輯後的ans @ Reda93 – kirti 2014-10-30 15:43:50

+0

我只用FirstName試過但沒有工作,所以我只是給它一個鏡頭,我知道它只需要一個參數,我知道它的錯誤,而不是告訴我它的錯誤,你可以至少告訴我我如何解決它? – Reda93 2014-10-30 15:45:40

1

Forget about scriptlets, avoid its usage。使用Expression language代替:

  • 頁面範圍內
  • 請求範圍
  • 會話範圍
  • <div id="divUser"> 
        Welcome ${FirstName} ${LastName} 
    </div> 
    

    這裏,${FirstName}將被存儲在這兩個範圍,一個名字"FirstName"屬性被替換

  • 適用範圍

這隻有在JSP中使用它時纔有效。 HTML是靜態的,所以它不會被應用程序服務器編譯或評估,並且您將不會得到任何結果。

更多信息:

你還應該指定您正在使用至少Servlet的2.4,使表達式語言。目前,Servlet版本爲3.1,但您可以在Jetty 9+安裝中使用Servlet 3.0。修改web.xml文件在上面有這樣一句話:

<?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> 

你可以在這裏查看的servlet碼頭版本兼容性:Jetty Version Comparison Table

+0

沒有顯示? – Reda93 2014-10-30 15:52:18

+0

@ Reda93爲什麼你首先使用純html?這是你所有問題的根源。 – 2014-10-30 15:53:20

+0

你是什麼意思? – Reda93 2014-10-30 15:54:48