如何使用JSP页面中的参数来搜索Java类中的数据?

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

在此处输入图像描述

这个程序的目的也是从我在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);}); }); }); 

Java的:

 @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进行排序以找到它? 我知道我可以使用直接将java代码注入到JSP页面中,但由于项目要求,我不能在页面本身的脚本中编写脚本,而是在外部链接。

例如,如果用户在位置下检查了“Springfield”,并在学期中说“夏天”,那么它应该在夏天生成一个包含斯普林菲尔德所有课程的表格。 我只是不知道如何/从哪里开始学习如何在servlet中发送这些参数进行搜索。

根据$.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

,那么您也可以使用$.serialize()来发送整个表单数据,而不是手动摆弄单个输入元素的松散值。 这是一个假设它是

的例子:

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

要么

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

也可以看看:

  • 如何使用Servlets和Ajax?