只为散分二字而来,顺便帮楼主up,看楼主自己在那up、up的挺辛苦的
解决方案 »
- Hibernate中Session对象的理解。
- struts的跳转问题
- 正则
- 一条简单的sql语句
- jsp写的一个登陆,在IE下登陆后按后退按钮(IE的后退)无法回到登陆前的页面(闪一下就回来了。。。)!!
- 请教关于FCKeditor中编辑区的配置(去掉编辑区当输入过长时出现的滚动条,以及设置编辑区的大小为298×168)?
- 请问哪位大侠有ORMapping基础文档?
- 这个异常自己真不知道该怎么决绝了
- 翻译:EJB in a Nutshell
- B/S结构的ERP系统是使用J2EE和.NET的架构哪个比较好?
- 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')">