在jsp中无需创建就可以使用的9个对象,它们是:
out(jspWriter):等同与response.getWriter(),用来向客户端发送文本数据;
config(ServletConfig):对应“真身”中的ServletConfig;
page(当前JSP的真身类型):当前JSP页面的“this”,即当前对象;
pageContext(PageContext):页面上下文对象,
exception(Throwable):只有在错误页面中可以使用这个对象;
request(HttpServletRequest):即HttpServletRequest对象类
response(HttpServletResponse):HttpServletRequest对象类
application(ServletContext):ServletContext类的对象
session(HttpSession):即Httpsession类的对象,不是每个JSP页面中都可以使用,如果在某个JSP页面中设置<%[@page](https://my.oschina.net/u/937418) session="false"%>,
说明这个页面不能使用session.
PageContext中:
void setAttribute(String name,Object value,int scope):在指定范围中添加数据
Object getAttribute(String name,int scope):获取指定范围的数据
void removeAttribute(String name,int scope):移除指定范围i的数据
Objext findAttribute(String name):依次在page,request,session,application范围查找名称为name的数据,如果找到就停止查找。这说明在这个范围内有相同名称的数据,那么page范围的优先级最高。
JSP动作标签
<jsp:forward>:转发,与RequestDispatcher方法的forward相同,一个在Servlet中使用,一个在jsp中使用
<jsp:include>:包含,与RequestDispatcher方法的include相同,一个在Servlet中使用,一个在jsp中使用
jsp中与javaBean相关的标签
<jsp:useBean>创建或查询bean
<jsp:useBean id="user1" class="cn.itcast.domain.User" scope="session"/>在session域中查找名为user1的bean,如果不存在,创建之<jsp:useBean id="user1" class="cn.itcast.domain.User" scope="session"/>
<jsp:setProperty>
<jsp:setProperty property="username" name="user1" value="admin"/>设置名为user1的这个javabean的username属性值为admin
<jsp:getProperty>
<jsp:getProperty property="username" name="user1" />获取名为user1的javabean的名为username属性值
JavaBean
javaBean的规范:
1、必须要有一个默认构造器
2、提供get/set方法,如果只有get方法,那么这个属性是只读属性
3、属性:有get/set方法的成员,还可以没有成员,只有get/set方法。属性名称由get/set方法来决定,而不是成员名称。
4、方法名称满足一定的规范,那么他就是属性。boolean类型的属性,它的读方法可以是is开头,也可以是get开头
EL表达式
1、EL是JSP内置的表达式语言
el代替的是<%=..%>,也就是说,EL只能做输出
2、EL表达式来读取四大域
${xxx},全域查找名为xxx的属性,如果不存在,输出空字符串,而不是null
${pageScope.xxx}、${requestScope.xxx}、${sessionScope.xxx}、${applicationScope.xxx},指定域获取属性
3、javaBean导航
<%
Address address=new Address();
address.setStreet("桃园");
address.setCity("深圳");
Employee emp=new Employee();
emp.setName("xi");
emp.setSalary(55555);
emp.setAddress(address);
request.setAttribute("emp",emp);
%>
<h3>使用EL表达式获取request域中的emp</h3>
${requestScope.emp.address.street}等同于 <!-- request.getAttribute("emp").getAddress().getStreet() -->
EL的十一个内置对象
1 pageContext 对应于JSP页面中的pageContext对象(注意:取的是pageContext对象。)
2 pageScope 代表page域中用于保存属性的Map对象
3 requestScope 代表request域中用于保存属性的Map对象
4 sessionScope 代表session域中用于保存属性的Map对象
5 applicationScope 代表application域中用于保存属性的Map对象
6 param 表示一个保存了所有请求参数的Map对象
7 paramValues 表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[]
8 header 表示一个保存了所有http请求头字段的Map对象,注意:如果头里面有“-” ,例Accept-Encoding,则要header[“Accept-Encoding”]
9 headerValues 表示一个保存了所有http请求头字段的Map对象,它对于某个请求参数,返回的是一个string[]数组。注意:如果头里面有“-”,例Accept-Encoding,则要headerValues[“Accept-Encoding”]
10 cookie 表示一个保存了所有cookie的Map对象${cookie.username.value}
11 initParam 表示一个保存了所有web应用初始化参数的map对象
EL函数库(由JSTL提供)
导入标签库
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
String toUpperCase(String input):把字符串参数转换成大写,并返回;
String toLowerCase(String input):把字符串参数转换成小写,并返回;
int indexOf(String input, String substring):返回input中substring出现的索引位置;
boolean contains(String input, String substring):查看input中是否包含substring,包含返回true,否则返回false;
boolean containsIgnoreCase(String input, String substring):在忽略大小写的情况下,查看input中是否包含substring,包含返回true,否则返回false;
boolean startsWith(String input, String substring):判断input是否是以substring为前缀,如果是就返回true,否则就返回false;
boolean endsWith(String input, String substring):判断input是否是以substring为后缀,如果是就返回true,否则就返回false;
String substring(String input, int beginIndex, int endIndex):以beginIndex为开始值,endIndex为结束值,在input上截取子串;
String substringAfter(String input, String substring):获取input中,substring所在位置后面的字符串;
substringBefore(String input, String substring):获取input中,substring所在位置前面的字符串;
String escapeXml(String input):把input中“<”、“>“、”&“、”'“、“"”进行转义;
String trim(String input):去除input中的前后空格;
String replace(String input, String substringBefore, String substringAfter):将input中的substringBefore替换成substringAfter;
String[] split(String input, String delimiters):以delimiters为标识分割input,返回一个字符串数组;
int length(Object obj):可以获取字符串、数组、各种集合的长度!
String join(String array[], String separator):将array数组中的元素以separator连接起来,返回一个字符串。
自定义标签库
写一个java类,类中可以定义0-n个方法,但必须是static,而且有返回值的
在WEB-INF目录下创建一个tld文件
<function>
<name>fun</name>
<function-class>cn.itcast.fn.MyFunction</function-class>
<function-signature>java.lang.String fun()</function-signature>
</function>
在jsp页面中导入标签库
<@%taglib prefix="it" uri="/WEB-INF/tlds/itcast.tld"%>
在jsp页面中使用自定义的函数:${it:fun()}