JSP介绍
1.jsp介绍
JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种
用于开发动态web资源的技术。JSP实际上就是Servlet。
jsp = html + java
html:静态内容
servlet:适合编写java逻辑代码
jsp:适合编写输出动态内容,但不适合编写java逻辑。
JSP执行原理:
所有JSP页面,在执行的时候都会被服务器端的JSP引擎转换为Servlet(.java文件),
然后又由JSP引擎调用Java编译器,将Servlet(.java文件)编译为Class文件
(.class文件),然后由Java虚拟机(JVM)解释执行。
jsp基础语法
(1).html 标签
(2).小脚本 <% java代码 %>
表达式 <%= 2+3 %> 相当于out.print() 并且可以运算
声明 <%! %> 表示在类中定义全局成员,和静态块。
JSP注释
JSP注释:<%-- 被注释的内容 --%> 特点:安全,省资源
网页注释: 特点:不安全,浪费资源
JSP三大指令
2.jsp三大指令
(1)page指令
<%@ page session="true" %>
<%@ page errorPage="/error.jsp" %>
<%@ page isErrorPage="true" %>
<%@page import="java.lang.*"%>
JSP会自动导入以下的包:
import java.lang.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
(2)include指令
<%@include file="/4.jsp" %>
(3)taglib指令
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="o"%>
JSP六大动作
3.jsp六大动作
(1)<jsp:include > 动态包含
<% <jsp:include page="/other.jsp"></jsp:include> %>
(2)<jsp:forward> 请求转发
(3)<jsp:param> 设置请求参数
<jsp:forward page="/other.jsp">
<jsp:param value="zhangsan" name="username"/>
<jsp:param value="123456" name="password"/>
</jsp:forward>
<%=request.getParameter("username") %>
<%=request.getParameter("password") %>
(4)<jsp:useBean> 创建一个对象
<jsp:useBean id="user" class="com.test.User"/>
(5)<jsp:setProperty> 给指定的对象属性赋值
<jsp:setProperty property="name" name="user" value="dp"/>
(6)<jsp:getProperty> 取出指定对象的属性值
<jsp:getProperty property="name" name="user"/>
JSP9个内置对象
4.jsp9个内置对象
(1)request 请求对象
(2)response 响应对象
(3)session session对象
(4)application context域对象
(5)exception 异常对象
(6)page 当前servlet实例 相当于this
(7)config 获取配置信息的对象
(8)out 输出对象
(9)pageContext 域对象 该域对象只在当前页面有效 出了页面获取不到
/* 一般系统方法中 需要一个int参数 一般会是常量 */
/* 只要有pageContext 就能向各个域中 添加值 参数三 表示对应域的常量 */
pageContext.setAttribute("p", "pageContext",
PageContext.PAGE_SCOPE);
pageContext.setAttribute("p", "request",
PageContext.REQUEST_SCOPE);
pageContext.setAttribute("p", "session",
PageContext.SESSION_SCOPE);
pageContext.setAttribute("p", "application",
PageContext.APPLICATION_SCOPE);
<%=pageContext.findAttribute("p") %>
${p }
JSP EL表达式的隐式对象
5.EL表达式:
EL表达式:expression language 表达式语言
要简化jsp中java代码开发。
它不是一种开发语言,是jsp中获取数据的一种规范
功能:获取数据
EL表达式能获取存在4个作用域中的数据
EL获取对于null这样的数据,在页面中表现为空字符串
jsp el表达式的隐式对象:
(1)pageContext
域对象
(2)pageScope
在el表达式中代表pageContext域对象
(3)requestScope
在el表达式中代表request域对象
(4)sessionScope
在el表达式中代表session域对象
(5)applicationScope
在el表达式中代表application域对象
<form action="${pageContext.request.contextPath }/9.jsp" method="post">
用户名:<input type="text" name="username"><br/>
密码:<input type="text" name="password"><br/>
<input type="checkbox" name="hobby" value="篮球">篮球
<input type="checkbox" name="hobby" value="唱歌">唱歌<br/>
<input type="submit" value="提交">
</form>
(6)param
${param.username }
(7)paramValues
${paramValues.hobby[0] }
(8)header
${header["User-Agent"]}
(9)headerValues
(10)cookie
${cookie.JSESSIONID }
集合中el表达式的使用
${list[0] }
${map.d }
${map['d'] }
<%
String str1 = null;
request.setAttribute("str1", str1);
String str2 = "";
request.setAttribute("str2", str2);
%>
${empty str1 }
${empty str2 }
JSTL表达式
6.jstl表达式
<c:set var="num" value="10" scope="session"></c:set>
<c:out value="${num1} " default="aaaa"></c:out>
<c:remove var="num" scope="session"/>
${num }
<c:set var="n" value="10"></c:set>
<c:if test="${n < 5 }">
aaaaa
</c:if>
<c:if test="${n > 5 }">
bbbbb
</c:if>
<c:choose>
<c:when test="${n==5 }">5</c:when>
<c:when test="${n==10 }">10</c:when>
<c:otherwise>
xxxxx
</c:otherwise>
</c:choose>
<%
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
request.setAttribute("list", list);
%>
<c:forEach items="${list }" var="l" step="1">
${l }
</c:forEach> <br/>
<c:forEach var="i" begin="0" end="10" step="2">
${i }<br/>
</c:forEach>