Jsp生命周期、Jsp的使用、JSP隐式对象、EL表达式、JSTL

jsp


JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束
JSP 网页几乎可以被当成一个普通的 Servlet 

JSP 生命周期

编译阶段:servlet容器编译servlet源文件,生成servlet类,并编译该类
初始化阶段:加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法
执行阶段:调用与JSP对应的servlet实例的服务方法
销毁阶段:调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例

语法格式:<% 代码片段 %> <%= 表达式 %>

<% 代码片段 %>,或编写与其等价的XML语句:<jsp:scriptlet>代码片段</jsp:scriptlet>
任何文本、HTML标签、JSP元素必须写在脚本程序的外面。

中文编码问题

如果我们要在页面正常显示中文,我们需要在 JSP 文件头部添加以下代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

JSP声明

<%! declaration; [ declaration; ]+ ... %>
例如:
<%! int i = 0; %> 
<%! int a, b, c; %> 
<%! Circle a = new Circle(2.0); %> 
或者编写与其等价的XML语句:
<jsp:declaration>
   代码片段
</jsp:declaration>

JSP表达式

<%= 表达式 %>
表达式先被转化成String,然后插入到表达式出现的地方
表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式

JSP注释

<%-- 注释 --%>    JSP注释,注释内容不会被发送至浏览器甚至不会被编译
//        单行注释
/*
*        多行注释
*/
<!-- 注释 -->    HTML注释,通过浏览器查看网页源代码时可以看见注释内容

JSP指令

<%@ page ... %>    定义页面的依赖属性,比如脚本语言、error页面、缓存需求、导入包等等
<%@ include ... %>    包含其他文件
<%@ taglib ... %>    引入标签库的定义,可以是自定义标签

JSP隐式对象

request        HttpServletRequest类的实例
response    HttpServletResponse类的实例
out        PrintWriter类的实例,用于把结果输出至网页上
session        HttpSession类的实例
application    ServletContext类的实例,与应用上下文有关
config        ServletConfig类的实例
pageContext    PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page        类似于Java类中的this关键字
Exception    Exception类的对象,代表发生错误的JSP页面中对应的异常对象

JSP 字面量

JSP语言定义了以下几个字面量:
布尔值(boolean):true 和 false;
整型(int):    与 Java 中的一样;
浮点型(float):    与 Java 中的一样;
字符串(string):以单引号或双引号开始和结束;
Null:    null。


EL表达式

EL表达式可以从pageContext,request,session,application四个作用域中取到值
如果4个作用域都有name属性,EL会按照从高到低的优先级顺序获取:
pageContext>request>session>application

输出name的值:${name},值后后面一定注意不要有空格,例如:“${name} ”不等于“${name}”

一般获取Bean层Hero类的hero对象name属性,需要hero.getName
用EL表达式写法:$(hero.name)

获取url传递过来的参数:http://127.0.0.1/jstl.jsp?name=abc
用EL表达式写法:${param.name}

条件判断
eq相等 ne、neq不相等,
gt大于, lt小于
gt大于, lt小于
gte、ge大于等于 
lte、le 小于等于 
not非 mod求模 
is [not] div by是否能被某数整除 
is [not] even是否为偶数 
is [not] odd是否为奇
例子:
${killNumber ge 10? "超神":"还没超神" }杀人数是否大于等于10


JSTL 

JSP Standard Tag Library 标准标签库 
需要两个jar包,分别是jstl.jar 和standard.jar

作用域可以是pageContext, request, session, application

在jsp页面中使用JSTL需要在通过指令进行设置
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

输出值
<c:out value="${name}" />  相当于 <%=request.getAttribute("name")%>

forEach循环:
方式一:
<c:forEach var="i" begin="1" end="10" step="1">  
    <c:out value="${i}" /> 
</c:forEach>
step每次自增数值,相对于java的for(int i=1;i<=10;i++){}

方式二:
<c:forEach items="${heros}" var="hero" varStatus="st"  >
    <tr>
        <td><c:out value="${st.count}" /></td>
        <td><c:out value="${hero}" /></td>
    </tr>
</c:forEach>

原文地址:https://www.cnblogs.com/snzd9958/p/10098981.html