Получение данных с помощью JSP (JSTL) из Java MVC и JDBC [дубликаты]

На этот вопрос уже есть ответ здесь:

Показать JDBC ResultSet в HTML на странице JSP с использованием шаблона MVC и DAO 5 ответов

Я новичок в сервлетах и ​​веб-программировании MVC. До сих пор я разработал базовый проект CRUD и хотел бы добавить функцию поиска. Я хотел бы использовать файл JSP для связи с сервлетами и использовать тег (у меня возникают проблемы при формулировке вопроса, но я надеюсь, что мой код ниже прояснит его).

Часть Моего ДАО

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>

Я хотел бы получить хорошее объяснение этого кода, поскольку большая его часть взята из учебников и т. Д., И я очень заинтересован в изучении. Поэтому я хотел бы, чтобы форма принимала пользовательский ввод и извлекала курсы, соответствующие запросу, и отображала курс или, возможно, курсы, если более одного курса соответствовало названию. В данный момент я получаю ошибки "ресурс не найден".

В качестве дополнительного вопроса, если мне позволено, какова форма данных между представлением и контроллером? Есть ли способ отрегулировать его или заставить его принимать JSON / XML? Как я мог превратить этот простой MVC в RESTFUL сервис? Я не ожидаю сложных ответов, только некоторые указатели в правильном направлении. В целом я нашел это очень приятным и сложным. Спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос