服务器渲染 -JSP

jsp理解

        jsp像写HTML一样,只是单一的HTML是静态的使用不灵活,jsp可以在页面中嵌套Java代码,使用起来更加方便灵活,可以动态获取数据。jsp技术基于Servlet,  是对 Servlet 的包装。同时也在Servlet的基础上进行了扩展,更容易对数据进行排版。

        Tomcat 服务器会把 jsp 页面解析先成为一个 java 源文件。再编译成为.class 字 节 码 程 序

JSP 公式:

jsp=html+java 片段+标签+javascript+css

page 指令(常用的)

1. language: jsp 翻译后是什么语言文件, 只支持 java

2. contentType : jsp 返回的数据类型,对应源码中 response.setContentType()参数值

3. pageEncoding 属性:当前 jsp 页面文件本身的字符集

4. import 属性: 跟 java 源代码中一样。用于导包,导类

JSP 三种常用脚本基本语法

声明脚本格式:<%! 声明 java 代码 %>

声明脚本用于定义 jsp 的需要属性、方法、静态代码块和内部类等。

表达式脚本格式:<%属性=表达式%>

在 jsp 页面上输出数据 , 表达式脚本中的表达式不能以分号结束。

代码脚本格式:<% java 代码%>

可编写需要的功能代码,代码脚本可以和表达式脚本一起组合使用,在 jsp 页面上输出数据。

JSP 九大内置对象

1. out 向客户端输出数据,out.println("");

2. request 客户端的 http 请求

3. response 响应对象

4. session 会话对象

5. application 对应 ServletContext

6. pageContext jsp 页面的上下文,是一个域对象,可以 setAttribue(),作用范围只是本页面

7. exception 异常对象 , getMessage()

8. page 代表 jsp 这个实例本身

9. config 对应 ServletConfig

JSP 域对象

1. pageContext 域对象:存放的数据只能在当前页面使用,其他页面无法取出数据,范围最小。例:请求转发。

2. request 域对象:存放的数据在一次 request 请求有效,第二次request无效。例:重定向

3. session域对象:存放的数据在一次会话有效,会话关闭无效。例:浏览器关闭

4. application域对象:存放的数据在整个 web 应用运行期间有效, 范围最大。例:Tomcat重启

域对象作用域范围:pageContext < request < session < appliction

注意事项和细节

      jsp 页面嵌套了Java代码,不能直接用浏览器运行。要通过浏览器访问 Tomcat 来访问 jsp 页面。jsp 页面本质是一个 Servlet 程序,和Java相关联。

EL 表达式

EL 表达式语法:${key}

EL 表达式在输出 null 时,输出的是 " "空字符串

jsp 表达式脚本输出 null 的时,输出的是 "null" 字符串

EL 表达式常用输出 Bean 的普通属性、 数组属性、List集合属性和 map 集合属性

在Jspy页面中用EL表达式调用属性变量,输出数据更简洁。

EL运算语法:${ 运算表达式}

        empty 运算可以判断一个数据是否为空,如果为空,返回 true,否则返回flase

        ●值为 null

        ● 值为空串的时

        ● 值是 Object 类型数组,长度为零

        ● list 集合,元素个数为零

        ● map 集合,元素个数为零

        以上情况为空

EL 的三元运算和Java的三目运算符是一样的使用,只是语法表现不同

EL 的 11 个隐含对象 

 EL 四个特定域变量 

 可通过 request(http请求) 对象来获取和 HTTP 协议相关的数据

请求的协议:request.getScheme() 

请求的服务器 ip 或域名:request.getServerName() 

请求的服务器端口号:request.getServerPort() 

当前工程路径:getContextPath()

请求的方式(GET 或 POST):request.getMethod() 

客户端的 ip 地址:request.getRemoteHost()

会话的唯一标识:session.getId() 

JSTL 标签库

JSTL 用于替换代码脚本,使 jsp 页面 变得更简洁。

JSTL 由五个标签库组成 

 使用前,需导入相关Jar包,导入后需要重新发布 web 工程,不然不会识别jstl。

<c:set/>:set 标签可以往域中保存数据

<c:if/>: if 标签用来做 if 判断。 test 属性表示判断的条件(用 EL 表达式输出)

<c:choose/>:相当于Java的switch

<c:when/>:相当于case

<c:otherwise/>:相当于default

这三个标签是一起组合使用的,使用的标签不是单标签,都要关闭。

<c:forEach/>:相当于for循环,用来遍历输出,主要有四种形式:

● 普通遍历输出 i 到 j

<c:forEach begin="1";end="5";var="i">
         <li>排名=${i}</li>
</c:forEach>

1.遍历 1 到 5,

2. 输出 begin 属性设置开始的索引 end 属性设置结束的索引

3. var 属性表示循环的变量(也是当前正在遍历到的数据)

4. 等价 for (int i = 1; i <= 5; i++) 

● 遍历数组

<c:forEach items="${requestScope.sports}" var="sport">
    运动名称= ${sport}<br/>
</c:forEach>
    1. items 遍历的集合/数组
    2. var 遍历到的数据
    3. 等价 for (Object item: arr) {}

● 遍历 Map

<c:forEach items="${requestScope.cities}" var="city">
    城市: ${city.key}--${city.value}<br/>
</c:forEach>
    1. items 遍历的map集合
    2. var 遍历到的数据
    3. entry.key 取出key
    4. entry.value 取出值

● 遍历 Lis

<c:forEach items="${requestScope.monsters}" var="monster">
    个人信息: ${monster.id}-${monster.name}-${monster.skill}<br/>
</c:forEach>
    items 表示遍历的集合
    var 表示遍历到的数据
    monsters.属性值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨犀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值