Recuperando dados com JSP (JSTL) de um Java MVC e JDBC [duplicado]

Esta pergunta já tem uma resposta aqui:

Mostrar JDBC ResultSet em HTML na página JSP usando o padrão MVC e DAO 5 respostas

Eu sou novo em Servlets e programação web MVC. Até agora, desenvolvi um projeto CRUD básico e gostaria de adicionar uma função de pesquisa. Gostaria de usar um arquivo JSP para se comunicar com os servlets e usar a tag (estou tendo problemas para formular a pergunta, mas espero que meu código abaixo o esclareça).

Parte do meu 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>

Eu adoraria uma boa explicação desse código, pois a maioria é tirada de tutoriais etc. e eu sou muito perspicaz de aprender. Então, eu gostaria que o formulário recebesse a entrada do usuário e recuperasse os cursos que correspondem à consulta e exibisse o curso ou possivelmente os cursos, se mais de um curso corresponder ao nome. No momento, estou recebendo erros de "recurso não encontrado".

Como uma pergunta secundária, se me permitem, qual é a forma dos dados entre a visualização e o controlador? Existe uma maneira de regulamentá-lo ou forçá-lo a usar JSON / XML? Como eu poderia transformar esse MVC simples em um serviço RESTFUL? Não espero respostas complexas, apenas alguns indicadores na direção certa. No geral, eu achei isso muito agradável e desafiador. Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion