Recuperando datos con JSP (JSTL) de un Java MVC y JDBC [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Mostrar ResultSet JDBC en HTML en la página JSP utilizando el patrón MVC y DAO 5 respuestas

Soy nuevo en la programación web de Servlets y MVC. Hasta ahora he desarrollado un proyecto CRUD básico y me gustaría agregar una función de búsqueda. Me gustaría usar un archivo JSP para comunicarme con los servlets y usar la etiqueta (tengo problemas para redactar la pregunta, pero espero que mi código a continuación lo aclare).

Parte de mi DAO

public List<Courses> getAllCourses() {
    // TODO Auto-generated method stub
    List<Courses> courseList = new ArrayList<Courses>();
    try {
        Statement statement = conn.createStatement();
        ResultSet resultSet = statement.executeQuery( "select * from courses" );
        while( resultSet.next() ) {
            Courses course = new Courses();
            course.setCourseid( resultSet.getInt( "courseid" ) );
            course.setCoursename( resultSet.getString( "coursename" ) );
            course.setFaculty( resultSet.getString( "faculty" ) );
            course.setCourseSpecification( resultSet.getString( "courseSpecification" ) );
            course.setDuration( resultSet.getInt( "duration" ) );
            courseList.add(course);
        }
        resultSet.close();
        statement.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return courseList;
}

public void findCourse(Courses course) {

try { Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery( "select * from courses where coursename=?" );
while( resultSet.next() ) {
Courses course1 = new Courses();
course1.setCourseid( resultSet.getInt( "courseid" ) );
course1.setCoursename( resultSet.getString( "coursename" ) );
course1.setFaculty( resultSet.getString( "faculty" ) );
course1.setCourseSpecification(resultSet.getString("courseSpecification"));
course1.setDuration( resultSet.getInt( "duration" ) );

}
resultSet.close();
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
return;
}

Servelet

@WebServlet(name = "GetStudent", urlPatterns = {"/GetStudent"})
public class FindCourse extends HttpServlet {

private static final long serialVersionUID = 1L;
  @EJB private CourseDao courseDAO;


protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    Courses course = new Courses();
    String coursename = request.getParameter("coursename");   

    Courses course1= courseDAO.getCourse(course, coursename);
    request.setAttribute("Courses", course1);
    request.getRequestDispatcher("findCourse.jsp").forward(request, response);
}


@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
}


@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
}

}

JSP

<form action="FindCourse" method="GET">
<input type="text" name="coursename" />
<c:forEach var="course" items="${courses}">
<td><a href="${pageContext.request.contextPath}/FindCoursecoursename=${course.coursename}">${course.coursename}</a></td>

Me encantaría una buena explicación de este código, ya que la mayor parte está tomada de tutoriales, etc., y estoy muy interesado en aprender. Por lo tanto, me gustaría que el formulario tome la entrada del usuario y recupere los cursos que coinciden con la consulta y muestre el curso o posiblemente los cursos si más de un curso coincide con el nombre. En este momento recibo errores de "recurso no encontrado".

Como pregunta adicional, si se me permite, ¿cuál es la forma de los datos entre la vista y el controlador? ¿Hay alguna manera de regularlo u obligarlo a tomar JSON / XML? ¿Cómo podría hacer de este MVC simple en un servicio RESTFUL? No espero respuestas complejas, solo algunos consejos en la dirección correcta. En general, he encontrado esto muy agradable y desafiante. Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta