JSP入门

JSP

JSP(Java Server Pages) 即Java 服务器端的页面,可以理解为一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码。JSP 本质上是一个Servlet ,在Tomcat 服务器中,首次访问JSP 会在Tomcat 的work 目录下生成对应的Java 源文件和字节码文件。

JSP 指令

用于配制JSP 页面,导入资源文件。格式:<%@ 指令名称 属性名1=属性值1 属性名2= 属性值2 ...%>

  1. page 指令,用于配制JSP 页面。常用的属性:

    contentType 设置响应体的MIME 类型以及字符集

    pageEncoding 设置当前页面的字符集

    import 导包

    errorPage 当前页面发生异常后,会自动跳转到该属性值指定的错误页面

    isErrorPage 标识当前页面是否为错误页面,若是,则可使用内置对象exception ,默认为否,不可使用exception 对象

    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>

  2. include 指令,包含其他文件。<%@include file="top.jsp"%>

  3. taglib 指令,导入资源,prefix 指定前缀,可以自定义。

    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

JSP 语法

<%-- 注释 --%>

脚本程序<% 代码片段 %>:该区域可以写Java 代码,转换后的代码等同于在Servlet 的service方法中。

JSP 声明<%! 代码 %>:该区域可声明Java 变量,JSP转换后在Java 类的成员位置。

JSP表达式<%= 代码 %>:示例<%= (new java.util.Date()).toLocaleString()%>

JSP 内置对象

在JSP 中不需要创建,直接使用的对象。一共有九个

变量名						真实类型						作用
pageContext				PageContext					当前页面共享数据,还可以获取其他八个内置对象
request					HttpServletRequest			一次请求访问的多个资源(转发)
session					HttpSession					一次会话的多个请求间
application				ServletContext				所有用户间共享数据
response				HttpServletResponse			响应对象
page					Object						当前页面(Servlet)的对象  this
out						JspWriter					输出对象,数据输出到页面上
config					ServletConfig				Servlet的配置对象
exception				Throwable					异常对象

out 为字符输出流对象,可以将数据输出到页面上,与response.getWriter()类似。

response.getWriter() 和out.write() 的区别:在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。response.getWriter() 数据输出永远在out.write()之前。

EL 表达式

JSP表达式语言(EL Expression Language ) 使得访问存储在JavaBean中的数据变得非常简单。JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null。语法:${表达式}

JSP 中默认支持EL 表达式,如果需要忽略EL 表达式,可以在当前JSP 文件的page 指令中指定属性isELIgnored="true",如果需要忽略单个EL 表达式可使用\${表达式}

EL 的使用

  1. EL 中的运算符

    算数运算符: + - * /(div) %(mod)

    比较运算符: > < >= <= == !=

    逻辑运算符: &&(and) ||(or) !(not)

    空运算符: empty

    ​ 功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0

    ​ ${empty list}:判断字符串、集合、数组对象是否为null或者长度为0

    ​ ${not empty str}:表示判断字符串、集合、数组对象是否不为null 并且 长度>0

  2. 获取值

    el表达式只能从域对象中获取值,${域名称.键名}:从指定域中获取指定键的值。

    pageScope,requestScope,sessionScope,applicationScope变量用来访问存储在各个作用域层次的变量。

    若在request域中存储了name=张三,则获取方式为:${requestScope.name}

    也可直接使用${键名},会依次从最小的域中查找是否有该键对应的值,直到找到为止。

    EL 表达式找不到键值也不会报错。

    获取对象、List集合、Map集合的值

    对象:${域名称.键名.属性名} ,本质上会去调用对象的getter方法。

    List集合:${域名称.键名[索引]}

    Map集合: ${域名称.键名.key名称}${域名称.键名["key名称"]}

  3. 隐式对象

    EL 表达式中有11个隐式对象,可以在表达式中直接使用这些对象,就像使用变量一样。

    常用的一个隐式对象pageContext ,可以用来获取JSP 的其它八大内置对象。

    ${pageContext.request.contextPath}:动态获取虚拟目录。

JSTL

JSTL (JavaServer Pages Tag Library) 即 JSP 标准标签库,是由Apache组织提供的开源的免费的JSP 标签库。

使用需要导入相关的jar 包,并在JSP 文件中使用taglib 指令引入。

从http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ 下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jar 和 jstl.jar 文件拷贝到 /WEB-INF/lib/ 下。

将 tld 下的需要引入的 tld 文件复制到 WEB-INF 目录下,并在 web.xml 文件中添加配置。

常用的JSTL 标签:if、choose、foreach。

语法格式:

<c:if test="<boolean>" var="<string>" scope="<string>">
   ...
</c:if>

<c:set var="salary" scope="session" value="${2000*2}"/>
<c:if test="${salary > 2000}">
   <p>我的工资为: <c:out value="${salary}"/><p>
</c:if>
运行结果为:我的工资为: 4000
test 为必须属性,接受boolean表达式,如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容。if标签没有else


<c:choose>
    <c:when test="<boolean>">
        ...
    </c:when>
    <c:when test="<boolean>">
        ...
    </c:when>
    ...
    ...
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>


<c:forEach
    items="<object>"
    begin="<int>"
    end="<int>"
    step="<int>"
    var="<string>"
    varStatus="<string>">
    ...
    
<c:forEach var="i" begin="1" end="5">
   Item <c:out value="${i}"/><p>
</c:forEach>
    
<c:forEach begin="1" end="10" var="i" step="2" varStatus="s">
    ${i} ${s.index} ${s.count} <br>
</c:forEach>
    
<c:forEach items="${list}" var="str" varStatus="s">
   ${s.index} ${s.count} ${str}<br>
</c:forEach>
varStatus为循环状态对象,index:容器中元素的索引,从0开始,count:循环次数,从1开始

使用JSTL 将List 中的数据展示到jsp页面中

在request 域中有一个存有User 对象的Lis t集合。需要使用jstl+el 将list 集合数据展示到jsp 页面的表格table 中

 <table border="1" width="500px" align="center">
    <tr>
      <th>编号</th>
      <th>姓名</th>
      <th>年龄</th>
      <th>生日</th>
    </tr>
    <c:forEach var="user" items="${list}" varStatus="s">
      <tr>
        <td>
          ${s.count}
        </td>
        <td>
          ${user.name}
        </td>
        <td>
          ${user.age}
        </td>
        <td>
          ${user.birthday}
        </td>
      </tr>
    </c:forEach>
</table>

相关资料:https://www.runoob.com/jsp/jsp-tutorial.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值