我有这个 Servlet,我将在其中接收对象的名称和密码,request
以便稍后验证它是否存在于数据库中并检查其全名。但是一旦创建了类型对象,UsuarioDTO
我不知道如何将其保存在会话中以nombreCompleto
在各种JSP中显示属性:
@WebServlet("/One")
public class One extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
/* Se crea el usuario */
UsuarioDTO usuario = new UsuarioDTO();
usuario.setIdUsuario(1);
usuario.setNombre("jperez");
usuario.setNombreCompleto("Juan Pérez López");
//Aquí necesito meter el usuario a la sesión antes de que se
//vaya a la página principal
response.sendRedirect(request.getContextPath() + "/principal.jsp");
}
}
这是DTO:
public class UsuarioDTO {
private long idUsuario;
private String nombre;
private String nombreCompleto;
public long getIdUsuario() {
return idUsuario;
}
public void setIdUsuario(long idUsuario) {
this.idUsuario = idUsuario;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getNombreCompleto() {
return nombreCompleto;
}
public void setNombreCompleto(String nombreCompleto) {
this.nombreCompleto = nombreCompleto;
}
}
➊ 首先你检索对象
HttpSession
:在界面上
HttpSession
,Arun Gupta 1说:➋ 然后为您的对象分配一个名称作为会话中的属性。也就是说,例如:
在您的代码中:
➌ 在您的 JSP (
principal.jsp
) 中,您可以使用表达式语言(EL)来显示数据。这是,例如:✱附录
因为使用了方法
response.sendRedirect
,浏览器要再次请求服务器显示对应的JSP(浏览器中的URL发生变化),所以需要在会话中有对象,即在对象中session
。但是,如果您要使用该方法
request.getRequestDispatcher
,您只需要在当前请求中包含该对象,即在该对象中request
。并且浏览器不需要发出另一个请求(在这种情况下,浏览器 URL 保持不变)。成绩
必须按如下方式创建会话变量:
您可以设置所需的属性并使用 get 属性来获取它们:
在您的 JSP 中,它看起来像这样:
如需进一步参考,您可以使用以下教程:
小服务程序会话
你必须在你的 java 类中创建一个 session 类型的对象:
然后,您必须添加要存储的属性,为其分配标识符和值,在您的情况下:
这样,您已经在会话中存储了一个值。
为了检索存储的值,您必须使用 Get 方法,例如:
通过这种方式,您现在可以直接从 JSP 传输或检索它。
干杯
我不得不劝阻那些基于 scriptlet(the
<% %>
和 the<%= %>
)的答案,这些答案被认为已被弃用。如果您正在使用 scriptlet 进行项目,请保持这种方式,但新项目应使用表达式语言 (EL) 或至少 JSTL。要将对象放入 a 中
session
,我同意其他问题,但我建议将整个 DTO 放入。要通过 EL 使用 bean,只需执行
在 JSP 中。这将在各种范围(页面、请求、会话和应用程序)中查找 bean
usuario
,当它找到它时,它将调用getNombreCompleto()
.它也可以在 JSTL 标签中使用:
如果您的平台还不支持 EL,您可以使用 JSP 标签
useBean
和getAttribute
顺便说一句,如果bean的数据与请求相关而不与会话相关,最正常的做法是将bean保存为
request
(request.setAttribute()
)的属性并进行转发而不是重定向1;这意味着数据不会与其他同时请求共享。在这种情况下,JSP 不会改变。1重定向向客户端(浏览器)指示它必须重定向到新页面,从而创建新请求。Forward 继续在传递给它的 URL 处处理相同的请求,浏览器什么也不做。