有点问题不明白请教大家用例子说明一下会比较清楚我有一个页面,进入这个页面之后,显示一个<table>会显示数据库中人员表中的所有人员信息每个人占一行,在每一行的最后一个字段,是删除字段,我现在在这里写的是超链接,通过拼字符串的方式把一个用户的id传到执行删除操作的Servlet然后去执行相应的操作但是这样的话如果我在地址栏上直接输入地址比如:http://localhost:8080/Test/Delete.do?id=1就可以把这条数据删除掉,数据不够安全.我知道在Session中放登陆用户的对象,执行删除前判断用户是否拥有权限可以解决这个问题现在我想知道有没有其他方法解决这个问题比如在删除字段的位置放一个按扭是Button不是Submit,然后调用JSP的forward动作来进入下一个Servlet这样就可以解决这个问题但现在是不知道如果实现,是否要借助JavaScript盼知道的朋友,高手们指点一二谢谢

解决方案 »

  1.   

    比如在删除字段的位置放一个按扭是Button不是Submit,然后调用JSP的forward动作来进入下一个Servlet这样就可以解决这个问题但现在是不知道如果实现,是否要借助JavaScript
    .............感觉不管理你怎么实现,只要是链接形式的都会把地址显示出来吧, 不过你可以考虑AJAX
      

  2.   


    是的,肯定会显示地址我的意思是说:"想实现点击按扭后用Post方法,而不是Get方法进行页面跳转"
      

  3.   

    可以用POST方式呀,用一隐含的公共FORM就OK了,比如下面的实现
    <script language="javascript">
        removeOne(idValue)
        {
            delForm.delID.value = idValue;
            delForm.submit();        
        }
    </script>
    <form name="delForm" method="post" action="Delete.do">
    <input type="hidden" name="delID">
    </form>
    <input type="button" value ="delete" onclick="removeOne(1)">
    <input type="button" value ="delete" onclick="removeOne(2)">
      

  4.   

    用form表单,将method设置为post,
    这样应该可以实现
      

  5.   

    Delete.do?id=1 你为什么删除的连接要用这样的形式那。。建议改一下例如你点击 删除 后执行相应的sql语句不就行了吗?
      

  6.   

    好象楼上的几位都没看明白我的问题我是想问 如何用button实现页面的forward就是在页面上事先写一个<jsp:forward>我点一下button,就可以把对象的信息封装到request或者session中,然后执行<jsp:forward>命令并保证forward时用的是Post方法而不是把信息写到地址栏上的Get方法我不想用超链接是因为所有的数据都暴露给用户了同时谢谢楼上的几位踊跃参与
      

  7.   

    把提交方式换成post。
    不过最好的方式就是删除之前验证一下。
      

  8.   

    哥们,forward是服务端指令吧,肯定要先提交了东西之后才会走到forward,然后才会到另一个页面,无论如何都要先提交呀,无论是get还是post,还是用我三楼的吧,不会暴露啥吧?
      

  9.   

    只有提交东东才会放进request或session中呀,......
      

  10.   

    嗯,这个我们上周刚过,我们是这样做的:
    -----------------------------------
    1.提交方式用 post ,这样别人就不会看到提交的信息;
    2.设置一个公用 javaScript 函数 来提交的表单;<script language="javaScript">
     function deleUser(){
         document.useList.onSubmit();
     }
    </script>
    ---------------------------------<form name="useList" action="post">
    .....
    <u onClick="deleUser()">删除</u>
    .........
    </form>3.提交表单到 servlet 中, servlet获得 request.getParameter("字段名/id") 要删除字段值如:"张三", 
      然后执行sql语句,如:"delect from 用户表 where 姓名='张三'" ,
      
      返回一个Boolean 类型的 isDele值, 再作判断, 如:
      //成功删除
      if(isDele){ 
         response.sendRedirect("成功删除.jsp");
      }
      else{
         response.sendRedirect("删除失败.jsp");
      }  我们小组就是这样做的,不知是否还有更好的方法...
      

  11.   

    http://localhost:8080/Test/Delete.do?id=1 
    连接地址后面跟个<html:hidden>形式的值,在后台判断隐藏字段的值
    行不?
      

  12.   


    这个应该不行,因为你用submit事件处理就会把表单上的所有数据都提交上去而我的这个用户表是在表单里我只想提交我点的那一行
      

  13.   


    呵呵!不是你也可以在页面跳转前把信息放到request中或者session中
      

  14.   

    一定要后台权限验证
    再就是自己写个filter也行
      

  15.   


    噢,这个咋做呀,没做过,而且forward是在服务端执行呀,不提交的话,不可能在客户端做吧
      

  16.   

    js 操作request或是session,没做过
      

  17.   

    一个是客户端,一个是服务端,不可能设置在request中,可以用ajax设置到session中引用 16 楼 speeder2008 的回复:
    嗯,这个我们上周刚过,我们是这样做的: 
    ----------------------------------- 
    1.提交方式用 post ,这样别人就不会看到提交的信息; 
    2.设置一个公用 javaScript 函数 来提交的表单; <script language="javaScript"> 
    function deleUser(){ 
        document.useList.onSubmit(); 

    </script> 
    --------------------------------- <form name="useList" action="post"> 
    ..... 
    <u onClick="deleUser()">删除 </… 
     这个应该不行,因为你用submit事件处理就会把表单上的所有数据都提交上去 而我的这个用户表是在表单里 我只想提交我点的那一行-----------------------------------------------------------------------------
    做一个隐藏的form,把每个用户的信息记录到该form中进行提交就可以了删除那一栏是个超链接,我现在想要的是在那里放一个按扭,点一下这个按扭 就可以把这个用户的id放到request或者Session中 然后执行Forward动作跳转到相应的Servlet上 不知道这次有没有说清楚 
    我发现有的人我跟他沟通很费劲
    --------------------------------------------------------------------------------------
    看你的要求是点击删除以后最终的地址还是在本地址吧,比如为 a.jsp,点击删除后还是 a.jsp,可以把删除提交到a.jsp,然后在后台判断是否为删除,如果为删除哪么forward到servlet去。
      

  18.   


    咋不提交就可以把消息放到request或session,指点一下,牛人
      

  19.   

    页面用frameset比较好,在地址栏看不到get方式提交的URL,不过在状态栏还是看的到..
    希望楼主尽快找到好的解决办法!!!
      

  20.   


     
    此楼正解.
    然后在2.jsp中用 String idValue=request.getPatermater("idValue");
    然后再判断处理就行了.
      

  21.   

    表单中 不能直接调用java方法呢.
     别误人子弟啦....
      

  22.   

    恩!我又找了一些资料.是这样,在<a>中的onClick事件可以指定一个JavaScript函数,同时传递一个参数就是这一行的记录的id在这个函数中,JavaScript可以设置Request的一些参数,并发送request请求.我是在<JavaScript Definitive Guide 5th>中看到这种方法的把分给tavor了他的方法虽然和我预期的不一样但可以实现谢谢大家如果哪位朋友有了新的方法也可以发帖或小纸条告诉大家结帖
      

  23.   

    呵呵,你说用button的呀,早知道是用链接,偶也可以写给你呀,呵呵
      

  24.   

    哦 !写错了其实现在用Button和用链接是一样的了