由于刚用JSP,对于很多问题都不是太明白. 比如在一个JSP页面中,如果有三个按钮,分别为:新增,删除和修改.那么当客户端用户在点击这个三个不同的按钮时,JSP是如何根据按钮的不同而执行不同的程序呢? 比如点击新增按钮,jsp程序将执行在数据库中插入一条新纪录的操作. 不知道现在jsp比较常用的方法是怎样解决这个问题,请高手帮忙,谢谢!
备注:不要javascript方案,因为有些东西是javascript做不到的. 

解决方案 »

  1.   

    不用JS的话,3个按钮,3个不同的FORM ACTION也可以啊
      

  2.   

    如果没有使用框架,比如struts1或者struts2的话。还是建议使用js修改form中的action。然后提交submit!
      

  3.   

    既然没有使用框架,那就是纯jsp代码了。(我估计楼主是从CS架构转来的,所有操作时一个窗口,这里就比作成一个jsp页面好了,呵呵。)
    在提交jsp表单的时候在action地址后面加一个参数来区分不同的提交,比如
    ....../user.jsp?method=add
    ....../user.jsp?method=modify
    ....../user.jsp?method=delete
    不过,js还是要用的,就是拼上面的地址操作参数method,除非你是3个不同的表单,地址就直接写死好了。
      

  4.   

    增加个hidden的input控件,根据按钮赋不同的值。
      

  5.   

    使用js,分别提交到不同的action
      

  6.   

    不用js的话还是有点复杂!提交不同的form就可以了!
      

  7.   

    最简单的方法是使用JS控制,跳到不同的Action或者跳到同一个Action带不同的参数。这样代码比较简单清晰。
      

  8.   

    action="servlet or tag"
    让它去处理查询插入
      

  9.   

    楼上的都说使用form ,不是这样的
    要保存到数据库的数据才使用表单
    在这里只需要一个<a href="add.jsp?id=xxx"
    说说我的建议:
    纯jsp
    新增 add.jsp
    修改 modify.jsp
    删除 在当前页执行
    每一个内容读出来后,都有一个id,所以可以直接传递参数 
    add.jsp?id=xxx
    modify.jsp?id=xxx
    执行删除的页?id=xxx用servlet,可以写一个调遣器继承servlet
    根据判断请求的参数执行相应的操作
      

  10.   

    看看>>>>>>>>>>>>>>>>>>
      

  11.   

    汗、14楼的你那是个链接好不好,楼主要的是button
    简单的做法是每个button对应不同的js方法或者对应一个传参的js方法
    然后在js方法里设置action的跳转和提交
      

  12.   

    不用js的话。用jstl标签试试,也是对参数的处理
      

  13.   

    你说的对,以前是转搞Oracle和SQL Server数据库的,也搞过CS架构的程序,还搞过.net架构,刚接触到jsp,想弄明白这期间的不同.
      

  14.   

    按妞的onclick事件跳转到action中做处理
    window.location.href='';
    ....../user.jsp?method=add
    ....../user.jsp?method=modify
    ....../user.jsp?method=delete
      

  15.   

    小声问问楼主Javascript你认为做不到什么呢? 嫌它响应速度太快了吗?
    Tag: www.d-niu.com
      

  16.   

    楼主,我也是从CS转到BS的。体会很深
    CS和BS虽然在设计模式上基本是共通的,但在开发架构上有很大的不同。
    因为CS的运行代码在客户端,并且可以访问本机的任何资源,所以你会觉得很多非常简单的操作到了BS会很麻烦。因为BS的运行代码大多在服务器端,jsp的代码都是在服务器端运行的,所以你不能简单的用过去的CS窗口代替现在的jsp页面。
    过去在CS窗口响应事件很简单,只需加3个按钮,分别写事件提交数据即可,因为这三个按钮的代码是直接在客户端执行的,相当于BS的js。
    现在jsp页面的代码是在服务器端执行的,当你看到最终页面时,是jsp生成的html代码在浏览器上的显示而已。所以,你要想实现类似CS下窗口的响应事件,就必须要调用客户端的脚本代码,即类似javascript之类的语言。这时和java已经没有任何关系了。
    所以,你说的JavaScript做不到,不是它真的做不到,是你还没有了解BS的运行机制,不知道js和jsp使用场所的区别而已。
    最后总结一下:如果要想动态提交数据(一般是表单form,很少用url提交,除非数据很简单。)就必须要使用js。如果不想用js,又不想用多个表单来区分提交数据。也可以使用3个submit标签按钮提交,在服务器判断那个submit有值就可区分用户点击了哪个按钮。注意,用普通的button标签不行,因为它本身的值不能被提交到服务器,如果要用就又要使用js了。呵呵,不知道说明白了没有。
      

  17.   

    很简单,通过js控制form要提交的action,<form name="thisform" method="post">
         <input type="button" value="添加" onclick="add()"/>
    </form>
    function add() {
         document.form的name.action="要提交的地方";
         document.form的name.submit();
    }这里只写一个添加的,修改,删除这么写也可以,也可以把他们三个写在一个方法里,然后通过传参数过来判断具体点击的是哪个按钮
      

  18.   


    感谢,你说的很明白,这些道理我还是比较能容易接受的,因为搞过.net,在这方面.net都能很轻松的做到.所以我是想了解一下jsp是否也可以和.net一样执行服务器响应事件.
      

  19.   


    了解,继续关注大家的回答,好好的了解一下.Thanks a lot!
      

  20.   

    第一、上面说的那种,用超链接<a href=" **/**/**servlet?method=add"是么的第二、使用AJAX和JQUERY结合的异步传输技术,代码全是封装好的,调用的话很简单,但是如果不懂得话就不行了,进我的共享的资源空间看一下,我写了5~6个关于这种封装使用的小例子,全是调试通过的,你可以看看能不能帮上你
      

  21.   

    可以在表单里面加一个隐藏域,区分是哪个按钮事件,表单跳转到同一个方法里面,调用同一个方法,在方法里面根据要求调用不同事件。action里面的方法可以
    if (add){
    ……
    }else if (update){
    ……
    }else if (delete){
    ……}
      

  22.   

    呵呵
    隱藏表單域
    onclick="xxx(a)"
    onclick="xxx(b)"
    onclick="xxx(c)"xxx(o)
    獲取O提交到不同的action里去
      

  23.   

    url后加type
    type=add|modify|deleteaction里:request.getParameter("type")
      

  24.   

    javascript很好,很强大!只有你想不到的,没有它做不到的!
      

  25.   

                         javascript很好,很强大!只有你想不到的,没有它做不到的!