У меня есть поле в JSP <c:param name="names" value="${tempstudent.name}"/>
для отображения имени пользователя, и мой сервлет берет это поле String names=request.getParameter("names")
и отправляет его классу student_db_util в методе с именем public List <studentrgister> showcourse(String names)
в качестве параметра, который имеет задача взять имена и использовать их в моем запросе sql, чтобы показать результат совпадения из 2 таблиц (таблица mytest, которая имеет столбец firstName, lastName, id и таблицу классов, у которой есть столбец id, class). проблема для этого приложения заключается в том, что в обеих таблицах есть более одного результата совпадения, когда я присоединяюсь к обеим таблицам, но мое приложение отображается только в результате совпадения на моей JSP странице
<body>
<table>
<form action="studentregister" method="get">
<input type="hidden" name ="comand" value="seecourse"/>
<c:forEach var="tempstudent" items="${mycourse}">
<td >${tempstudent.name}</td>
</c:forEach>
</form>
</table>
jsp странице, которая поле имен находится
<form action="studentregister" method="get">
<input type="hidden" name="command" value="pass" />
<table>
<c:forEach var="tempstudent" items="${studentlist}">
<c:url var="seecourse" value="studentregister">
<c:param name="command" value="seecourse"/>
<c:param name="names" value="${tempstudent.name}"/>
</c:url>
<td >${tempstudent.email}</td>
<td >${tempstudent.name}</td>
<a href="${seecourse}"
>
seecourse</a>
</c:forEach>
</table>
</form>
метод сервлета
private void seecourse(HttpServletRequest request, HttpServletResponse response) throws Exception {
String names=request.getParameter("names");
student_db_util.showcourse(names);
List<studentrgister> student=student_db_util.showcourse(names);
request.setAttribute("mycourse", student);
RequestDispatcher rd=request.getRequestDispatcher("/showcourse.jsp");
rd.forward(request,response);
}
метод в классе student_db_util
public List <studentrgister> showcourse(String names) throws Exception {
List<studentrgister> students = new ArrayList<>();
String connectionURL = "jdbc:mysql://localhost:3306/web_student_tracker";
System.out.println("loding the driver");
Statement s=null;
studentrgister mystudent=null;
Connection myConn = null;
myConn= DriverManager.getConnection(connectionURL, "webstudent", "webstudent");
System.out.println("username and password is correect");
PreparedStatement myStmt=null;
ResultSet myRs = null;
String name=names;
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("driver is loaded");
//myConn = dataSource.getConnection();
String sql = "SELECT mytest.firstName,class.name FROM mytest "
+ "INNER JOIN class ON mytest.id=class.id "
+ "where mytest.firstName = ? " ;
PreparedStatement ps = myConn.prepareStatement(sql);
ps.setString(1,name);
myRs=ps.executeQuery();
if (myRs.next()) {
String classname = myRs.getString("name");
//String numbername=myRs.getString("firstName");
mystudent = new studentrgister(classname);
students.add(mystudent);
}
else {
throw new Exception("Could not find student id: " );
}
return students;
}
finally {
close(myConn,myStmt,null);
}
}