jsp

JSP

一. 什么是JSP

​ JSP全称Java Server Page(Java服务端页面),通俗上来讲就是可以编写Java代码的HTML页面。在最早期是没有JSP的,那么后端开发人员想要展示一个网页,就是在Servlet中 拼接html. 于是就有了JSP, 但是JSP不是一门新的技术,他的本质上还是Servlet, 意思是服务器还是会将 JSP 转成Java代码,在Java代码中,还是去拼接的页面。

​ 案例:1. 在页面输出3个“你好”.

​ 2.在页面展示一个4行5列的表格,表格中的数据从1到20.

jsp的执行流程

二. JSP语法分类

2.1 编译指令

页指令

<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" %>

contentType:内容类型;

language: 页面的语言

import: java.lang.❄ 、javax.servlet.❄、javax.servlet.jsp.❄、javax.servlet.http.*四个包不需要显式的导入。

包含指令

<%@ include file=”” %>

用法是在file中书写另外一个jsp页面,该指令是一个编译期的行为。

标签库指令

<%@ taglib %>

注意:标签库指令是讲到jstl的时候会用到。

2.2 脚本语法

html注释


隐藏注释

<%-- --%>

隐藏注释,在前端页面通过查看页面源代码的方式是无法查看到的。

脚本段

<%  %>

脚本端中就是书写Java代码的,如下图所示:

JSP声明

<%! int a = 3 %>

​ 可以透过JSP所生成的Java代码看出,通过jsp的声明的变量为一个成员变量。而普通的声明方式生成的Java代码可以看出是以及局部变量。

表达式

<%=a %>

使用jsp表达式,会将值直接输出到html页面中。

2.3 动作指令或者标准动作

jsp:include


include的动作指令与编译指令,最大的区别在于动作指令是一个运行期的行为,就在在代码的运行阶段才会将页面拼接到一起,而include的编译指令是一个编译期的行为,即页面是在编译阶段就已经合并到一起了。

jsp:forward与jsp:param


      

​ jsp:forward指令的意思是直接跳转到page对应的页面,可以通过 jsp:param携带参数。而到被跳转的页面可以直接通过 request(jsp内置对象) 来获取参数的值,获取的方式如下:

<%
    String name = request.getParameter("username");
%>
<%=name %>

jsp:useBean、jsp:setProperty、jsp:getProperty

<%-- 相当于实例化了一个对象:User user = new User() --%>


<%-- 相当于 user.setUsername("张三") --%>


<%-- 相当于 user.getUsername() --%>

三. jsp九大内置对象

​ 所谓的内置对象的意思就是可以直接使用,而不需要实例化。

​ 最常用的主要有三个 request、session、application. 其他的不用了解。

四. EL与JSTL

4.1 EL

El(Expression Language),全称表达式语言,目的是尽量的消除JSP页面中的java代码,使用方式如下:

${param.username}              # 相当于request.getParameter(“”)
${sessionScope.name}           # session.getAttribute(“name”)
${applicationScope.name}       # application.getAttribute(“name”);
${requestScope.name}           # request.getAttribute(“name”)
${3 + 4}  
${7 * 8}  
${8 / 7}
${sessionScope.user.name}     # 获取session中user的name属性
${user.name}                  # 会按照request -> session -> application的顺序查找
{empty requestScope.gender}   #判断一个数据是否为null, 或者一个字符串为空或""
${empty requestScope.gender ? "默认值" : requestScope.gender}  
5 > 3: ${5 > 3} 
5 > 3: ${5 gt 3}
<%-- greater than --%> 14 < 3: ${14 < 3}
14 < 3: ${14 lt 3}
<%-- less than --%> 14 >= 3: ${14 ge 3}
<%-- greater to equals --%> 14 <= 3: ${14 le 3}
<%-- less to equals --%> 14 == 3: ${14 eq 3}
<%-- equals --%>

4.2 JSTL

​ JSTL(jsp standard tag library)全称为"标准标签库",使用一套标准的标签库,来极大的简化代码的编写,必须要配置EL来使用,使用步骤如下:

​ 1) 引入javax.servlet.jsp.jstl.jar和jstl-impl.jar两个jar包

  1. 在jsp页面的头顶加上标准标签库指令:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
4.2.1 if语法

一个条件


        成年人.

多个条件


        性别为空,并且是成年人.

4.2.2 choose..when..otherwise

    
        中年人
    
    
        壮年
    
    
        成年人.
    
      
        小青年
    

4.2.3 foreach
<%--
    begin是开始的值;
    end是结束;
    var是定义的变量名.
    step是步进的意思,就是每次加多少
--%>

    ${i}


 <%--
        for(int i = 50; i <= 100; i+=10) {

        }
--%>


        
        ${u.id} -- ${u.name} -- ${u.gender == 'F' ? '女' : '男'}
        -- ${status.first} -- ${status.last} -- ${status.index} -- ${status.count} 

附录:

jsp的<%@ include file="" %> 通常是包含 jsp页面,但是一定要包含html页面的话,那么会产生乱码问题,可以使用如下方式来解决,在web.xml文件中添加如下内容:


    
        *.html
        UTF-8
    

你可能感兴趣的:(jsp)