1、对含checkbox的form提交方法:
<script type="text/javascript">
function checkvalue()
{ var a=document.getElementsByName("answer");
var aYN = false; // 是否有选择
for (var i=0;i<a.length;i++)
{
if(a[i].checked==true)
{ aYN=true;
break;
}
}
if(!aYN){
alert('请至少选择一项');
return false;
}else{
//document.form1.action="surveyResult.action";
document.form1.submit();
//alert('已提交');
return true;
}
}
</script>
后台拿值方法:
String[] s = request.getParameterValues("answer");
2、为避免页面出现中文成乱码的情况,也将页面中文用WAP编码转换器转码后再使用,即将中文字符由gb2312格式转换为utf-8格式使用。
3、超链接使用javascript实现方法:
<a href='javascript:void(0);'
onClick="javascript:return checkvalue()";title="提交">提交</a>
4、点击一超链接弹出一小窗口方法:
<a href="javascript:void(0);" οnclick="javascript:window.open('en/cst/survey/jsp/survey.jsp','','modal=yes,width=300,height=250,resizable=no,scrollbars=no,location=no');">点我</a>
5、开始逐渐熟悉webwork+ibatis框架
6、webwork里面的action得到request方法:
ActionContext ctx = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);
7、java web开发时的目录/路径问题总结:
(1)目录分为两种:相对于web站点的根目录:http://localhost:8080/
相对于web应用的根目录:http://localhost:8080/app/
(2)路径也分为两种:相对路径:不以/开头: test/test.jsp (在同级目录下寻找)相对于当前文件的位置
绝对路径: 以/开头: /app/test/test.jsp
-----------下面重点总结‘绝对路径’-----------
(3)服务器端解析和客户端解析的绝对路径区别:
服务器端解析时:http://localhost:8080/app/ (即web应用的根目录)
客户端解析时:http://localhost:8080/ (即web站点的根目录)
(4)转发和重定向的路径问题:在服务器端解析的转发dispatcher绝对路径为web应用根目录;
在客户端解析的重定向redirect绝对路径为web站点跟目录;
(5)几个常用路径的地方:
①web.xml中的路径:
Servlet 映射 <url-pattern>/xx</url-pattern> 中的 “/” 代表当前 web 应用的根路径。
这个只要思考一下就能得出结论:所有的web.xml文件都是描述某个web应用的部署相关信息,所以“/”只能代表当前 web 应用的根路径,而不是指向web站点的根目录。
②<form action=“/xxx”>或 <a href=“/xxx”></a>中的路径:
“/”代表的是 web 站点的根目录。
因为超链接可以链接到任何需要的目标资源, 所以 / 代表的肯定不是当前 web 应用的根路径, 而是当前 web 站点的根路径。
③css路径问题:
“/”代表的是web站点的根目录,因为是在客户端解析。
④Page标签中errorPage属性的路径问题:
“/”代表的是web应用的根目录。
8、使用jspsmartupload.jar插件进行上传下载,但是其本身对中文支持不够,需要添加一些方法来完善,比如toutf8String();
9、处理oracle数据库中的CLOB类型的数据,可借助OracleClobTypeHandlerCallback此帮助类,同时resultMap里面注意要写typeHandler;
10、ibatis里面的映射文件.xml中,可用resultMap来对应下方sql语句字段和对象的属性,property为对象属性,column为查询结果视图的字段名,可只写有用的字段;另外,由方法queryForObject或queryForList来接收查询结果;
11、把数组作为参数传递,比如checkbox,当不能把整个页面或者form提交,而是用post方法提交,可以先把数组拼接成一字符串(中间用分隔符隔开),接受时再用方法按分隔符分割成数组使用。eg:
先拼接:用逗号作为分隔符
for (var i=0;i<a.length;i++)
{ if(a[i].checked){
b+=a[i].value+",";
}
}
后分割:
String[] s;
StringTokenizer str =new StringTokenizer(b,",");
s=new String[str.countTokens()];
for(int i=0;str.hasMoreTokens();i++)
{ s[i]=str.nextToken();
}
12、若将中文内容作为参数放在url里面进行传递,很容易乱码,比如上面,解决方法:先将参数内容编码使用,后接收时解码使用。eg:
先编码:
var post_date=encodeURI(encodeURI(b));//
var action="surveyResult.action?answer="+post_date;
send_request(action,callback,null);
后解码:
String t=java.net.URLDecoder.decode(request.getParameter("answer"), "UTF-8");
注意:这里先encodeURI两次,URLDecoder.decode一次,是因为对其进行二次编码,在客户端对参数进行二次编码,可以有效的避开“提交多字节字符”的这个棘手问题,另外容器接受时会自动解一次。
13、在看页面复杂的table结构时,假如弄不起,比较好的方法就是设border值,一旦有了border值,便明了了。
14、去掉字符串的空格,可用Trim ( string )函数。