JSP与JSTL的小结

JSP基础语法
一、JSP的注释
1、显示注释:
查看网页源代码能够看到的注释
a、继承HTML风格的注释:

2、隐式注释
查看网页源代码能够看不到的注释
a、JSP自己的注释: <%-- 这是JSP的注释 --%>
<%-- 这是JSP的注释 --%>
b、继承Java风格的注释: // 单行注释 /多行注释/
<%
// 单行注释
/* 多行注释 */
%>

Scriptlet脚本小程序
所有嵌入在 HTML 代码中的 Java 程序都必须使用 Scriptlet 标记出来。
JSP一共有三种scriptlet:
1、java脚本段
语法:<% // 这里面可以写Java代码,声明局部变量、编写java语句等 %>
代码会生成在编译后的Servlet源码中的service方法体中
<%
int a = 1;
System.out.println(a);
System.out.println(str);
%>

			2、声明全局变量、方法、类
				语法: <%! // 声明全局变量、方法、类   %>
				代码会生成在编译后的Servlet源码的类体中
				<%!
					String str = "Hello JSP";
				%>
			3、输出表达式
				语法: <%=变量或字面量、表达式 %>
				代码会生成在编译后的Servlet源码中的service方法体中
				<%=a %> 
<%=100 %>
<%=request.getMethod() %>
<% String txt = "Hello JSP"; %> <%=txt %> <% out.print(txt); %>

===========================================================
Page指令
语法: <%@ page 属性名1=“属性值1” 属性名2=“属性值2” %>
language:当前语言,目前只支持java
contentType:设置响应类型及编码格式
pageEncoding:编码格式
import:导包;只有该属性可以被设置多次
isErrorPage:是否是处理错误的页面,默认是false; 如果设置true表示当前页面是用来处理报错的;一般与errorPage一起使用
errorPage:报错时跳转的页面
JSP的编码取决于contentType属性中的charset的值,如果charset未设置,则使用pageEncoding的值,若两者都未设置,使用默认编码ISO-8859-1

<%
	List list = new ArrayList<>();
	
	int a = 1/0;
%>		

==========================================================

include静态包含
语法:<%@include file=“要包含的页面路径” %>
将一个页面包含在另一个页面中
1、静态包含就是将内容进行了直接的替换
2、只会生成一个源码文件
3、不能有同名变量

	特点:
		运行效率高一点点
		耦合度高,不够灵活

include动态包含
语法:
相当于方法的调用,会生成两个源码文件,可以出现同名变量。降低耦合度低。

	注:双标签之间不能写任何内容,包括空格和换行。(除非有参数)
	
	动态包含可以传递参数:
		
		value属性支持表达式
		name属性不支持表达式
		
		获取参数通过  request.getParameter("name属性值");

===========================================================
九大内置对象:

当前页的域对象pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的 out. request. reponse. session. application
pageContext.getAttribute("");
pageContext.getRequest();
pageContext.getResponse();

	//request域对象
	request.getAttribute("");
	
	// session域对象
	session.getAttribute("");
	
	// application域对象
	application.getAttribute("");
	
	
	// 输出对象
	response.getWriter();
	out.write("");
	
	// 配置对象
	config.getServletContext();
	
	// 当前JSP页面本身
	page.getClass();
	
	// 异常对象  只要在页面中设置过isErrorPage=true时才能使用

=========================================================
EL表达式:

<%
pageContext.setAttribute(“uname”, “zhangsan”);
request.setAttribute(“uname”, “lisi”);
session.setAttribute(“uname”, “wangwu”);
application.setAttribute(“uname”, “zhaoliu”);

// 定义JavaBean对象
User user = new User();
user.setUserName("admin");
user.setUserPwd("123456");
request.setAttribute("myUser", user);

String a = "Hello";

// 域对象存空值
request.setAttribute("str1", "");
request.setAttribute("str2", null);
request.setAttribute("str3", "Hello");

%>

EL表达式取值

获取指定名称的域对象:${uname }
获取session作用域的值:${sessionScope.uname }
获取JavaBean对象:${myUser }
获取JavaBean对象的属性:${myUser.userName } ----- ${myUser.getUserName() }
获取普通变量名(取不到):${a }
获取字面量的值:${1 }

EL使用字符串方法

获取字符串中是指定字符的下标:${uname.indexOf("a") }
字符串截取:${uname.substring(0,2) }

EL表达式判断为空 ${empty 域变量 }

判断空字符串:${empty str1 }
判断null:${empty str2 }
判断字符串:${empty str3 }
判断字符串:${str3 != null && str3 != "" }

<%
//集合
List list1 = new ArrayList<>();
list1.add(“aaa”);
list1.add(“bbb”);
list1.add(“ccc”);
List list2 = new ArrayList<>();
List list3 = null;
request.setAttribute(“list1”, list1);
request.setAttribute(“list2”, list2);
request.setAttribute(“list3”, list3);

List userList = new ArrayList<>();
userList.add(user);
request.setAttribute("userList", userList);

%>

EL操作集合

判断集合不为空:${!empty list1 }
判断集合为空:${empty list1 } -- ${empty list2 } -- ${empty list3 }
获取集合的值:${list1[0] }
获取集合中对象的属性:${userList[0].userName }
获取集合的长度:${userList.size() }

<%
Map map = new HashMap<>();
map.put(“uname”,“zhansgan”);
map.put(“uage”,18);
map.put(“usex”,true);
request.setAttribute(“map”, map);
%>

EL操作Map

判断map是否为空:${empty map }
获取map对象:${map }
获取map中指定的key对应的value:${map.uname } -- ${map["uage"] }

<%
request.setAttribute(“num1”, 10);
request.setAttribute(“num2”, 2);

request.setAttribute("aa", "aaa");
request.setAttribute("ab", "aaa");
request.setAttribute("ac", "bbb");

%>

EL运算

加法:${num1 + num2 }
减法:${num1 - num2 }
乘法:${num1 * num2 }
除法:${num1 / num2 } -- ${num1 div num2 }
大小比较:${num1 > num2 } -- ${num1 >10 } --- ${(num1+num2) <= 10 }
等值比较:${aa == ab } -- ${aa eq ac }
${(num1+num2) > 10 && aa == ab }
${(num1+num2) > 10 || aa == ab }

<%
// 通过pageContext对象设置指定域范围的值
pageContext.setAttribute(“userName”, “Lisa”, PageContext.REQUEST_SCOPE);

String userName = (String) pageContext.getAttribute("userName", PageContext.REQUEST_SCOPE);

System.out.println(userName);

%>

======================================================
JSTL的使用:
1、将jstl相关的jar包拷贝到项目的lib目录下
jstl.jar和standard.jar
2、在页面引入想要使用的库
<%@taglib uri=“要使用的库的路径” prefix=“前缀名” %>
3、使用标签
<前缀名:标签名 属性名=“属性值”>
4、标签一般通过el表达式操作域对象

if标签
条件判断
有两种形式
1、有主体内容

// 当满足条件时,执行的代码

2、无主体内容

你可能感兴趣的:(课堂笔记)