Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将这个下拉菜单代码划分为servlet、dao和JSP?_Jsp_Servlets - Fatal编程技术网

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

如何将这个下拉菜单代码划分为servlet、dao和JSP?,jsp,servlets,Jsp,Servlets,我试图避免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 lec

我试图避免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>

这就是我试过的。。。但我还是找不到解决办法。我必须使用JSTL吗?我可以避免使用JSTL hehe。。。我真的很希望有人能帮助我。谢谢

例如:

讲师POJO课程:

class Lecturer {

    ...
    private String fullName;
    ...

   //getters and setters
}
DAO类:

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;
   }    
}
类MyDAO{
公开讲师名单(){
试一试{
类forName(“oracle.jdbc.driver.OracleDriver”);
String url=“jdbc:oracle:thin:@localhost:1521:xe”;
字符串username=“sysas sysdba”;
字符串password=“sys”;
String query=“从讲师中选择讲师全名”;
Connection con=DriverManager.getConnection(url、用户名、密码);
语句stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(查询);
列表=新建LinkedList();
while(rs.next()){
String fullname=rs.getString(“讲师fullname”);
讲师lec=新讲师();
lec.setFullName(全名);
...
列表。添加(lec);
}
}捕获(例外e){
}
退货清单;
}    
}
在servlet中:

class MyServlet {

   MyDAO myDao = ...;

   doGet() {

      List<Lecturer> list = myDoa.getLecturers();
      request.setAttribute("list",list); 

   }
}
classmyservlet{
MyDAO MyDAO=。。。;
多吉特(){
List=myDoa.get讲师();
setAttribute(“列表”,列表);
}
}
最后,在jsp文件中,您需要获取列表并进行迭代

已编辑

JSP文件:

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

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

Servlet示例代码:

setAttribute(“error_userID”,“userID不正确”)//在属性中设置错误消息 getRequestDispatcher(“/jsp/common/login.jsp”).forward(请求,响应)//将属性传递给jsp

示例JSP代码

名为的标记也可以让您在jsp中设置下拉列表值,该值通过请求对象通过Servlet提供

享受编码……)
谢谢

如Babak Behzadi所述写作

  • 数据库连接的单独DAO类
  • Servlet
  • JSP
  • 在JSP文件中,编写JSTL代码。。。作为

    
    ${i}
    
    您是否将列表或数据集添加到servlet中?我没有添加,因为我真的不明白list worksDataSet是一个游标,所以您可以在其打开时对其进行迭代!!!您最好遍历dataset并获取行,然后将它们放入POJO类或实体类对象的列表中。例如,如果您需要有关列表对象的更多信息,我希望这有助于您的欢迎,我已经添加了一个示例作为答案检查它,我希望它能帮助您非常感谢先生:)学习JSTL链接:非常感谢先生:)谢谢先生:)我粘贴了您的代码以供试用,但我收到错误:Attribute value request.getAttribute(“列表”)引用了“在值中使用时必须转义…为什么?我知道我做错了
    ${i.讲师fullname}
    在属性“items”中获取列表,尝试使用EL-synatx作为给定项=“${requestScope.list}”查看一下,非常感谢,先生:)jsp lol有问题:(问题是什么??)上面的一个人告诉我在jsp中添加代码,但我知道这是错误的lol:
    ${i.讲师fullname}
    我已经在答案中添加了jsp文件部分,没有必要使用jstl,您可以为每个部分编写自己的代码。)非常感谢,先生:)