来自servlet的session.getAttribute并在html中显示

时间:2014-10-30 15:29:53

标签: java html session servlets login

我有一个登录servlet,它从登录html文件中获取值并立即重定向到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(); 
    }
  }

我无法弄清楚的是,我想在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>

3 个答案:

答案 0 :(得分:1)

对于会话尝试使用此...

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

答案 1 :(得分:1)

Forget about scriptlets, avoid its usage。请改用Expression language

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

此处,${FirstName}将替换为存储在其中一个范围中的名称为"FirstName"的属性:

  • 页面范围
  • 请求范围
  • 会话范围
  • 申请范围

这仅适用于在JSP中使用它。 HTML是静态的,因此它不会被应用程序服务器编译或评估,也不会得到任何结果。

更多信息:

您还应该指定您至少使用Servlets 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>

您可以在此处检查jetty servlet版本兼容性:Jetty Version Comparison Table

答案 2 :(得分:0)

不使用localhost,用ip代替,例如:'http://localhost:8080/apps/sessiondemo.html'replace'http://127.0.0.1:8080/apps/sessiondemo.html',然后重试。