想请问一下,jsp中怎么绑定数据库和下拉列表。然后根据选中的项,再对数据库做出相应操作。
比如我有一个表student(stuID,stuName),我想把stuName的值绑定到jsp的下拉列表当中,然后再根据选中的stuName,对数据库进行更新。比如删除这个stuName的记录。参考了一些帖子,自己试了一下,但还是不行。所以上来求助,谢谢大家了!

解决方案 »

  1.   

    太复杂了,为了回答你这个题,还要建数据库
    只给你思路吧1. 取得所有的集合 list
    2. 在jsp页面中的<select name="stuId">
    3. 遍历 list (for循环)
    4. <option value="<%=student.getId()%>"><%=student.getName()%></option>
    5. 结束 select </select>
    6. 注意 select 要放在 form中
    7. 在响应的页面中 使用  request.getParameterValue("stuId") 就可以得到你选择的ID
      

  2.   

    如果想要实现.net那种控件直接绑定数据库肯定不可能,只能从数据库中取出数据封装后在页面显示,页面操作之后后台通过程序去更新数据库
      

  3.   

    需要用到AJAX,
    有点复杂,不知道你能不能看懂:
    准备一个JS文件
    function GetXmlHttpObject(){
    var xmlHttp=null;
    try{
       // Firefox, Opera 8.0+, Safari
       xmlHttp=new XMLHttpRequest();
       }catch (e){
       // Internet Explorer
       try{
         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
         }catch (e){
         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
       }
    return xmlHttp;
    }function loadXMLDoc(filepath){
    var xmlDoc = null;
    try{//Internet Explorer
    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    }catch(e){
    try{//Firefox, Mozilla, Opera, etc.
    xmlDoc = document.implementation.createDocument("","",null);
    }catch(e){
    alert(e.message);
    }
    } try{
    xmlDoc.async = false;
    xmlDoc.load(filepath);
    }catch(e){
    alert(e.message)
    }
    return xmlDoc;
    }function loadXMLString(str){
    var xmlStr = null;
    try{//Internet Explorer
    xmlStr = new ActiveXObject("Microsoft.XMLDOM");
    xmlStr.async="false";
    xmlStr.loadXML(str);
    }catch(e){
    try{//Firefox, Mozilla, Opera, etc.
    var parser=new DOMParser();
    xmlStr = parser.parseFromString(str,"text/xml");
    }catch(e){
    alert(e.message);
    }
    }
    return xmlStr;
    }JSP:
    <%@ page language="java" pageEncoding="utf-8"%>
    <%@ include file="/page/commons/basePath.jsp"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>AJAX-CHAPTER1</title>
    <meta http-equiv="cache-control" content="no-cache" />
    <script type="text/javascript" src="<%=basePath%>/script/my.js"></script>
    <script type="text/javascript">
    function ajaxFunction(area_pid, selectObj){
    var xmlHttp = null;
    xmlHttp = GetXmlHttpObject();
    if(xmlHttp == null){
    alert("您的浏览器不支持AJAX");
    return ;
    }


    //发送请求,处理结果
    xmlHttp.onreadystatechange=function(){
    //处理响应的结果
    //alert(xmlHttp.readyState);
    if (xmlHttp.readyState==4){
    var text = xmlHttp.responseText;
    while(selectObj.childNodes.length > 0){    
    selectObj.removeChild(selectObj.childNodes[0]);
    }
    addNode("", "请选择", selectObj);
    var xmlDoc = loadXMLString(text);
    var areaNodes = xmlDoc.getElementsByTagName("area");
    for(var i=0; i<areaNodes.length; i++){
    var id = areaNodes[i].getAttributeNode("id").nodeValue;
    var name = areaNodes[i].getAttributeNode("name").nodeValue;
    addNode(id, name, selectObj);
    }
    }
    };
    xmlHttp.open("GET","<%=basePath%>/Chapter1Servlet?pid=" + area_pid + "&time=" + new Date().getTime(),true);
    xmlHttp.send(null);
    }

    function addNode(attr, text, obj){
    var option = document.createElement("option");
    option.setAttribute("value",attr);
    var optionText = document.createTextNode(text);
    option.appendChild(optionText);
    obj.appendChild(option);
    }
    </script>
    </head>
    <body onload="ajaxFunction(0, document.getElementById('province'))">
    省份:
    <select id="province"
    onchange="ajaxFunction(this.value, document.getElementById('city'))">
    <option value="">
    请选择
    </option>
    </select>
    城市:
    <select id="city">
    <option value="">
    请选择
    </option>
    </select>
    </body>
    </html>
      

  4.   

    Servlet:package chapter1.action;import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import chapter1.model.Area;
    import chapter1.service.Chapter1Service;
    import chapter1.service.impl.Chapter1ServiceImpl;public class Chapter1Servlet extends HttpServlet {
    private Chapter1Service chapter1Service;
    @Override
    public void init() throws ServletException {
    super.init();
    chapter1Service = new Chapter1ServiceImpl();
    } public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doPost(request, response);
    } public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    List<Area> list = new ArrayList<Area>();
    PrintWriter out = response.getWriter();
    int pid = -1;
    try{
    pid = Integer.parseInt(request.getParameter("pid"));
    }catch(NumberFormatException e){

    }
    if(pid != -1){
    list = chapter1Service.findAreaByPid(pid);
    out.print(getAreaXML(list));
    }else{
    out.print("");
    }
    out.flush();
    out.close();
    }

    private String getAreaXML(List<Area> list) {
    String str = "<root>";
    if (list != null && list.size() > 0) {
    for (Area area : list) {
    str += "<area id='" + area.getAreaId() + "' name='"
    + area.getAreaName() + "' pid='" + area.getAreaPid()
    + "'/>";
    }
    }
    str += "</root>";
    return str;
    }
    }还需要建立数据库,需要了解AJAX
      

  5.   

    如何根据选中的值,对数据进行操作
    你选中一个select 都是有个value的 之后到后台,action中处理呗 得到一个value做一个操作
    可以不用Ajax,但ajax 会很好解决这个问题的,