Java 在这种情况下,如何在jsp中传递参数

Java 在这种情况下,如何在jsp中传递参数,java,jsp,Java,Jsp,我的数据库结构如下: 这是控制器Servlet的doGet(),如下所示: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { getSubjects(request, response); } 而getSubjects(请求、响应)是: 希望你现在能理解我的问题

我的数据库结构如下:

这是控制器Servlet的doGet(),如下所示:

protected void doGet(HttpServletRequest request,
                    HttpServletResponse response) throws ServletException, IOException {
    getSubjects(request, response);
}
而getSubjects(请求、响应)是:

希望你现在能理解我的问题

更新 我是这样调试的:

private void getSubjects(HttpServletRequest request,
        HttpServletResponse response) throws ServletException{
    try {
        List<Subject> subjects = subjectDAO.subjectList();
        List<Page> pages = null;
        for (int i = 0; i < subjects.size(); i++) {
            pages = pageDAO.topicList(subjects.get(i).getSubjectId());
            System.out.println("List id is " + subjects.get(i).getSubjectId());
                            for (int i = 0; i < subjects.size(); i++) {
            pages = pageDAO.topicList(subjects.get(i).getSubjectId());
            System.out.println("List id is " + subjects.get(i).getSubjectId());
            for (int j = 0; j < pages.size(); j++) {                    
                System.out.println("Topics are " +pages.get(j).getTopicName());
            }
        }
        }
        request.setAttribute("subjects", subjects);
        request.setAttribute("pages", pages);
        getServletContext().getRequestDispatcher("/content.jsp").forward(
                request, response);
    } catch (Exception e) {             
        throw new ServletException("Cannot obtain subjects from DB", e.getCause());
    }
}
这是正确的,但不能得到这项工作

<c:forEach items="${pages}" var="page">
     <li
       <c:catch>
         <c:choose>
           <c:when test="${page.pageId == param.topic_id}">...


好的,我必须执行类似的任务。 我使用了一个控制器servlet。然后是一个数据库对象,它使用类来处理从数据库中检索数据的过程。 您似乎没有检查发送到servlet的“action”参数

if (action.equalsIgnoreCase("getTopic")){
            int SubjectId = Integer.parseInt(request.getParameter("SubjectId"));
            dao.getTopic(SubjectId);
            forward = "myjsp.jsp";
            request.setAttribute("subjects", dao.getAllSubjects());    
        } else if (action.equalsIgnoreCase("listSubjects")){
            forward = "myjsp.jsp";
            request.setAttribute("categories", dao.getAllSubjects());

        } else {
            forward = "myjsp.jsp";
        }

        RequestDispatcher view = request.getRequestDispatcher(forward);
        view.forward(request, response);
    }

如果要从地图获取页面,请尝试以下方法(未测试):

private void getSubjects(HttpServletRequest请求,HttpServletResponse响应)
抛出ServletException{
试一试{
List subjects=subjectDAO.subjectList();
列表页=空;
Map subjectPageMap=null;
if(subjects!=null&&subjects.size()>0){
subjectPageMap=新建HashMap();
用于(主题:主题){
pages=pageDAO.topicList(subject.getSubjectId());
pages=pages!=null&&pages.size()>0?pages:new ArrayList();
subjectPageMap.put(subject.getSubjectId(),pages);
}
}
request.setAttribute(“主题”,主题);
setAttribute(“subjectPageMap”,subjectPageMap);
getServletContext().getRequestDispatcher(“/view.jsp”).forward(
请求、答复);
}捕获(例外e){
抛出新的ServletException(“Error”,例如getCause());
}
}

您好,对不起,您的问题是什么?当您获取主题时,传递第一个主题id以在第一次加载页面时获取其页面,然后当更改主题时,传递主题id以返回操作并相应地获取页面。@JohnHogan请查看我的更新内容question@ParkashKumar请参阅我更新的问题
request.getParameter(“subc\u id”)
Map subjectPageMap=null
Map处出错您的主体的数据类型是什么?我键入的是
String
唉!但我还是没收到回信,伙计!但为什么呢?若你们的方法(pageDAO.topicList)对于给定的主题运行良好,那个么它应该填充地图。尝试调试代码并找到问题的根源。共享异常,如果您无法处理。
 List<Page> pages = pageDAO.topicList(subjectId);
 request.setAttribute("pages", pages);
private void getSubjects(HttpServletRequest request,
        HttpServletResponse response) throws ServletException{
    try {
        List<Subject> subjects = subjectDAO.subjectList();
        List<Page> pages = null;
        for (int i = 0; i < subjects.size(); i++) {
            pages = pageDAO.topicList(subjects.get(i).getSubjectId());
            System.out.println("List id is " + subjects.get(i).getSubjectId());
                            for (int i = 0; i < subjects.size(); i++) {
            pages = pageDAO.topicList(subjects.get(i).getSubjectId());
            System.out.println("List id is " + subjects.get(i).getSubjectId());
            for (int j = 0; j < pages.size(); j++) {                    
                System.out.println("Topics are " +pages.get(j).getTopicName());
            }
        }
        }
        request.setAttribute("subjects", subjects);
        request.setAttribute("pages", pages);
        getServletContext().getRequestDispatcher("/content.jsp").forward(
                request, response);
    } catch (Exception e) {             
        throw new ServletException("Cannot obtain subjects from DB", e.getCause());
    }
}
List id is 1
Topics are App User Interface
List id is 2
Topics are Java Basics
Topics are OOP
List id is 3
List id is 4
<c:forEach items="${pages}" var="page">
     <li
       <c:catch>
         <c:choose>
           <c:when test="${page.pageId == param.topic_id}">...
if (action.equalsIgnoreCase("getTopic")){
            int SubjectId = Integer.parseInt(request.getParameter("SubjectId"));
            dao.getTopic(SubjectId);
            forward = "myjsp.jsp";
            request.setAttribute("subjects", dao.getAllSubjects());    
        } else if (action.equalsIgnoreCase("listSubjects")){
            forward = "myjsp.jsp";
            request.setAttribute("categories", dao.getAllSubjects());

        } else {
            forward = "myjsp.jsp";
        }

        RequestDispatcher view = request.getRequestDispatcher(forward);
        view.forward(request, response);
    }
private void getSubjects(HttpServletRequest request, HttpServletResponse response) 
throws ServletException{

    try {
        List<Subject> subjects = subjectDAO.subjectList();
        List<Page> pages = null;
        Map<String, ArrayList<Page>> subjectPageMap = null;

        if(subjects!= null && subjects.size() > 0){
            subjectPageMap = new HashMap<String, ArrayList<Page>>();
            for(Subject subject : subjects){
                pages = pageDAO.topicList(subject.getSubjectId());
                pages = pages != null && pages.size() > 0 ? pages : new ArrayList<Page>();
                subjectPageMap.put(subject.getSubjectId(), pages);
            }
        }

        request.setAttribute("subjects", subjects);
        request.setAttribute("subjectPageMap", subjectPageMap);
        getServletContext().getRequestDispatcher("/view.jsp").forward(
                                request, response);
    } catch (Exception e) {
        throw new ServletException("Error ", e.getCause());
    }
}