【问题标题】:JSP & MVC: Passing object from controller to jsp pagesJSP & MVC:将对象从控制器传递到 jsp 页面
【发布时间】:2014-12-02 14:26:36
【问题描述】:

我在 jsp 中使用 MVC 设计模式。我可以将对象传递给单个 jsp 页面,但不能传递给其他 jsp 页面(可能有很多页面)。我想使用对象(或通过 getter)显示教师类的用户名和密码。

public class Teacher {
    String userName;
    String password;
    /*GETTERS AND SETTERS*/
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    String userName;
    String password;

    userName = request.getParameter("tUserNameTxt");
    password = request.getParameter("tPasswordTxt");

    Teacher teacher = new Teacher();
    teacher.setUserName(userName);
    teacher.setPassword(password);

    request.setAttribute("teacher", teacher);

    RequestDispatcher dispatch;
    dispatch = request.getRequestDispatcher("login-success-teacher.jsp");
    dispatch.forward(request, response);
}

    Data to be displayed on pages:
    <body>
    <%
        Teacher teacher = (Teacher) request.getAttribute("teacher");
        session.setAttribute("teacher", teacher);
        out.println("Welcome "+ teacher.getUserName());
        out.println("Your ID is "+ teacher.getPassword());
    %>
    <h1>
        <a href="page2.jsp">Click Here</a>
    </h1>
    </body>

    Page 2:
    <body>
    <%
        Teacher teacher = (Teacher) request.getAttribute("teacher");
        session.setAttribute("teacher", teacher);
        out.println("Welcome "+ teacher.getUserName());
        out.println("Your ID is "+ teacher.getPassword());
    %>
    </body>

【问题讨论】:

    标签: java jsp model-view-controller


    【解决方案1】:

    在 Servlet 的会话范围内而不是在特定页面中设置 Teacher teacher

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        //...
        Teacher teacher = new Teacher();
        //...
        request.getSession().setAttribute("teacher", teacher);
        //...
    }
    

    然后,检索它并在您的 JSP 代码中毫无问题地使用它:

    Page1.jsp:

    <body>
        Welcome ${teacher.username}. Your ID is ${teacher.password}
        <h1>
            <a href="page2.jsp">Click Here</a>
        </h1>
    </body>
    

    Page2.jsp:

    <body>
        Welcome ${teacher.username}. Your ID is ${teacher.password}
    </body>
    

    提示:

    • Do not use scriptlets anymore
    • 不要使用密码字段作为 ID。甚至不用于测试目的。分配一个正确的 ID,不要将(真实)密码存储在数据库中的任何地方,至少要经过哈希处理。

    【讨论】:

      猜你喜欢
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 2011-06-23
      • 2013-11-23
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多