只为散分二字而来,顺便帮楼主up,看楼主自己在那up、up的挺辛苦的

解决方案 »

  1.   

    我觉得不要纯粹的因为Struts而struts;在不同的情况下,选择最合适、你最了解、最方便的方式实现你需要的效果。
    如果某个效果用struts实现很困难,要绕很大一圈,而用其他的方法很简单;难道你就因为Struts提倡的某些精神而踏踏实实的吃亏?技术是“死”的,人是活的。
      

  2.   

    4楼说得很对!
    我觉得少量用JSP脚本就可以解决的简单问题就用JSP脚本就OK了。什么功能都用Struts也不合理。从你的情况看,我觉得你的设计本身就有问题。index.jsp为什么要嵌入其他的页面呢?我们嵌入其它页面的jsp应该具有通用功能,但index.jsp只是一个登录的页面吧。如果index.jsp中有很多通用功能,为什么不把这些功能再分出来,写到另一个jsp中呢?当然,确实要用Struts解决问题,还是有办法的写一个html文件
    内容是:
    <HTML>
    <HEAD>
    <script language="javascript"> 
      <!-- 
       window.location = "login.do";
      // -->
      </script>
    </HEAD>s
    </HTML>然后改下你的web.xml
    <welcome-file-list>
         <welcome-file>index.html</welcome-file>
    </welcome-file-list>最后根据login.do去配置吧!
      

  3.   

    这个问题还是用用jsp脚本完成比较方便,技术是死的,人是活的.人不能被一泡尿给憋死
      

  4.   

    up,我想lz发这贴的目的是想用更好的办法解决吧,学习好的办法吧,如果他想用jsp解决就不会到这里发贴了。
      

  5.   

    方法1.如果你的index.jsp经常被引用,那当然不能改,但你可以改web.xml中,让欢迎页面指向另外一个jsp页面(在这个jsp重定向到你想访问的action).第一次访问的时候就是这个页面,然而以后你的其他链接还是指向index.jsp.没有影响到它.方法2.3.5 不提倡,太笨了.方法4.一般现用技术就是ajax.
    你先做一个servlet,让它去查数据库并以一定的格式返回你想要的结果。然后在页面中用XHR去访问这个servlet并处理结果后用dom处理节点的方式添加到下拉列表框中.
      

  6.   

    非常感谢各位的提议和帮助,我不太想用脚本去实现的,有好的技术为什么不用呢,我是想用ajax实现,可是我不太会,那位能帮帮我。
      

  7.   

    有一个登陆页面,页面上有一个下拉选项是登陆的级别,而这个级别是从数据库中取出的,但是这个JSP页面是系统的index页面,还来不及调到后面的 ActionBean,那怎么查数据库呢?难道还是象一般的JSP页面那样写一大堆JSP代码在页面上吗?那不是违背了struts的精神了吗? struts不就是为了不在页面上出现JAVA代码吗?  我处理这种页面有三种方法:
    1.先访问action,然后跳转到页面,就是这个页面之前先访问action。
    2.可以在页面加一个onload事件,每次加载都会解析一个xml文件,但是这种方法,必须主要各种浏览器的兼容性。
    3.用ajax技术,原理1没有太多区别,同样是onload事件,只不过是在打开页面的过程中执行了action,然后神不知鬼不觉的把数据拿出来。1和3都有效率的问题,因为访问action会有时间延迟,2最好,你可以到网上搜搜应该很多类似的代码,不过2要考虑浏览器的兼容性也很麻烦
      

  8.   

      <tiles:insert page="/init.do?method=getUserType"/>
                  /init 
          ActionForward getUserType(){
                //读取数据库(用户类别这种东西不可能改变平凡,服务器启动的时候,先初始化了放内存里面不好吗?),写入request
                return 登陆页
          }
         
         登陆页
         <html:select>
            <html:options/>
         </html:select>
         
         大概就这样,没有脚本,而且这个登陆的东西随便放那里就行,只需要 <tiles:insert page="/init.do?method=getUserType"/>,还方便和其他的页面组装
      

  9.   

    最简单是jsp写java代码其次是在jsp页面中写个包含页面,就是<jsp:include page="xx.do"/>由包含页面去访问数据库麻烦点是用ajax,其实ajax说穿了只是js 的异步.
          下面是js代码
       var req;
        function  GetInfo(url){
    //url就是你要访问的servlet的路径了,action也行了,但是exectue方法中的返回函数必须是null,
    //servlet要在jsp的out流中写出你要的数据,传给jsp页面
       
          if(window.XMLHttpRequest){
             req=new  XMLHttpRequest();//创建XMLHTTPRequest对象
                    }
               else  if(window.ActiveXObject){     //浏览器版本判断
             req=new  ActiveXObject("Microsoft.XMLHTTP");
           }
               alert(url);
               if(req){
           req.open("GET",url,true);   //建立请求
       req.onreadystatechange=callback;//请求回调函数
           req.send(null);  
       }
       }
    function  callback(){    if(req.readyState==4){  //判断就绪状态
       if(req.status==200){
           parseMessage();//接收返回的数据
       //更新网页的内容
      
       }else {
              alert("Not able to retrieve description "+req.statusText);
       }
         }
         else {}       

    }function obj(s){
      try{ stringToXML_soap=new ActiveXObject("Microsoft.XMLDOM");
        stringToXML_soap.async = false; 
      stringToXML_soap.loadXML(arguments[0]);
        return stringToXML_soap.documentElement;
      } catch(e) {
          var soap=new DOMParser();
          var stringToXML_soap=soap.parseFromString(arguments[0],"text/xml");
            return stringToXML_soap;
      }
      
    }function parseMessage(){    var  xmldoc=obj(req.responseText);  //获得返回的数据
         //这里就由你自已来写了,用js读取数据后显示在下拉框中好了
    }然后在页面的
    <body onBlur="GetInfo('servlet/xx')">