JSP(JavaServer Pages)

目录

Jsp注释

        1.显式注释

        2.隐式注释

Scriptlet脚本小程序

                1.Java脚本段,可以写Java代码、定义局部变量、编写语句等                       

                2.声明,声明全局变量、方法、类等

                3.输出表达式,可以输出变量或字面量

include包含

include静态包含

include动态包含

JSP的四大域对象

            1.page域对象

            2.request域对象

            3.session域对象

            4.application域对象

JSP跳转方式

            1.服务端跳转

            2.客户端跳转

  EL表达式

        获取List

        获取Map

        获取JavaBean

        empty


Jsp注释

JSP中一共有两种类型的注释


        1.显式注释


                能够在客户端查看的注释
               

                继承HTML风格的注释
                            <!-- HTML注释 -->


        2.隐式注释


                不能在客户端查看的注释
               

                1.JSP自己的注释
                            <%--JSP自己的注释--%>


                2.继承Java风格的注释(Java脚本段中)
                            //单行注释
                            /* 多行注释 */


Scriptlet脚本小程序


            JSP中一共有三种Scriptlet脚本小程序:


                1.Java脚本段,可以写Java代码、定义局部变量、编写语句等
                       

                         <%
                            //这里可以写Java代码
                        %>

                        生成的代码在servlet的service方法体中
                 

                2.声明,声明全局变量、方法、类等


                        <%!
                           //声明全局变量
                         %>

                         生成的代码在servlet的类体中
                 

                3.输出表达式,可以输出变量或字面量


                        <%=数值%>
                        生成的代码在servlet的service方法体中,相当于out.print()输出

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Scriptlet脚本小程序</title>
</head>
<body>
      <%--      1.Java脚本段,可以写Java代码、定义局部变量、编写语句等--%>
        <%
          //定义局部变量
          String str="Hello JSP";
          //输出内容到控制台
          System.out.println(str);
          //输出内容到浏览器
          out.print(str);
          out.write("---------");
          //输出全局变量
          out.write("全局变量:"+num);
          out.write("---------");
        %>
      <%--    2.声明,声明全局变量、方法、类等--%>
        <%!
          int num=10;
        %>
      <%--    3.输出表达式,可以输出变量或字面量--%>
        <%=str%>
</body>
</html>

include包含

header.jsp

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

    <h2>头部内容</h2>

</body>
</html>

footer.jsp

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

    <h2>底部内容</h2>
<%
    //获取动态包含传递的参数
    String uname=request.getParameter("uname");
    String msg=request.getParameter("msg");
    out.println("uname:"+uname+",msg:"+msg);
%>

</body>
</html>

include静态包含


            格式:
                        <%@include file="要包含页面的地址"%>
            特点:
                1.将内容进行直接的替换
                2.静态包含只会生成一个源码文件,最终内容全部在_jspservice方法体中(源码文件中)
                3.不能出现同名变量
                4.运行效率高一点点,耦合度较高,不够灵活。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>include静态包含</title>
</head>
<body>
    
    <%@include file="header.jsp"%>
    <h2>主体内容</h2>
    <%@include file="footer.jsp"%>

</body>
</html>


include动态包含


            格式:
                        <jsp:include page="要包含的页面地址"></jsp:include>
                        注意:page属性支持表达式
            特点:
                1.动态包含相当于方法的调用
                2.会生成多个源码文件
                3.可以定义同名变量
                4.效率高,耦合度低
            注意:
                当动态包含不需要传递参数时,include双标签之间不要有任何内容,包括换行和空格

            使用动态包含传递参数
                        <jsp:include page="要包含的页面地址">
                            <jsp:param name="参数名" value="参数值"/>
                        </jsp:include>

                注意:name属性不支持表达式,value属性支持表达式

                获取参数:
                    request.getParameter(name);通过指定参数名获取参数值

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>include动态包含</title>
</head>
<body>
    <jsp:include page="header.jsp"></jsp:include>
    <h2>主体内容</h2>
    <jsp:include page="footer.jsp"></jsp:include>
    <%--使用动态包含传递参数--%>
    <%
        String str="Hello";
        String url="footer.jsp";
    %>
    <jsp:include page="<%=url%>">
        <jsp:param name="uname" value="admin"/>
        <jsp:param name="msg" value="<%=str%>"/>
    </jsp:include>

</body>
</html>

JSP的四大域对象


            1.page域对象


                        在当前页面有效,跳转后无效


            2.request域对象


                        在一次请求中有效,服务端跳转有效,客户端跳转无效


            3.session域对象


                        在一次会话中有效,服务端客户端跳转都有效


            4.application域对象


                        在整个应用中有效

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>设置域对象</title>
</head>
<body>
<%
    //设置page范围的域对象
    pageContext.setAttribute("name1","zhangsan");

    //设置request范围的域对象
    request.setAttribute("name2","lisi");

    //设置session范围的域对象
    session.setAttribute("name3","wangwu");

    //设置application范围的域对象
    application.setAttribute("name4","zhaoliu");

%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>获取域对象的值</title>
</head>
<body>
<%
    //获取域对象中的值
    out.print("page范围"+pageContext.getAttribute("name1")+"<br/>");
    out.print("request范围"+request.getAttribute("name2")+"<br/>");
    out.print("session范围"+session.getAttribute("name3")+"<br/>");
    out.print("application范围"+application.getAttribute("name4"));
%>
</body>
</html>

JSP跳转方式


            1.服务端跳转


                        <jsp:forward page="跳转的页面地址"></jsp:forward>


            2.客户端跳转


                        超链接

                                <a href=""></a>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JSP的跳转</title>
</head>
<body>

    <%--JSP中服务端跳转--%>
    <jsp:forward page="index.jsp"></jsp:forward>

    <%--超链接跳转--%>
    <a href="index.jsp">跳转</a>
</body>
</html>

  EL表达式


            作用:
                        简化JSP代码
            格式:
                        ${域对象的名称}
            操作对象:
                        EL表达式一般操作的是域对象,不能操作局部变量
            操作范围:
                        page范围
                                    当前页面
                        request范围
                                    一次请求
                        session范围
                                    一次会话
                        application范围
                                    整个应用程序
            注:
                1.如果EL表达式获取域对象的值为空,默认显示空字符串
                2.EL表达式默认从小到大范围去找,找到即止,如果四个范围都未找到,则显示空字符串

            查找数据时可以使用四个域对象对应的空间对象,分别是
                                                        pageScope
                                                        requestScope
                                                        sessionScope
                                                        applicationScope

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL表达式</title>
</head>
<body>
    <%--  设置数据  --%>
<%
    //设置page范围的域对象
    pageContext.setAttribute("uname","zhangsan");

    //设置request范围的域对象
    request.setAttribute("uname","lisi");

    //设置session范围的域对象
    session.setAttribute("uname","wangwu");

    //设置application范围的域对象
    application.setAttribute("uname","zhaoliu");

    //设置局部变量
    String str="Hello";
%>
    <%--获取数据--%>
    获取局部变量:${str}<br>
    获取域对象:${uname}<br>
    获取指定范围的域对象:<br>
    &nbsp;&nbsp;page范围:${pageScope.uname}<br>
    &nbsp;&nbsp;request范围:${requestScope.uname}<br>
    &nbsp;&nbsp;session范围:${sessionScope.uname}<br>
    &nbsp;&nbsp;application范围:${applicationScope.uname}<br>
</body>
</html>

        获取List


                    获取List的size:${限域变量名.size()}
                    获取List的指定下标的值:${限域变量名[下标]}


        获取Map


                    获取Map指定key的value值:${限域变量名.key}或${限域变量名["key"]}


        获取JavaBean


                   获取JavaBean中的属性:${JavaBean对象.属性名}或${JavaBean对象.get属性名()}
                    注:JavaBean中属性字段必须提供get方法

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page import="com.xxx.po.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL表达式的使用</title>
</head>
<body>
<%
    //list
    List<String> list = new ArrayList<>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");
    request.setAttribute("list", list);

    //Map
    Map map = new HashMap<>();
    map.put("aaa","1111");
    map.put("bbb",222);
    map.put("ccc",333);
    request.setAttribute("map",map);

    //JavaBean对象
    User user=new User();
    user.setUserId(1);
    user.setUname("zhangsan");
    user.setUpwd("123456");
    request.setAttribute("user",user);
%>
<h4>获取List</h4>
获取List的size:${list.size()}<br>
获取List的指定下标的值:${list[1]}<br>
<h4>获取Map</h4>
获取Map指定key的value值:${map.aaa}--------${map["bbb"]}
<h4>获取JavaBean</h4>
${user}<br>
获取JavaBean中的属性:${user.uname}-----${user.getUpwd()}
</body>
</html>

        empty


            判断域对象是否为空
                为空,返回true;
                不为空,返回false;


                    如果域对象中是字符串
                                不存在的域对象:true
                                空字符串:true
                                null:true
                    如果域对象中是List
                                null:true
                                没有长度(size):true
                    如果域对象中是Map
                                null:true
                                空Map对象:true
                    如果域对象中是Map
                                null:true
                                空对象:false

上一篇:如何设置 Pages 文稿背景颜色及背景图片?


下一篇:微信小程序之tabBar