如何将此下拉菜单代码划分为 servlet、dao 和 JSP



我试图避免在JSP文件中使用Java代码。但是我想不出解决方案。谁能帮我?

JSP 文件 :

<select>
<%
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:xe";
String username="sys as sysdba";
String password="sys";
String query="select lecturerFullname from lecturer";
Connection con=DriverManager.getConnection(url,username,password);
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(query);
while(rs.next())
{
%>
    <option><%=rs.getString("lecturerFullname") %></option>
        <%
}
%></select>
    </table>
    <%
    rs.close();
    stmt.close();
    con.close();
    }
catch(Exception e)
{
    e.printStackTrace();
    }


%></select>

这就是我尝试过的...getAttribute(( 在 jsp 中为下拉列表返回 null,但我仍然找不到解决方案。我必须使用 JSTL 吗?我可以避免使用JSTL呵呵...我真的真的希望有人能帮助我。谢谢!!!!

为连接代码创建 Servlet,并使用 JSTL 避免 JSP 文件中的 Java 代码。还可以使用 Request Dispatcher 在 Servlet 中的属性中设置值,然后 JSTL 将允许您使用自己的标记从 servlet 中获取属性,这将解决您在 JSP 中避免使用 Java 代码的问题。

Servlet 示例代码:

request.setAttribute("error_userID", "UserID is not Correct"(;//在属性中设置错误消息 request.getRequestDispatcher("/jsp/common/login.jsp"(.forward(request, response(; 将属性传递给 JSP

示例 JSP 代码

<c:out>

标记将允许您在 jsp 中设置下拉值,值通过请求对象通过 Servlet 产生。

享受编码.. :)谢谢!!

按照Babak Behzadi提到的方式写

  1. 用于数据库连接的独立 DAO 类
  2. Servlet
  3. .JSP

在你的JSP文件中,编写JSTL代码...如

<select name="name" id="id-select">
    <c:forEach items="<%=request.getAttribute("list")%>" var="i"> 
                <option value="${i }">${i }</option>
    </c:forEach>
</select>

另外添加 JSTL jar 并导入到您的 jsp 文件

尝试使用 EL 语法获取列表items="${requestScope.list }">

例如:

讲师POJO班:

class Lecturer {
    ...
    private String fullName;
    ...
   //getters and setters
}

道类:

class MyDAO {
   public List<Lecturer> getLecturers() {
     try{
        Class.forName("oracle.jdbc.driver.OracleDriver");
        String url="jdbc:oracle:thin:@localhost:1521:xe";
        String username="sys as sysdba";
        String password="sys";
        String query="select lecturerFullname from lecturer";
        Connection con=DriverManager.getConnection(url,username,password);
        Statement stmt=con.createStatement();
        ResultSet rs=stmt.executeQuery(query);
        List<Lecturer> list = new LinkedList<Lecturer>();
        while(rs.next()) {
            String fullname= rs.getString("lecturerFullname");
            Lecturer lec = new Lecturer();
            lec.setFullName(fullname);
            ...
            list.add(lec);
        }
     } catch(Exception e) {
     }
     return list;
   }    
}

在您的 servlet 中:

class MyServlet {
   MyDAO myDao = ...;
   doGet() {
      List<Lecturer> list = myDoa.getLecturers();
      request.setAttribute("list",list); 
   }
}

最后在JSP文件中,你需要获取列表并迭代。 ;)

编辑

JSP 文件:

<select>
<%
   List<Lecturer> list = (List<Lecturer>) request.getAttribute("list");
   for(Lecturer lec : list) {
%>
   <option><%=lec.getFullName()%></option>
<%
   }
%>
</select>

最新更新