java - servlet 不显示连接两个表的所有匹配结果

标签 java jsp servlets model-view-controller

我的 JSP 中有该字段 <c:param name="names" value="${tempstudent.name}"/>为了显示用户名和我的 servlet,请将此字段设置为 String names=request.getParameter("names")并将其发送到名为public List <studentrgister> showcourse(String names)的方法中的student_db_util类作为一个参数,它的任务是获取名称并在我的 sql 查询中使用它来显示 2 个表的匹配结果(mytest 表有一个名字、姓氏、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>

servlet方法

    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);

        }

    }

最佳答案

此 List 声明位于方法内部,但该方法返回变量, 我假设学生变量应该在要使用的可访问范围内的方法之外。您应该在类中全局声明 List,以便可以在方法外部访问它,或者如果您在外部有另一个学生变量要返回它,则无法返回在方法中声明的局部作用域变量。

List<studentrgister> students = new ArrayList<>();

关于java - servlet 不显示连接两个表的所有匹配结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62097786/

相关文章:

java - Spring MVC 与 AspectJ

java - 什么是用于在 JSON 对象数组中选择字段值的 Rest Assured 正确 JsonPath get() 格式

java - 我如何从 url (java) 获取 JSON 作为字符串

java - XML解析器java跳过dtd验证

java - 对象为空,但应用程序的行为就像不是

java - 将 HTML 链接到 JSP 页面

mysql - 如何在Tomcat 7中使用Servlet和JSP在MySQL数据库中插入图像

java - 从 servlet 调用 servlet

java - 如何在 servlet 中识别调用来自 href 链接点击?

java - Junit 使用正确的资源