java - 如何在jsp的forEach循环中添加 session 属性?

标签 java jsp session model-view-controller onclick

我是java初学者,需要一些帮助。我正在开发一个网络应用程序,允许用户管理他们的文本项目。我使用 Spring 作为框架,并且必须使用 MVC 模型。

一个用户可以拥有多个项目。它们全部显示在“我的项目” View 中。所有项目的列表在 foreach 循环中管理。

我想让这些项目项可点击:当用户点击项目时,必须在新页面中打开它。为此,我必须传递有关哪个项目被点击的信息。我试图将项目名称附加到 jsp 中的 session ,但编译器不接受 onlick 部分。 我的这部分代码摘要如下:

<c:forEach var="project" items="${showProject}">
    <div class="manageListItem" onclick="window.location.assign('/myProjects.secu', 'currentProject.secu')";"<%session.setAttribute("project", ${project.title});>
    <td><c:out value="${project.title}"/></td>
</c:forEach>

有人知道如何解决这个问题吗?如果有任何帮助,我将不胜感激。

最诚挚的问候, 马斯卡

最佳答案

准备工作

  • showProject 位于请求/ session /应用程序范围内,以便您的 jsp 可以使用 EL 进行访问。
  • showProject 属于集合类型

MVC模式

将 java 代码片段放入 jsp View 通常是一个坏主意。 MVC 模式应该在您的情况下使用。您需要在 servlet 中创建一个 servlet 来获取项目列表:

// import omitted
@WebServlet("/getProjects")
public class ProjectServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // service layer that can get a list of projects
        ProjectService projectService = new ProjectService();
        List<Project> projectList = projectService.getListOfProjects();
        request.setAttribute("showProject", projectList);
        request.getRequestDispatcher("/projects.jsp").forward(request,response);
    }
}

在您的projects.jsp中

<c:forEach var="project" items="${showProject}">
    <div>
    <a href="/your/project/singleProjectServlet?pid=${project.id}">${project.title}</a>
    </div>
</c:forEach>

说明

  • 用户点击链接至您的 ProjectServlet
  • 您的 servlet 获取项目列表(来自任何数据源,最有可能是数据库)
  • 然后您的 servlet 保存请求范围内的项目列表
  • 转发到jsp View
  • 您的 jsp View 将使用 EL 从请求范围获取项目列表
  • for循环中的每个项目标题都是一个指向单个ProjectServlet的链接
  • 在 singleProjectServet 中,您将获取 pid 查询参数并执行您想要的任何操作,例如检索项目详细信息或将其保存在 session 中。
    以下是如何在 Servlet 的 session 中保存对象:

    request.getSession().setAttribute("project", projectObject);

  • 通过查询参数中传递的pid获取projectObject

从这里开始

很难将初学者可能需要的所有内容都放在这个小答案区域中。希望我的回答能引导您走向正确的方向。 在您做任何其他事情之前,强烈推荐这本书:
Murach's Java Servlets and JSP, 3rd Edition (Murach: Training & Reference)

网上还有很多简单的教程可以帮助您入门,只需搜索关键字“jsp servlet mvc”即可。
祝您编码愉快,希望对您有所帮助。

关于java - 如何在jsp的forEach循环中添加 session 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37209015/

相关文章:

java - 如何在 sessionCreated 方法中检索用户输入的数据

java - 如何在jsp页面中调用web服务

php - 不知道为什么这个登录脚本不起作用!

PHP session 安全漏洞?

java - 正则表达式命令未正确执行

java - linux中如何使用Java ProcessBuilder执行./filename

java - bean 类 [java.lang.Class] SpringMVC + Hibernate 的属性 'id' 无效

java - 使用Java在ArangoDB中查询边缘抛出Gson异常

java - 两个组合框之间的共享数据

php - CodeIgniter session 中的 user_data 用来做什么?