1

这是迄今为止我的项目的屏幕截图:

在此处输入图像描述

这个程序的目的也是从我的 servlet 中的 ArrayList 中找到特定的类。您从左侧定义的内容中搜索您想要的课程(即 X 位置的课程、Y 学期和 Z 老师)。到目前为止,使用此代码,我可以检索屏幕截图中显示的每个类:

脚本:

//Serves up the data THIS IS THE WHAT GETS THE TABLE DATA
$('#btnData').click(function() {

    $("#searchAnimation").fadeTo(0,1, function(){
        $.get('daoServlet', function(responseText) {
            $('#dataDisp').html(responseText);
        }).complete(function(){$("#searchAnimation").fadeTo(0,0);});
    });

});

爪哇:

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
{
    //String that gets returned as HTML
    StringBuilder returnAsHTML = new StringBuilder();

    //See if the class is closed, has a lab, or is just a regular class
    for(ClassInfo classes : allClassListings)
    {
        //Class is full, style accordingly
        if(classes.getSectionMeetingInfo().contentEquals("LEC") && classes.getSectionEnrolled().contentEquals("0"))
        {
            returnAsHTML.append(closedClass(classes));
        }
        else if(classes.getSectionMeetingInfo().contentEquals("LAB")) //These are labs, style accordingly
        {
            returnAsHTML.append(labClass(classes));
        }
        else //These are normal classes without lab components
        {
            returnAsHTML.append(openClass(classes));
        }

    }

    response.setContentType("text/html");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(returnAsHTML.toString());
}

我的问题是,我将如何开始发送​​用户在 JSP 页面上选择的数据,然后通过 ArrayList 排序找到它?我知道我可以使用 <% //code %> 直接将 java 代码注入 JSP 页面,但由于项目要求,我不能在页面本身的正文中编写脚本,它全部都在外部链接。

例如,如果用户选中了 Location 下的“Springfield”,并在学期下选择了“Summer”,则它应该生成一个夏季 Springfield 中所有课程的表格。我只是不知道如何/从哪里开始学习如何发送这些参数以在 servlet 中搜索。

4

1 回答 1

1

根据文档,您可以$.get()JS 对象作为第二个参数(data在文档中调用)传递。

因此,以下示例应该为您完成:

// Do your thing to prepare them.
var param1 = "value1";
var param2 = "value2";

// Now send it as JS object.
$.get('daoServlet', { param1: param1, param2: param2 }, function(responseText) {
    // ...
});

它们位于通过HttpServletRequest#getParameter()通常方式可用的 servlet 中。

String param1 = request.getParameter("param1"); // value1
String param2 = request.getParameter("param2"); // value2

如果您实际上是在对 HTML 进行 ajaxifying <form>,那么您还可以使用它$.serialize()来发送整个表单数据,而不是手动摆弄单个输入元素的松散值。这是一个假设它是的示例<form id="search">

$.get('daoServlet', $('#search').serialize(), function(responseText) {
    // ...
});

或者

$('#search').submit(function() {
    $.get('daoServlet', $(this).serialize(), function(responseText) {
            // ...
    });
});

也可以看看:

于 2013-01-22T18:54:41.633 回答