首页 > 应用开发 > Java > 一年前初触jsp--项目过程中的零碎积累(二)
(接上篇。。。。。。接上篇。。。。。。接上篇。。。。。。。)
1. 以下来自javaweb书和点滴感悟:(4.30)
l forward 属于服务器端内部转向(所以无法转向项目外的网页),由于http是无状态协议,则与浏览器无关,所以浏览器就不能显示地址的变化,但是页面的title会变!!
l sendRedirect(“url”)则是通知浏览器转向,即客户端转向,故可以看见地址的变化,也因此可以转向到本网站以外去,如”http://www.baidu.com”
l forward动作标记所在的页面一般用来检查某些数据的正误,然后再跳转到对应的页面,一般甚少显示内容。
l 用forward跳转的好处(我的感悟):由于这种跳转地址栏显示不了网址变化,那么用户就无法知道目标页面的Url,这样可以防止用户直接输入url访问;其次,如果是客户端跳转而又不想让用户直接url访问的话,那么可以在目标页面中设置一个判断用户是否直接输入URL访问的方法,如果是直接url访问的话则立马跳转到error.jsp
l 完善个人资料的页面时,可以用js来实现弹出式提示框!
提交”/>其实内部是:
提交”/>
l 链接的另写法:href=”login.jsp?account=126499&pwd=12346”,可以实现URL传值,一般用在个人主页面中的链接中,因为可以直接提交数据(如传值到另个页面实现数据库的查询更新)
l Cookies技术可以实现页面保存用户个人个性化设置,例如 用户对个人空间的页面设置,字体,背景和最常用的自动登陆功能!
l 防止刷票的方法:1.request.getRemoteAddr()存储投票过的IP,如果再访问则禁止或跳转到错误页 2.用Cookie技术
2. Com.mysql.jdbc.Connection和java.sql.Connection的区别:前者针对mysql,后者是java自带的,对所有数据库通用!
3. 对于同名复选框,如果没有选中一个,那么String[] s=request.getParameterValues(“name”),s是null,如果代码中出现s.length ,就会报错;如果选中n个,那么s.length==n;
4. 设计数据库时,对于一些特殊字段要设好默认值,千万勿留空,否则java/sql代码对其进行操作时是操作失败的,他妈的是,数据库也不会报错!(搞到我忙半天!)例如:
一字段:tNumber int ,如果没有default 0的话,sql代码中即使进行tNumber=tNumber+1,系统也不会报错的!!!
5. Jsp中,一个内置对象十分强大,但是由于太复杂,所以甚少用之。它是pageContext!!
Out out=pageContext.getOut();
ServletContext application=pageContext.getServletContext();
Session session=pageContext.getSession();
还有request,response,exception,page对象都可以由它得到!!(其实在初始化时,这些对象都是由pageContext对象得到的,只不过这些发生在服务器端,我们感觉不到而已!)
6. 切莫在js中嵌套jsp的代码,想想都知道!!
7. request传值只限于String ;session和application 传值则是Object对象
8. //js
var removeObj = document.getElementById('reducedLine').getElementsByName('mlt24')[0];
removeObj.parentNode.removeChild(removeObj);
//jquery
$('#reducedLine>div[name="mlt24"]').remove();
9. var newDiv = document.createElement("div");
newDiv.className="c";
newDiv.innerHTML="js";
document.getElementById("a").appendChild(newDiv);
10. insert into 语句可以指定列插入
例如表:user(name,no primary key,age)
Insert into user(no,age) values(1,16);只要那些必填项保证有得插入即可!
11. Insert into 时如果有不准备插入值的字段,那么就得指定值进行插入,如下:
Insert into user values(,1,16);这样是错误的
Insert into user(no,age) values(1,16);这是正确的
12. Jsp项目中的servlet即使是在包中,但是都是默认在根目录下(webContent/),所以在servlet中转向的话要注意路径的书写
13. Byte是包装类型,byte是基本类型,两个可以互相转换。包装类型默认是null,而基本类型可能不是
14. 当字节流对象的read(byte[] a,int off,int len)中的off=0且len=a.length时,等同于read(byte[] a).其中两者都是返回本次成功读取的字节的数量;read()则是返回本次所读的一个字节转换成int后的值(-127~127)
15. request.getParameterMap()的返回类型是Map类型的对象,也就是符合key-value的对应关系,但这里要注意的是,value的类型是String[],而不是String。
得到jsp页面提交的参数很容易,但通过它可以将request中的参数和值变成一个map,以下是将得到的参数和值打印出来,形成的map结构:map(key,value[]),即:key是String型,value是String型数组。
例如:request中的参数t1=1&t1=2&t2=3
形成的map结构:
key=t1;value[0]=1,value[1]=2
key=t2;value[0]=3
如果直接用map.get("t1"),得到的将是:Ljava.lang.String;
value只所以是数组形式,就是防止参数名有相同的情况。
16. Object obj="AAAA"; //不会报错,因为 "AAAA" 生成出来就是一个对象
Object obj=100; //编译器报错,提示无法从int 类型强制转为Object
原因:
100 为 int 原始数据类型,所以不能转成Object 对象
"AAAA" 为字符串 String 类型对象, 由于所有对象类都是继承自Object ,
所以 Object obj="AAAA"; 不会报错。
另外,Object 都有方法 equals()、hashCode()、getClass() 等方法
这些方法 String 类一个都没落下统统继承。
其实我们知道有String str=new String()和str.length或str.toChar()等,这些都说明了String 是一个Object,不同于int这些基本数据类型
JAVA的引用数据类型是
1.String
2.Stringbuffer
3.Stringbuilder
注意:char是基本类型而非引用类型!!
17. Date中的long类型是指毫秒数。一下Date转Long,两种方式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long timeStart=sdf.parse("2011-09-20 12:30:45").getTime();
long timeStart=(new Date()).getTime();
// long转Date
Date date = new Date(timeStart);
18. java.sql.Date是为了配合SQL DATE而设置的数据类型。“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。当我们调用 ResultSet的getDate()方法来获得返回值时,java程序会参照"规范"的java.sql.Date来格式化数据库中的数值。因此,如果数据库中存在的非规范化部分的信息将会被截取。
19. post和 get这两者传递参数时所用的编码不一定是一样的。在 Tomcat 中似乎 Get 的编码方式是根据页面中指定的编码方式,而 Post 则是一直使用同一种编码方式,可在 Tomcat 的 server.xml 中配置。
20.
windows下的文本的一行的尾部是:\r\n,而不是\n\r!!使用RandomAccessFile对象的readLIne() 后,指针将会指向\n,可以通过readByte()获取指针所指向的字节的int表示,也可以用(char)来强制转换成’\n’或’\r’,但是抱歉,你是在控制台上看不见的,因为**,你懂的!!
21.
页面的图片或者其他什么的,要注意一点是:后缀名大小写敏感!!!!!
22. Date对象的对比,一个是toString()后进行after或equals和before方法的对比,二是getTime()后进行long整型对比等,详情打开下载好de文档;
23. 过滤器只是处理post方式的乱码,超链接传值属于get方式提交数据,这个你得在另外一个页面将传递过去的字符串重构,
|
1 2 |
String name=request.getParameter("isplacename"); name=new String(name.getString("iso-8859-1"),"utf-8"); |
24. 注意get是form的method属性的默认值。Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
25. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。原因是:post方式是把数据内容放在请求的数据正文部分,没有长度的限制;get方式则是把数据内容直接跟在请求的头部的URL后面,有长度的限制。
26. GET方法可能会产生很长的URL,或许会超过某些浏览器与服务器对URL长度的限制。 GET传递的字符串长度不能超过250个字符,如果超长,浏览器会自动截断,导致数据缺失。另外,GET方法不支持ASCII字符之外的任何字符,比如包含有汉字或其他非ASCII字符时,需要使用额外的编码操作,虽然有时候浏览器也能自动完成(可以使用url_encode和url_decode函数)
27. http header头要求其内容必须为iso8859-1编码
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29900383/viewspace-1461624/ ,如需转载,请注明出处,否则将追究法律责任。