JSP

JSP:Java Server Page ,SUN 公司提供的动态网页编程技术,是 Java Web 服务器端的动态资源。
Jsp本质上是一个 Servlet,当我们第一次访问 Jsp 的时候,Jsp 引擎都会将这个 Jsp 翻译 成一个 Servlet,这个文件存放在 Tomcat 中的 work 目录中。

注释

显示注释,这种注释是允许客户端看见的。
  < !-- HTML 风格的注释 – >
隐式注释,此种注释是客户端无法看见的。
  // 注释,单行注释 /* 多行注释*/
  <%-- JSP注释 --%>

Scriptlet

JSP 中最重要的部分就是Scriptlet( 脚本小程序),所有嵌入在 HTML 代码中的Java 程序都必须使用 Scriptlet 标记出来。
JSP中一种有三种Scriptlet(脚本小程序):
  1、<% %>: java 脚本段,可以定义局部变量、编写语句
  2、<%! %>:声明,可以定义全局(成员)变量、方法、类
  3、<%= %>:表达式,数据一个变量或具体内容

JSP 的指令标签

JSP 的指令标签用来控制整个 jsp 的行为,就当前 JSP 页面的某些方面对 JSP 转换器作出指示。
page指令
  格式:<%@ page 属性名=“属性值” 属性名=“属性值” %>
  常用属性:
    language:支持的语言,目前只支持Java。
    contentType:设置响应MIME类型及编码格式。
    pageEncoding:编码格式。
  页面的编码格式会以contentType属性中的charset的值为准,若charset未设置,则使用pageEncoding的属性值,若两者都未设置,则使用默认编码ISO-8859-1。
    import:导包;在page指令中只有该属性可以设置多次。
    isErrorPage:是否是处理错误的页面,默认为false,一般与errorPage结合使用。
    errorPage:当页面报错跳转的路径,一般与isErrorPage结合使用。
include静态包含
格式: <%@include file=“被包含资源的路径” %>
特点:
  相当于将页面的内容进行直接的复制,只会生成一个源码文件。
  不能出现同名变量。
  运行效率高一点点。耦合性较高,不够灵活。
include动态包含
格式:<jsp:include page=“要包含的资源路径”></jsp:include>
特点:
  相当于方法的调用,会生成多个源码文件,可以出现同名变量。
注:
  1、< jsp:include>双标签中不能有任何内容,包括换行和参数(除非有参数)
  2、page属性支持表达式
  3、动态包含可以设置参数,<jsp:param name=“参数名” value=“参数值” />
    name属性不支持任何表达式
    value属性支持表达式
include静态包含和include动态包含的区别:
  1、静态包含相当于内容的复制,而动态包含相当于方法的调用。
  2、静态包含只会生成一个源码文件,动态包含则会生成多个源码文件。
  3、静态包含的文件中不能出现同名变量,而动态包含可以包含同名变量。
  4、静态包含效率快,但耦合度高,不灵活;动态包含耦合度低,比较灵活。
  5、静态包含不能传递参数,动态包含可以。

jsp九大内置对象

四大域对象
  pageContext —— 当前页的域对象:只在当前页面有效,跳转后无效。
  request —— 请求域对象:只在一次请求中页面,服务器跳转有效。
  session —— 会话:只在一次会话中有效,客户端和服务端跳转后都有效,session销毁后失效。
  application —— 应用对象:在整个项目中都有效,服务器关闭或重启后失效。
两个输出对象
  response —— 响应对象
  out —— 输出流
    out.print(“输出…”)
配置对象
  config 对象的主要作用是取得服务器的配置信息。通过 pageConext 对象的 getServletConfig() 方法可以获取一个 config 对象。
异常对象
  exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true"的页面中才可以被使用,在一般的 JSP 页面中使用该对象将无法编译 JSP 文件。
page 对象
  page 对象代表 JSP 本身,只有在 JSP 页面内才是合法的。

EL表达式

格式:$ {域对象的键}
EL表达式一般操作的都是域对象,不能操作局部变量
域对象:
  pageContext:当前页面
  request:一次请求
  session:一次会话
  application:整个应用
取值范围:
  从小到大获取,找到即止;如果四个范围都未找到,则返回空字符串""。
获取指定域范围的值:
  pageScope、requestScope、sessionScope、applicationScope
1、获取域对象中的JavaBean:
  $ {键.字段名}
注:JavaBean中的字段要提供get方法。
2、判断域对象是否为空(null、空字符串、size)
  $ {empty 键} 为空返回true;不为空返回false
  判断集合时,会判断是否为null和长度是否大于0
3、判断是否不为空
  $ {!empty 键}
4、获取集合的长度
  $ {集合.size()}

<%
	     request.setAttribute("num", 10);
		 request.setAttribute("flag", true);
		 
		 // JavaBean
		 User user = new User();
		 user.setUname("admin");
		 user.setUpwd("123");
		 request.setAttribute("myUser", user);
		 
		 User user2 = new User();
		 request.setAttribute("user2", user2);
		 
		 User user3 = null;
		 request.setAttribute("user3", user3);
		 
		 // List
		 List<String> list = new ArrayList<String>();
		 list.add("aaa");
		 list.add("bbb");
		 list.add("ccc");
		 request.setAttribute("list", list);
		 
		 List<String> list2 = new ArrayList<String>();
		 request.setAttribute("list2", list2);
		 
		 List<String> list3 = null;
		 request.setAttribute("list3", list3);
		 
		 // Map
		 Map map = new HashMap();
		 map.put("aaa", "111");
		 map.put("bbb", 2222);
		 map.put("ccc-a", 333);
		 request.setAttribute("map", map);
		 
		 request.setAttribute("a", 1);
		 request.setAttribute("b", 2);
		 request.setAttribute("c", 10);
		 
		 request.setAttribute("aa", "1");
%>
EL取值:${uname }  <br>
	 获取指定范围的域对象:${sessionScope.uname }<br>
	 获取数值型:${num } -- 获取布尔型:${flag }<br>
	 获取对象的属性:${myUser } -- ${myUser.uname } -- ${myUser.getUpwd() }<br>
	 判断对象是否为空:${empty myUser } --- ${empty user2 } ---  ${empty user3 } <br>
	 判断字符串是否为空:${empty uname }<br>
	 判断集合是否为空:${empty list } --- ${empty list2 } --- ${empty list3 }<br>
	 获取集合的长度:${list.size() }<br>
	 获取集合的值:${list[0] }<br>
	 获取Map的值:${map.aaa } --- ${map["bbb"] }<br>
	 运算:${a + b } -- ${c - a } -- ${b*c } ---${c/b } = ${c div b }<br>
	 等值比较:${a==aa } -- ${a eq aa } <br>
	 大小比较:${a > 0 } -- ${a+1 > 0 && b-1 <10 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值