Model view controller 从Servlet到JSP的转发
我正在尝试实现MVC2模型。 我有一个Servlet,它从会话bean获取数据,并将实体从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
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标记似乎没有必要。