1 .和[]的区别
通常是可以互换的,除一下两种情况
(1就是包含特殊字符,比如说${user.first-name}换成${user[“first-name”]}
(2 就是通过变量取值,比如${user[param]},param可能是用户传入的一个参数是不确定的
2 JSP内置对象
如果没说明变量的范围,默认寻找变量的范围是从小到大
Page—>request-->session-->application
3 对文本对象运算做自动转换
平常是String count_str=request.getParameter(“count”);
int count=Integetr.parseInt(count_str);
count=count+20;
现在只要${param.count+20}
4 El重要的验证符empty
返回值为true和false
${empty username}
5 JSTL标签
Out标签的几个属性
<c:out value=”” default=”value值不存在的时候显示的信息” escapeXml=”true/fale(是否进行转译)”><c:out>
Set标签的几个用途
对Scope中进行存值
<c:set value=”one” var=”age”scope=”session”></c:set>
<c:set var=”age” scope=”session”>one</c:set>
对javabean的实例对象进行赋值
<jsp:usebean id=”person” class=”com.imooc.entity.Person”></jsp:usebean>
<c:set target=”${person}”property=”name”value=zhangsan></c:set>
<c:out value=”${person.name}”></c:out>
Remove标签的用法
<c:remove var=”username” ></c:remove> //只能清除某个变量,不能是javabean中的属性值
Catch标签的用法
<c:catch var=”error”>
<c:set target=“aa“ property=”bb” value=”cc”><c:set>
</c:catch>
<c:out value=”${error}”></c:out> //会输出错误信息
If标签的使用
<c:if test=”${score>=60}” var=“result” scope=”session”>
<c:out value=”您的成绩是${param.score},及格了></c:out>
</c:if>
<c:out value=”${result}”></c:out>
Choose标签的使用
<c:choose>
<c:when test=”${param.score>60}”>
<c:out value=”您及格了”></c:out>
</c:when>
<c:otherwise>
<c:out value=”您的输入有误”><c:out>
</c:otherwise>
</c:choose>
Foreach标签
全部输出
<% List<String> list=new ArratList<String>;
List.add(“张三”);
List.add(“李四”);
Request.setAttribute(“list”,list);
%>
<c:forEach var=”name”items=”${list}”begin=“1“ end=”4” step=”2”varStatus=”l”>
<c:out value=”${name}” ></c:out>
</c:forEach>
Begin:开始角标 end :结束角标 step:中间间隔
VarStatus:遍历元素的属性index,count,first,last(true/false)
Index和count区别,index在整体中的下标数,从零开始的,count是在输出子集中的下标是从1开始的.
ForTokens标签
<c:forTokens items=”000-11-33-44-55” delims=”-“ var=”num”>
<c:out value=”${num}”></c:out>
</c:forTokens>
也用begin,end,step,varStatus等属性
Import标签(一般和catch标签一起用)
和<jsp:include>的区别(只能包含同一个web项目下的资源),import可以包含不同web项目下的资源甚至是网络上的资源
url,context,var,scope
<c:catch var=”error”>
<c:import url=http://www.baidu.com></c:import>
<c:import url=”import.jsp”></c:import>
</c:catch>
关于context的使用,是导入同一个服务器下不同web项目的资源,必须加上/符号,根目录
<c:catch var=”error”>
<c:import url= “/jspdemo.jsp” context=”/Another”>
</c:import>
</c:catch>
Redirect标签(重定向)
<c:redirect url=”相对或绝对地址”context=”另一个web项目”>
<c:param name=”name1”>value1</c:param>
<c:param name=”name2”>value2</c:param>s
</redirect>
可以将param里面的值传到url中去
Url标签(动态生成url地址)
可以同param使用,也可以同<a>标签使用实现超链接
<c:if test=”1 < 3” > //判断条件是否生成var1
<c set value=”aa” var=”var1”></c:set>
</c:if>
<c:url value=”http://localhost:8080/${var1}” var=”newUrl”></c:url>//根据里面的var1参数动态生成url地址
<a href=”${newUrl}”>新的Url</a>
6 jstl常用函数
Contains,containsIngoreCase,startWith,endWith,indexof(value1,value2)
判断value2在value1中的情况,返回true或false
<c:out value=”${fn:containsIngoreCase(“HELLOCase”,”hello”)}”></c;out>//返回true
EscapeXml,进行转译
<c:out value=”${fn:escapeXml(‘<book>好吗,</book>’)}”></c:out>
7 jsp页面中的BasePath
<%
String path = request.getContextPath();
String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
这个语句是用来拼装当前网页的相对路径的。
<base href="...">是用来表明当前页面的相对路径所使用的根路径的。
比如,页面内部有一个连接,完整的路径应该是http://localhost:80/myblog/authen/login.do
其中http://server/是服务器的基本路径,myblog是当前应用程序的名字,那么,我的根路径应该是那么http://localhost:80/myblog/。
有了这个 <base ... >以后,我的页面内容的连接,我不想写全路径,我只要写 authen/login.do就可以了。服务器会自动把 <base...>指定的路径和页面内的相对路径拼装起来,组成完整路径。
如果没有这个 <base...>,那么我页面的链接就必须写全路径,否则服务器会找不到。
request.getSchema()可以返回当前页面使用的协议,就是上面例子中的“http”
request.getServerName()可以返回当前页面所在的服务器的名字,就是上面例子中的“localhost"
request.getServerPort()可以返回当前页面所在的服务器使用的端口,就是80,
request.getContextPath()可以返回当前页面所在的应用的名字,就是上面例子中的myblog
这四个拼装起来,就是当前应用的根路径了
8 内置对象
(1) Out方法的clear()和clearBuffer()有什么区别
Clear()在flush()后面会报错,而clearBuffer()在flush()后面则不会报错
(2) Cookie 与session的区别
Cookie:在客户端保存信息,保存的是String类型,可以长期保存在客户端,保存一些不重要的信息
Session:在服务端保存信息,报存的是Object类型,可以长期保存在服务端,保存一些重要的信息
(3) 解决中文乱码问题
利用表单传参的时候:request.setCharacterEncoding(“utf-8”)
URL传参的时候:在Tomcat的安装目录中找到server.xml,在里面的<connector>中加入 URIEncoding=”utf-8”
(4) printerWriter和内置对象out的区别
默认printerWriter的输出在内置对象out输出内容的前面
解决这个问题
在out对象输出语句后写上out.flush()
(5) 请求重定向和请求转发的区别
请求重定向:response.sendRedirect(url)客户端的行为,从本质上讲等同于两次请求,前一次请求的对象不会保存,地址栏的URL地址会发生改变
请求转发:resquest.getRequestDispatcher(url).forward(res,rep),服务器端的请求,从本质上来讲只有一次请求,转发后请求对象会保存,地址栏的URL地址不会发生改变
理解起来就是:
比如一个人去办个护照
请求重定向:去A处办护照,A说这件事不归他们管,归B处管,然后这个出门打车自己去了B处
请求转发:去A处办护照,A说这件事归B管,然后让你在这儿等一会,然后自己进办公室里面联系B,让B处理好后把护照送过来
(6) 关于session对象的理解
Session在第一个jsp页面打开时自动创建,完成会话的管理;从一个客户打开浏览器开并连接到服务器开始,到客户关闭浏览器离开服务器结束,这称之为一个会话;是HttpSession的实例;
Session的销毁,session.invalid()方法,session的超时(超时),服务器的重新启动
(7) 返回值是枚举类型的遍历
While(attributes.hasMoreElements)
{
Out.println(attributes.nextElement())
}
(8)Exception错误页的处理,在可能出现错误的页面的<@ page>中加入ErrorPage=”页面地址”,在错误处理页page中加入isErrorPage=”true”