繁体   English   中英

来自servlet的session.getAttribute并以html显示

[英]session.getAttribute from servlet and display in html

我有一个登录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>

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

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

忘记脚本,避免使用它 改用表达语言

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

在这里, ${FirstName}将被存储在以下范围之一中的名称为"FirstName"的属性替换:

  • 页面范围
  • 要求范围
  • 会议范围
  • 适用范围

这仅在JSP中使用时才有效。 HTML是静态的,因此应用程序服务器不会对其进行编译或评估,因此您将不会获得任何结果。

更多信息:

您还应该指定至少使用Servlets 2.4来启用表达语言。 当前,Servlet是3.1版,但是您可以在Jetty 9+安装中使用Servlets 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版本比较表

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM