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");
%>
<%
//集合
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);
%>
<%
Map
map.put(“uname”,“zhansgan”);
map.put(“uage”,18);
map.put(“usex”,true);
request.setAttribute(“map”, map);
%>
<%
request.setAttribute(“num1”, 10);
request.setAttribute(“num2”, 2);
request.setAttribute("aa", "aaa");
request.setAttribute("ab", "aaa");
request.setAttribute("ac", "bbb");
%>
<%
// 通过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、无主体内容