Daten mit JSP (JSTL) von einer Java MVC und JDBC abrufen [duplizieren]

Diese Frage hat hier bereits eine Antwort:

JDBC-Ergebnismenge in HTML in JSP-Seite mit MVC- und DAO-Muster anzeigen 5 Antworten

Ich bin neu in Servlets und der MVC-Webprogrammierung. Bisher habe ich ein einfaches CRUD-Projekt entwickelt und möchte eine Suchfunktion hinzufügen. Ich möchte eine JSP-Datei verwenden, um mit den Servlets zu kommunizieren und das Tag zu verwende

Part of My 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>

Ich würde eine gute Erklärung dieses Codes lieben, da das meiste davon aus Tutorials usw. stammt und ich sehr lernbegierig bin. Daher möchte ich, dass das Formular Benutzereingaben übernimmt und die Kurse abruft, die der Abfrage entsprechen, und den Kurs oder möglicherweise Kurse anzeigt, wenn mehr als ein Kurs mit dem Namen übereinstimmt. Im Moment erhalte ich die Fehlermeldung "Ressource nicht gefunden".

Als Nebenfrage, wenn ich berechtigt bin, wie lauten die Daten zwischen der Ansicht und dem Controller? Gibt es eine Möglichkeit, dies zu regulieren oder zu erzwingen, dass JSON / XML verwendet wird? Wie kann ich aus dieser einfachen MVC einen RESTFUL-Service machen? Ich erwarte keine komplexen Antworten, nur ein paar Hinweise in die richtige Richtung. Insgesamt fand ich das sehr unterhaltsam und herausfordernd. Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage