在JSP中值得注意的四个问题:
一是<jsp:include page=""/>与<%@ include file=""%>的区别:
前者为动态INCLUDE(用jsp:include动作实现), 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数,方法是使用<jsp:param/>动作。
后者为静态INCLUDE(用include伪码实现),不会检查所含文件的变化。它会导致WEB浏览器高速缓存所有页面,因此适用于包含不常改变的静态页面。
一种混合搭配的解决方案是:用静态INCLUDE包含站点上几乎没有变化的文件(如:网站的页眉,页脚和导航文件),由于静态INCLUDE采用了高速缓存,因此只要放入包含文件一次,其内容就会被高速缓存,其结果是极大提高了网站的性能;用动态INCLUDE处理动态内容。
二是两种跳转方式的区别:
<jsp:include page="" flush="true">
<jsp:forward page= ""/>
前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.
后者完全转向新页面,不会再回来。相当于go to 语句。
三是<form action=" " method="post/get">中post和get方法的区别:
其区别是当使用get方法时,将参数提交后跳转到action指定的页面时所有提交的参数都会出现在浏览器的URL中,这样把所有信息都暴露出来了,这对于一些重要信息来说,是十分危险的。因此尽量使用post.
四是JSP中如何解决中文编码问题:
针对Servlet,我们建议用以下方法:
在编译Servlet类的源程序时,用-encoding指定编码为GBK或GB2312,且在向用户输出时的编码部分用response对象的setContentType(”text/html;charset=GBK”);或gb2312来设置输出编码格式,同样在接收用户输入时,我们用request.setCharacterEncoding(”GB2312″);这样无论我们的servlet类移植到什么操作系统中,只有客户端的浏览器支持中文显示,就可以正确显示。方法如下:
doGet/doPost(..){
request.setCharacterEncoding(”GB2312″);
//设置输入编码格式
response.setContentType
(”text/html;charset=GB2312″);
//设置输出编码格式
.......
.......
}
针对JSP,有两中方法:一种处理方法是在page指令指定编码方式是GB2312,并且在处理数据之前加入<%request.setCharacterEncoding("GB2312");%> 即可;第二种方法用举例来说明,假设从表格种接受一个用户名userName=“张三”,可以如下进行处理,byte [] bytes=userName.getBytes("ISO8809-1"); String theName=new String(bytes,"gb2312");这里获得的theName就OK了。