编程语言
首页 > 编程语言> > JSP(JavaServer Pages)

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

标签:Map,JavaServer,对象,request,获取,JSP,跳转,Pages
来源: https://blog.csdn.net/weixin_45859844/article/details/119204448