Получение данных с помощью 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 сервис? Я не ожидаю сложных ответов, только некоторые указатели в правильном направлении. В целом я нашел это очень приятным и сложным. Спасибо.