我的servlet 访问的路径是这样的:
主机名+/servlet/servlet类名 。现在我有个评论的页面,该页页的表单是提交到servlet 来处理的,
但是我在这个JSP页面上是允许非会员提交信息的.当然这个页面上
验证码肯定是有的(取得验证码的图片仍是向servlet 取得的)。
就是这样问题就出来了:假如别人自己写了一个表单,然后把表单提交到我的网站servlet来处理,
这时候要怎么来让程序做判断呢?至于验证码他也可以用我网站的servlet.
要不然数据就会被他给写到数据库进去了,
真诚地希望大家给我一个提示,谢谢!

解决方案 »

  1.   

    用会话技术吧.当它访问评论的页面的时候你必然要产生一个验证码吧?这时候你可以放到session里,然后返回到客户端,在填写表单提交的action里,首先从请求里得到session然后再得到这个验证码,如果别人直接用一个链接来访问你的action(而不是先访问评论页面)那么 必然在会话里得不到这个验证码,所以就不会写到数据库里去了
      

  2.   

    AWUSOFT() : 你的意思是在评论这个页放一个session 然后当表单提交到
    servlet时,在servlet 里判断这个session 是不是为空,是这样的意思吗?
      

  3.   

    session肯定不会为空啦...在评论这个页把产生的难证码放到session里,在servlet就从session里取出这个验证码,如果得到为空就表示这个访问是没有经过评论页面而直接访问 的
      

  4.   

    我的提问能够得到大家的回复,真得很荣幸,
    我想问下“chaucer518(我爱我家的思思) ”:
    你说的这个过滤器,是什么技术,能介绍下吗
      

  5.   

    过滤器也是一个servlet差不多,也就是你想请求一个servlet之前要先执行这个过滤器
      

  6.   

    哦,这样啊,
    我明白了AWUSOFT() 的意思了,
    在评论这个页面放一个session ,那么就是每当 一个用户来请求访问
    这个页面就会产生一个session 的值,这样应该不会耗资源吧,
    始终只有一个session对象,只是值不一样,是吗
      

  7.   

    我刚才试了下,发现在JSP页面取出来的session 值,和在servlet 里取得的session值是
    不一样的,JSP页面得到要比servlet 得到得更晚一步
      

  8.   

    不是这样的啦,session是Web服务帮你建好的,你只需要用它就可以了.在Jsp可以通过session对像得到,而在Servlet里可以通过request.getSession(好像是这个方法名)得到它.
    在Jsp里
    session.setAttribute("设一个验证码名字","这里是验证码");
    在servlet里
    String str=(String)request.getSession().getAttibute("设定的验证码名");
    if(str==null)
    {
      //表示非法访问
    }
      

  9.   

    偶是新人  看了帖子有点疑问
    首先确认下在servlet中接收session是要先初始化一个session 
    HttpSession session=request.getSession();
    其次
    为什么要把验证放在session中呢?可以在表单提交页面产生一个request.setAttubite()在servlet中效验,效果一样而且效率高点,还不影响全局。
    纯属菜鸟发言,见笑见笑
      

  10.   

    哈哈...问题是这样的...要产生一个随机码,访问页面的时候产生的,然后把这个页面返回给客户端....然后用户写入意思后,确定提交到一个servlet,那么你如何判断这个顾承机码的正确性呢?
    可以在产生的时候把它也放到表单的一个属性里.而你的request.setAttubite()却是做什么的?估计你的的理解还不是很好.什么时候才会有request.setAttibute()产生呢?一返回客户端,request马上结束,里边的数据也没有了.下个提交的时候如果再得到它呢?
      

  11.   

    这可是要两个requset范围里共享数据哩.把它发到客户端好像安全不是很好吧.通过源文件就可以看到了..