每日分享===JSP

今天回顾一下JSP的知识点
JSP:是一种动态网页编程技术,是java web 服务器端的动态资源.

一.基础语法

JSP支持两种注释的语法操作,显示注释:允许客户端看见.隐式注释,客户端无法看到.
1.显示注释语法:从HTML继承而来.

2)<!-- HTML 风格的注释 -->

2.隐式注释语法:从Java中继承,JSP自己的注释

// 注释,单行注释    /* 多行注释*/
<%-- JSP 注释 --%>

二.Scriptlet

所有嵌入在HTML代码中的java程序都必须要使用Scriptlet标记出来.
JSP中一共有3种scriptlet:
第一种:<% %>: java脚本段,可以定义局部变量,编写语句
代码会生成在编译后的Servlet源码中的service方法体中

<%
int a = 1;
System.out.println(a);
%>

第二种<%! %>: 可以定义全局(成员变量),方法,类.
代码会生成在编译后的Servlet源码的类体中

<%!
String str = "Hello JSP";
%>

第三种<%= %>:输出表达式,数据一个变量或具体内容
代码会生成在编译后的Servlet源码中的service方法体中

<%=a %> 

<%=100 %> 

<%=request.getMethod() %>
					
<%
String txt = "Hello JSP";
%>
					
<%=txt %>

<%
out.print(txt);
%>

三.JSP的指令标签

Page指令

语法: <%@ page 属性名1="属性值1"  属性名2="属性值2" %>

language:当前语言,目前只支持java
contentType:设置响应类型及编码格式
pageEncoding:编码格式
import:导包,只有该属性可以被设置多次
isErrorPage:是否是处理错误的页面,默认是flase,如果设置true表示当前页面是用来处理报错的
errorPage:报错时跳转的页面
JSP的编码取决于contentType属性中的charset的值,如果charset未设置,则使用pageEncoding的值,若两者都未设置,所有默认编码ISO-8859-1.

4.include静态包含:

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

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

<!-- 静态包含页面 -->
<%@include file="header.jsp" %>
<h2>----主体内容 --- </h2>
<h3>我是底部信息!</h3>

五.动态包含:

语法:<jsp:include page="要包含的页面或资源路径"></jsp:include>

相当于方法的调用,会生成两个源码文件,可以出现同名变量.降低了耦合度.
ps:jsp:include双标签之间不能写任何内容,包括空格和换行.(除非有参数)

动态包含可以传递参数:
<jsp:param value=“参数值” name = “参数名”/>
value属于支持表达式
name属性不支持表达式

获取参数通过 request.getparameter(“name属性值”);

<jsp:include page="header.jsp"></jsp:include>
<h2>----主体内容 --- </h2>

<%
	String val = "zhangsan";
	String name = "uname";
%>
<jsp:include page="footer.jsp"> 
	<jsp:param value="<%=val %>" name="uname"/>
</jsp:include>

六.9大内置对象

当前页的域对象pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的 out. request. reponse. session. application .
域对象
1.requset对象
2.application对象
3.seesion 对象

输出对象
4.response对象
5.out 对象

前页的域对象
6.pageContext对象

配置对象
7.config对象

当前JSP页面本身
8.page对象

异常对象:只有在页面中设置过isErrorPage=true时才能使用
9.exception对象

七.EL表达式

EL表达式语法:
${key} key代表的是存在域对象中的键

EL表达式一般操作的是域对象或字面量,不能操作变量.
取值范围:从小范围开始找,找到即可,如果都未找到,返回空字符串.page . request . session . appilcation .
如果想要获取指定域范围中的值,使用pageScope.requestScope.sessionScope.applicatonScope
ps:要获取JavaBean中的属性时,属性需要提供get方法

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 } <br/>
获取session作用域的值:${sessionScope.uname } <br/>
获取JavaBean对象:${myUser }<br/>
获取JavaBean对象的属性:${myUser.userName } ----- ${myUser.getUserName() } <br/>
获取普通变量名(取不到):${a }<br/>
获取字面量的值:${1 }<br/>

EL使用字符串方法
获取字符串中是指定字符的下标:${uname.indexOf("a") }<br/>
字符串截取:${uname.substring(0,2) }<br/>


EL表达式判断为空   ${empty 域变量  }
判断空字符串:${empty str1  } <br/>
判断null:${empty str2  } <br/>
判断字符串:${empty str3  } <br/>
判断字符串:${str3 != null && str3 != ""  } <br/>
//集合
	List<String> list1 = new ArrayList<>();
	list1.add("aaa");
	list1.add("bbb");
	list1.add("ccc");
	List<String> list2 = new ArrayList<>();
	List<String> list3 = null;
	request.setAttribute("list1", list1);
	request.setAttribute("list2", list2);
	request.setAttribute("list3", list3);
	
	
	List<User> userList = new ArrayList<>();
	userList.add(user);
	request.setAttribute("userList", userList);

EL操作集合
判断集合不为空:${!empty list1 } <br/>
判断集合为空:${empty list1 }  -- ${empty list2 }  -- ${empty list3 } <br/>
获取集合的值:${list1[0] }<br/>
获取集合中对象的属性:${userList[0].userName }<br/>
获取集合的长度:${userList.size() }<br/>
	Map<String,Object> map = new HashMap<>();
	map.put("uname","zhansgan");
	map.put("uage",18);
	map.put("usex",true);
	request.setAttribute("map", map);
%>
EL操作Map
判断map是否为空:${empty map }<br/>
获取map对象:${map }<br/>
获取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 } <br/>
减法:${num1 - num2 }<br/>
乘法:${num1 * num2 }<br/>
除法:${num1 / num2 } -- ${num1 div num2 }<br/>
大小比较:${num1 > num2 }  -- ${num1 >10 } --- ${(num1+num2) <= 10 }<br/>
等值比较:${aa == ab } -- ${aa eq ac }<br/>
${(num1+num2) > 10 && aa == ab }<br/>
${(num1+num2) > 10 || aa == ab }<br/>
通过pageContext对象设置指定域范围的值
pageContext.setAttribute("userName", "Lisa", PageContext.REQUEST_SCOPE);
String userName = (String) pageContext.getAttribute("userName", PageContext.REQUEST_SCOPE);
System.out.println(userName);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值