我有一个登录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>
答案 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',然后重试。