Model view controller 从Servlet到JSP的转发

Model view controller 从Servlet到JSP的转发,model-view-controller,jsp,el,Model View Controller,Jsp,El,我正在尝试实现MVC2模型。 我有一个Servlet,它从会话bean获取数据,并将实体从Servlet转发到jsp: public class MyServlet extends HttpServlet{ @EJB UserFacade userFacade; //Fetch the user from the session bean Users currUser=userFacade.find(userName); ... request.setAttribute("use

我正在尝试实现MVC2模型。 我有一个Servlet,它从会话bean获取数据,并将实体从Servlet转发到jsp:

public class MyServlet extends HttpServlet{

@EJB UserFacade userFacade;  

//Fetch the user from the session bean  
Users currUser=userFacade.find(userName);  
...
request.setAttribute("user", currUser);  
getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);  
}  
在index.jsp中:我从请求中获取用户,如果我使用Scriptlet标记,我可以打印其名称,但是当我使用EL时,不会打印任何内容:

<@page import="Entities.Users">  
 <"Users currUser = (Users)request.getAttribute("user");">  
 <= currUser.getName() > -OK!  
 ${currUser.name}-Nothing is printed!  

-好的!
${currUser.name}-未打印任何内容!
我应该如何将会话bean包括/转发到JSP中,以便能够使用EL(并避免使用Scriptlet)?

这是实现模型视图控制器的首选方法吗?

EL使用请求属性。您没有
currUser
作为请求属性。如果您尝试
${user.name}
它将起作用

我不知道你所说的“会话bean”是什么意思。EJB是会话bean,但是您没有在视图中显示任何关于它的内容。但是无论如何-EJB在视图中不应该是可访问的


简而言之,您使用的方法是正确的,只需将EL与您设置的属性一起使用。

标题和问题有点混淆。您不是从会话bean进行转发,而是从Servlet进行转发。如果您对英语动词“forwarding”的解释是“存储到范围中”,那么这也不适用。您正在将对会话bean的调用结果存储到作用域中。对于这个问题,整个会话bean和ejb-3.1标记似乎没有必要。