(1)JSP脚本程序 脚本程序可以包含任意量的Java语句、变量、方法或表达式
语法:<% Java代码 %>
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
(2)JSP表达式:对数据的表示,系统将其作为一个值进行计算和显示
语法:<% = Java表达式/变量 %>
<%= (new java.util.Date()).toLocaleString()%>
(3)JSP声明:一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。
语法:<%! Java代码 %>
<%! int i = 0; %>
<%! int a, b, c; %>
<%!
String formatDate(Date d){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
return format.format(d);
}
%>
Hi,today is <%=formatDate(new Date())%>
(4)JSP注释
<%-- 注释 --%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译
<!-- 注释 --> HTML注释,通过浏览器查看网页源代码时可以看见注释内容
<% //单行注释 %> JSP脚本单行注释
<% /*多行注释 */ %> JSP脚本多行注释
(5)JSP指令
<%@ page ... %> 定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" autoFlush="true" session="true" isELIgnored="false" isErrorPage="false"%>
<%@ include ... %> 静态包含命令 主页面会把子页面的源代码包含进来,然后整体编译成servlet。
<%@include file="world.jsp"%>
<%@ taglib ... %> 引入标签库的定义,可以是自定义标签
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
(6)JSP隐含对象(9个)
JSP内置对象是 Web 容器创建的一组对象
JSP内置对象是可以直接在JSP页面使用的对象 ,无需使用“new”获取实例
request:HttpServletRequest类的实例
request.getParameter("a");//request.getParameterNames();//request.setAttribute("b", "c");
response:HttpServletResponse类的实例
response.sendRedirect("login.jsp");//response.getWriter().println("PrintWriter hello");//response.setStatus(404);
out:PrintWriter类的实例,用于把结果输出至网页上
out.write("JspWriter hello");//JspWriter
session:HttpSession类的实例
session.setAttribute("name", "zhangsan");//session.removeAttribute("name");
application:ServletContext类的实例,与应用上下文有关
application.getInitParameter("config");//application.getAttribute("c");
config:ServletConfig类的实例
config.getInitParameter("config1");//config.getInitParameterNames();
pageContext:PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
pageContext.setAttribute("a", "b");//pageContext.getRequest();//pageContext.getResponse();//pageContext.getSession();//pageContext.getPage();
page:类似于Java类中的this关键字
Exception:Exception类的对象,代表发生错误的JSP页面中对应的异常对象
(7)JSP行为/JSP动作
JSP行为标签使用XML语法结构来控制servlet引擎。它能够动态插入一个文件,重用JavaBean组件,引导用户去另一个页面,为Java插件产生相关的HTML等等。
行为标签只有一种语法格式,它严格遵守XML标准:<jsp:action_name attribute="value" />,行为标签基本上是一些预先就定义好的函数。
jsp:include 用于在当前页面中包含静态或动态资源
<jsp:include page="xxx.jsp">,主页面和子页面分别单独编译成相应的servlet。
在A.jsp中,静态包含<%@include file="C.jsp" %>
在B.jsp中,动态包含<jsp:include page="C.jsp">
那么,当C.jsp被修改之后,就需要重新编译C.jsp和A.jsp,而B.jsp不需要重新编译。
jsp:useBean:寻找和初始化一个JavaBean组件
jsp:setProperty:设置 JavaBean组件的值
jsp:getProperty:将 JavaBean组件的值插入到 output中
jsp:forward:从一个JSP文件向另一个文件传递一个包含用户请求的request对象
jsp:plugin:用于在生成的HTML页面中包含Applet和JavaBean对象
jsp:element:动态创建一个XML元素
jsp:attribute:定义动态创建的XML元素的属性
jsp:body:定义动态创建的XML元素的主体
jsp:text:用于封装模板数据
<jsp:useBean id="user" class="com.test.User" scope="page"></jsp:useBean>
<jsp:setProperty property="userName" value ="zhangsan" name="user"/>
<jsp:setProperty property="password" value ="123456" name="user"/>
用户名:<jsp:getProperty property="userName" name="user"/><br/>
密码:<jsp:getProperty property="password" name="user"/>