servlets / .jsp / sessons...混淆

servlets / .jsp / sessons...confused

我对这一切都是全新的,到目前为止我喜欢 servlet 和 java,但我有一些成长的烦恼。

Servlet 问题:刚开始学习 servlet,我遇到了 Attributes/Parameters、会话和 jsp 的问题。

基本上,我有一个非常基本的 形式。我的 servlet 代码声明:

println("Hello, " + request.getParameter("name") + "!!!");  

..我的 .jsp 状态:

<form action="SimpleServlet" method="POST">
<input type="text" name="name">
<input type="submit"/>
</form>

所以现在我需要做的是将姓氏输入到这个 servlet 中,将其保存在会话中,然后将其发送到不同的 .jsp,其中声明:

'Hello, '

例如,如果我将 JIM 输入到 servlet 中,并且它在我的第一个 returns 'Hello, Jim!!!' 中。jsp 然后我需要单击 link将我重定向到另一个 .jsp 的页面,该页面接受 'Jim' 输入并显示 'Hello, Jim!'.

所以我创建了第二个 .jsp 并在两者上尝试了许多不同的代码组合来尝试让它工作,但我一直得到 null 或搞砸了第一部分的输出表格.

谁能指导我正确的方向,我将不胜感激。

您可以使用单个 .jsp 页面完全按照您的意愿进行操作,而无需创建其他页面。只需创建一个 link,它将 POST 不同的参数设置为相同的 .jsp
但是作为 advice/direction 对您来说,我认为您首先必须了解的是如何传递和接收参数和属性以在服务器端处理。了解请求可以携带的内容在服务器端开发中非常重要。

如果您想在多个 jsp 页面中显示您的姓氏 JIM,您可以使用会话来存储您的姓氏,在您的 servlet 中添加以下代码。

 String name  = request.getParameter("name");
 HttpSession session=request.getSession();  
 session.setAttribute("name",name);

然后在您所有的 jsp 中,您需要做的就是在您想要打印您的名字的地方添加以下 scriplet。

<%
  String name = request.getSession().getAttribute("name");
  out.print(name);
%>

只是 Mitul 回答的一个补充 我建议你使用EL。这是一种简化的方法。

而不是 String name = request.getSession().getAttribute("name"); 使用 ${sessionScope.name} 它会给你想要的输出。

最好的部分是范围解析是自动完成的。因此,这里 name 可以按顺序来自页面、请求、会话或应用程序范围。如果对于特定实例由于名称冲突而需要覆盖它,您可以将范围明确指定为