猿进化系列10——一文学会动态模板的套路

2020-07-28 16:45:05 浏览数 (1)

看完上一个章节,相信你已经掌握了servlet相关技术的基础知识和用法,你也学习过java的一些基础知识了,今天我们就一起来掌握动态web页面的制作姿势.

JSP(全称JavaServer Pages),是一门动态网页技术,可以在页面中嵌入输出java代码,动态输出数据,此时的页面,你可以想想它就是一个模板,把动态内容直接输出到你想要的位置就好了。像这样的技术也叫做模板技术,在以后的职业生涯中,你还会遇到很多很多,比如Velocity,FreeMaker……

JSP是运行在应用服务器中的,从本质上讲,它其实也是一个servlet,JSP页面在第一次在运行时,会被应用服务器翻译成一个servlet文件,然后应用服务器会将这个servlet进行编译,最后执行输出HTML文档。

JSP页面主要由常用指令,代码片段,内置对象构成我们看看JSP页面常用的指令都有哪些东西吧:

1.page指令, <%@ 指令名称 属性名1=属性值1 属性名2= ... %>,比如上图中的page指令,contentType用于声明页面的响应体字符编码等工作。import用于导入页面中需要使用的java类,errorPage指定页面运行发生异常时,跳转的错误页面…

2.include指令,<%@include file="top.jsp"%> 用于在页面中引入另一个页面

3. taglib指令,<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>用于指定使用哪个标签库,给出了例子是使用了c标签库

JSP还提供了几个内置对象用于直接在页面使用。具体情况如下表

变量名

真实servlet对象

作用

pageContext

PageContext

当前页面共享数据,还可以获取其他八个内置对象

request

HttpServletRequest

一次请求访问的多个资源(转发)

session

HttpSession

一次会话的多个请求间

application

ServletContext

所有用户间共享数据

response

HttpServletResponse

响应对象

page

Object

当前页面(Servlet)的对象 this

out

JspWriter

输出对象,数据输出到页面上

config

ServletConfig

Servlet的配置对象

exception

Throwable

异常对象

EL(Expression Language) 表达式的出现是为了使JSP页面写起来更加简单。在JSP页面中访问模型对象可以通过EL表达式来实现。所有EL表达式的格式都是以“${}”表示。例如,${ userinfo}代表获取变量userinfo的值。当EL表达式中的变量不给定范围时,则默认在page范围查找,然后依次在request、session、application范围查找。也可以用范围作为前缀表示属于哪个范围的变量,例如:${ pageScope. userinfo}表示访问page范围中的userinfo变量。接下来我们看看一些例子:

为了弥补html的不足(其实是为了解决自己搞出来的页面输出太多的代码片段问题),JAVAEE定义了JSTL标签,用于消灭页面的代码片段,从而提高代码的可读性和维护性。JSTL的核心标签主要有以下几类:核心标签库、I18N格式化标签库、SQL标签库、XML标签库、函数标签库。

今天我们就讲讲结果常用的核心标签库:

<c:if test="true"> <h1>条件为真所以输出,if标签没有else噢...</h1> </c:if>

注意,if标签是没有else的,只有if条件。属性为test,接受条件为boolean类型的值,如果满足条件,就输出标签中的内容。

<% request.setAttribute("number",8); %> <c:choose> <c:when test="${number == 1}">星期一</c:when> <c:when test="${number == 2}">星期二</c:when> <c:when test="${number == 3}">星期三</c:when> <c:when test="${number == 4}">星期四</c:when> <c:when test="${number == 5}">星期五</c:when> <c:when test="${number == 6}">星期六</c:when> <c:when test="${number == 7}">星期天</c:when> <c:otherwise>世界上真的有星期8噢</c:otherwise> </c:choose>

choose标签相当于switch语句,内嵌标签when标签,相当于case语句,otherwise标签,相当于delault语句。

<c:forEach begin="1" end="10" var="i" step="2" varStatus="s"> ${i} <h3>${s.index}<h3> <h4> ${s.count} </h4><br> </c:forEach>

forEach标签可以用于循环实现数学计算以及计数的功能,属性:begin:开始值 end:结束值 var:临时变量step:步长(步长的意思是增量,为2即每次加2的意思) 。varStatus:循环状态对象 它有两个属性:index:容器中元素的索引,从0开始count:循环次数,从1开始

<c:forEach items="${servletUserList}" var="user" > 姓名:${user.name} 年龄:${user.age} 生日${user.birthdayStr}<br> </c:forEach>

forEach标签最常用于循环输出对象,这个对象一般来说是从servlet中传递过来的,当然你也可以在页面进行定义,只是为了编码规范,一般不会这样写,如果有幸遇到老系统,也不要奇怪噢。

下一章节,猿人工厂君要带大家学习数据库啦,请大家安装好MYSQL和图形工具SQLyog.很快,你就可以开发网站了噢。

0 人点赞