美文网首页
JSP模板引擎

JSP模板引擎

作者: kaixingdeshui | 来源:发表于2020-11-08 09:49 被阅读0次
模板引擎

用于web开发,是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。

模板引擎的分类

1.置换型 模板引擎

将规定好的文本标记替换为目标内容。这种模板引擎实现简单,除了标签替换之外,很少支持诸如子模板引用,流程控制等功能。置换模板引擎通常用于业务逻辑不是很复杂的项目,比如生成短信,生成电子邮件,甚至很多代码生成器也在用它。可以说,置换型模板引擎的思想是整个模板引擎界的基础。

2.解释型 模板引擎

置换标记,有了解释器的存在,可以支持更加复杂的标记和语法。

3.编译型 模板引擎

它通过解析引擎和一系列的算法将我们定义的模板转换为页面文件,然后直接访问页面文件即可。

主要回顾下JSP 模板引擎

学习网站
https://www.runoob.com/jsp/jsp-jstl.html
概念

Java Server Page(java服务器端页面技术),是Sun公司制定的一种服务器端动态页面生成技术的规范。

JSP结构

HTML标签 + java代码 , 即在 HTML 页面中嵌入 java 代码。

JSP的几种写法

java代码片段: <% Java代码片段; %>
java代码表达式:<% =Java代码表达式 %>
java方法:<% !Java方法 %>

<body>
    <!--jsp代码块-->
    <% User user = new User();  %><br>
    <!--jsp代码表达式-->
    <% =user %><br>
    <!--JSP定义方法 -->
    <%
    int add(int a,int b){
        return a+b;
    }
    %><br>
    <!--jsp调用方法-->
    <%=add(1,3)%><br>
    <!--jsp循环-->
    <% for(int i=0;i<10;i++){ %>        
        <h3>现在遍历到了:<%=i%></h3>  
    <%}%>
</body>

三大指令

1.page指令

import 用于导包的,可以一次性导入多个包,中间用逗号隔开,也可以使用多次page指令来进行导包;
pageEncoding 告诉JSP引擎,JSP文件保存的时候应该采用的编码格式;
contentType 等价于response.setContentType();
errorPage 指向错误处理页面(需要手动书写错误页面)
isErrorPage 可以写true/false,即定义这个页面是否是错误页面,默认是false;这个属性和上面的errorPage属性一般是成对出现的,成对并不是指在一个页面都出现,而是指关联着出现;
session 可以写true/false,默认是true,即表示当前页面是否支持session;
isELIgored 可以写为true/false,表示这个JSP是否支持EL表达式,默认为true;

2.include指令

这个指令里面最主要的属性是file,用来表示这个页面中要包含哪个页面;

3.taglib 指令

定义一个标签库以及其自定义标签的前缀;

image.png
<% page language="java" contentType="text/html;charset=UTF-8" pageEncoding="utf-8"%>

<% include file="top.jsp" %>

<% taglib url="http://java.sun.com/jsp/jst1/core" prefix="c" %>

九大对象

隐含对象 类型 说明
request HttpServletRequest 代表请求对象
response HttpServletResponse 代表响应对象
out JSPWriter 输出数据流
session HttpSession 会话
application ServletContext 全局Servlet上下文对象
pageContext PageContext Jsp页面上下文
page Object 代表jsp页面本身,即this
config ServletConfig Servlet配置对象
exception throwable 捕获页面异常对象
image.png

7大动作

语法 描述
jsp:include 在页面被请求的时候引入一个文件。
jsp:useBean 寻找或者实例化一个JavaBean。
jsp:setProperty 设置JavaBean的属性。
jsp:getProperty 输出某个JavaBean的属性。
jsp:forward 把请求转到一个新的页面。
jsp:plugin 根据浏览器类型为Java插件生成OBJECT或EMBED标记。
jsp:element 定义动态XML元素
jsp:attribute 设置动态定义的XML元素属性。
jsp:body 设置动态定义的XML元素内容。
jsp:text 在JSP页面和文档中使用写入文本的模板

image.png

JSTL 标签库

概念

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

JSTL支持通用的,结构化的任务,比如迭代,条件判断,xml文件操作,国际化标签,sql标签。除了这些,还提供一个框架来使用集成JSTL的自定义标签。

JSTL的分类:

核心标签,格式化标签,sql标签,xml标签,JSTL函数

核心标签库

导入方式:

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

EL 表达式

概念

expression language,主要是用来简化JSP中的表达式的代码,可以很方便的以标签的形式来代替jsp中的部分java代码,以提高代码的可读性。

语法
${el语句}

EL隐含对象

类别 标识符 描述
JSP pageContext 当前页面
作用域 pageScope 页面作用域
requestScope 请求作用域
sessionScope 会话作用域
applicationScope 应用程序作用域
请求参数 param 存储请求参数
paramValues 将请求参数的所有值作为String数组存储
请求头 header 按名称存储请求头
headerValues 将请求头的所有值作为String数组存储
Cookie cookie 按名称存储请求附带的cookie
初始化参数 initParam 按名称存储web应用程序上下文初始化参数

eg:

//java代码
ArrayList<User> lists = new ArrayList<User>();
lists.add(new User("1001","test",22));
lists.add(new User("1002","test2",33));
session.setAttribute("userList",ists);

Map<String,user> map = new HashMap<String,User>();
map.put("user1",new user("1003","test3",45));
session.setAttribute("currentUser",map);


//前端取值
//读取集合
${uesrList[0].name}<br>
${uesrList[1].name}<br>

//读取map
${currentUsr.user1.name}<br>

EL 运算符

算术运算符
算术运算符 说明 示例 结果
+ ${1 + 1} 2
- ${1 - 1} 0
* ${1*2} 2
/或div ${3/2} 1.5
%或mod 取余 ${3%2} 1
关系运算符
关系运算符 说明 示例 结果
== 或 eq 等于 1==1 或 {1eq1} true
!= 或 ne 不等于 1!=1 或 {1ne 1} false
< 或 lt 小于 1 < 2 或 {1 lt 2} true
> 或 gt 大于 1 > 2 或 {1 gt 2} false
<= 或 le 小于或等于 1 <= 2 或 {1 le 2} true
>= 或 ge 大于或等于 1 >= 2 或 {1 ge 2} false
逻辑运算符
逻辑运算符 说明 示例 结果
&& 或 and 交集 a and b a,b为true时为true,其它情况为false
|| 或 or 并集 a||b 或 aorb a,b都为fasle时为false,其它情况为true
! 或 not !a 或 not a 当a为true时,为false
条件运算符
${表达式1?表达式2:表达式3}
验证运算符
${empty 表达式}

案例

<!--遍历recommentList-->
<c:forEach items="${list}" val="item">
    ${item.name}
</c:foreach>

<!--利用下标取出前4元素 status-->
<c:forEach items="${split}" val="subString" varStatus="status">
    <c:if test="${status.index<4}">
        <li classs=""><img src="${baseUrl}${subString}" alt="图片丢失">
    </c:if>
</c:forEach>

<!--取出123-->
<c:forEach var="x" begin="1" end="${pageProductHot.extra.listPageCount}">
    <a href="${baseUrl}product/jsp/index.jsp">${x}</a>
</c:forEach>
<!--取出前5个元素-->
<c:forEach items="${pageProductHot.list}" var="item" varStatus="status">
    <c:if test="${(status.index) < 5}">
        ${item.name}
    </c:if>
</c:forEach>

<!--判断字符串是否为 "" 判断是否为null -->
<c:if test="${not empty item.coverImgUrl || item.coverImgUrl eq null}">
</c:if>

<!--分隔字符串 并且判断字符串长度 -->
<c:set value="${fn:split(item.imgUrls,',')}" var="split"/>
    <c:if test="${fn:length('${split}') == 1 }">
        <img src="${baseUrl}${split[0]}">
        <c:if test="${fn:length(item.textContentShort) > 100}">         </c:if>
    </c:if>
</c:set>

SpringBoot 下JSP的使用

  1. 引入JSP的starter
        <!--引入jstl 和内嵌tomcat,jstl是一个jsp标签集合,它封装了jsp应用的核心功能-->
        <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <!--tomcat-embed-jasper主要是用来支持jsp解析和运行-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

2.构建jsp目录
在src下的main目录下新建webapp目录,子目录WEB-INF目录


image.png
  1. 配置jsp和数据库
# 端口
server.port=8081

# 设置jsp的访问目录
spring.mvc.view.prefix=/WEB-INF/jsp/
# 设置jsp文件以什么后缀结尾
spring.mvc.view.suffix=.jsp

# 配置数据库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.name=root
spring.datasource.password=123

4.让SpringBoot项目能创建JSP文件
file --> Project Structure --> Modules -- > web -->Deployment Descriptors 添加web.xml,Web Resource Directory添加web.xml


image.png

5.创建jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Spring Boot jsp</title>
</head>
<body>

 welcome

  你好 

</body>
</html>

6.运行项目
右侧maven框选项项目下的Plugins下的SpringBoot run:


image.png

相关文章

网友评论

      本文标题:JSP模板引擎

      本文链接:https://www.haomeiwen.com/subject/cgwcbktx.html