散分, 顺便问几个ssh中struts的问题。 只为散分二字而来,顺便帮楼主up,看楼主自己在那up、up的挺辛苦的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得不要纯粹的因为Struts而struts;在不同的情况下,选择最合适、你最了解、最方便的方式实现你需要的效果。如果某个效果用struts实现很困难,要绕很大一圈,而用其他的方法很简单;难道你就因为Struts提倡的某些精神而踏踏实实的吃亏?技术是“死”的,人是活的。 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去配置吧! 这个问题还是用用jsp脚本完成比较方便,技术是死的,人是活的.人不能被一泡尿给憋死 up,我想lz发这贴的目的是想用更好的办法解决吧,学习好的办法吧,如果他想用jsp解决就不会到这里发贴了。 方法1.如果你的index.jsp经常被引用,那当然不能改,但你可以改web.xml中,让欢迎页面指向另外一个jsp页面(在这个jsp重定向到你想访问的action).第一次访问的时候就是这个页面,然而以后你的其他链接还是指向index.jsp.没有影响到它.方法2.3.5 不提倡,太笨了.方法4.一般现用技术就是ajax.你先做一个servlet,让它去查数据库并以一定的格式返回你想要的结果。然后在页面中用XHR去访问这个servlet并处理结果后用dom处理节点的方式添加到下拉列表框中. 非常感谢各位的提议和帮助,我不太想用脚本去实现的,有好的技术为什么不用呢,我是想用ajax实现,可是我不太会,那位能帮帮我。 有一个登陆页面,页面上有一个下拉选项是登陆的级别,而这个级别是从数据库中取出的,但是这个JSP页面是系统的index页面,还来不及调到后面的 ActionBean,那怎么查数据库呢?难道还是象一般的JSP页面那样写一大堆JSP代码在页面上吗?那不是违背了struts的精神了吗? struts不就是为了不在页面上出现JAVA代码吗? 我处理这种页面有三种方法:1.先访问action,然后跳转到页面,就是这个页面之前先访问action。2.可以在页面加一个onload事件,每次加载都会解析一个xml文件,但是这种方法,必须主要各种浏览器的兼容性。3.用ajax技术,原理1没有太多区别,同样是onload事件,只不过是在打开页面的过程中执行了action,然后神不知鬼不觉的把数据拿出来。1和3都有效率的问题,因为访问action会有时间延迟,2最好,你可以到网上搜搜应该很多类似的代码,不过2要考虑浏览器的兼容性也很麻烦 <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"/>,还方便和其他的页面组装 最简单是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')"> Javascript中如何实现数据的输入与调出 关于socket的问题,求助 S2SH 怎样读取access的长二进制数据 连接webservise时,如何获取sessionID。。。 TOMCAT小问题 JBoss+EJB+MySQL无法找到数据库中的表,但数据源已正确配置,请高手指点 Jfreechart标签库显示图表问题,希望大家帮我找找错! tomcat5.5在安装中碰到的问题~请帮忙解决!! 手动搭建SSH需要导入哪些jar包?求大牛解答 jsp页面全选怎么做?&hibernate+sruts 分页 在Windows命令提示符里用JAVAc显示不是内部命令或是可应用程序
如果某个效果用struts实现很困难,要绕很大一圈,而用其他的方法很简单;难道你就因为Struts提倡的某些精神而踏踏实实的吃亏?技术是“死”的,人是活的。
我觉得少量用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去配置吧!
你先做一个servlet,让它去查数据库并以一定的格式返回你想要的结果。然后在页面中用XHR去访问这个servlet并处理结果后用dom处理节点的方式添加到下拉列表框中.
1.先访问action,然后跳转到页面,就是这个页面之前先访问action。
2.可以在页面加一个onload事件,每次加载都会解析一个xml文件,但是这种方法,必须主要各种浏览器的兼容性。
3.用ajax技术,原理1没有太多区别,同样是onload事件,只不过是在打开页面的过程中执行了action,然后神不知鬼不觉的把数据拿出来。1和3都有效率的问题,因为访问action会有时间延迟,2最好,你可以到网上搜搜应该很多类似的代码,不过2要考虑浏览器的兼容性也很麻烦
/init
ActionForward getUserType(){
//读取数据库(用户类别这种东西不可能改变平凡,服务器启动的时候,先初始化了放内存里面不好吗?),写入request
return 登陆页
}
登陆页
<html:select>
<html:options/>
</html:select>
大概就这样,没有脚本,而且这个登陆的东西随便放那里就行,只需要 <tiles:insert page="/init.do?method=getUserType"/>,还方便和其他的页面组装
下面是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')">