JavaWeb之JSP基础

JSP基础

1 基础内容概况

  1. JSP页面的三种注释
  2. JSP的page指令
  3. jsp的局部代码块
  4. jsp的全局代码块
  5. jsp的脚本段语句块
  6. jsp的静态引入和动态引入
  7. jsp的转发标签
  8. jsp的九大内置对象的学习
  9. 四个作用域对象
  10. JSP的路径

2 相关代码实现

在这里插入图片描述

<%--
  Created by IntelliJ IDEA.
  User: linyuqi
  Date: 2019-07-05
  Time: 16:20
  To change this template use File | Settings | File Templates.
--%>

<%--
    JSP页面的三种注释:
        前端语言的注释:转译 不会被浏览器执行
        Java语言的注释:转译 不会被servlet执行
        jsp的注释:不转译

    JSP的page指令的学习:
        语法:<%@ page 属性名="属性值"%>
            language: 声明jsp要被转译的语言
            import: 声明转译的Java文件要导入的包 不同的包以逗号隔开
            pageEncoding:设置当前jsp文件的数据编码格式
            contentType: 设置jsp响应给浏览器时,浏览器的解析和编码格式
            session:设置转译的servlet是否开启session支持,默认开启
            errorPage:设置jsp运行错误要跳转的页面
            extends:设置jsp转译的Java文件要继承的父类(包名+类名)
        作用:
            配置jsp文件转译的相关命令
--%>

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

<%--设置error页面--%>
<%@ page errorPage="erro.jsp" %>

<%--设置jsp页面路径的"相对绝对"路径访问--%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<html>
<head>
    <base href="<%=basePath%>">

    <title>JSP的学习</title>
</head>
<body>
    <h1>jsp的学习:</h1>
    <hr>

<%--
    jsp的局部代码块:
            使用:<%
                    System.out.println("AAAA");
                 %>
            特点:声明的Java代码会被原样转到jsp对应的servlet文件的_JspService方法中
                 代码块中声明的变量都是局部变量
            缺点:使用局部代码在jsp中进行逻辑判断,书写麻烦,阅读困难
            规则:servlet进行逻辑判断,jsp进行页面展示
    jsp的全局代码块:
            使用:<%!
                    public void test(){
                        System.out.println("全局代码块!");
                     }
                 %>
            特点:声明的Java代码作为全局代码转译到servlet中
            注意:全局代码块声明的变量需要使用局部代码块调用


    jsp的脚本段语句块:
            特点:帮助我们快速的获取变量或者方法的返回值作为数据响应给浏览器
            使用:<%=str%>
            注意:不要在变量名或者方法后使用分号
            位置:除jsp语法要求以外的任何位置
--%>
    <!-- 局部代码块 -->
    <%
        //该语句发送编译错误 会触发errorPage
        //int a = 5/0;
        int a = 5;
        if (a < 3){
    %>
    <b>jsp学习很简单!</b>
    <%
        }else {
    %>
    <b>jsp学习很难</b>
    <%
        }
    %>
    <%
        test();
    %>
    <%
        System.out.println("AAAA");
    %>

    <!-- //这是脚本片段语句 -->
    <%=str%>

    <!-- 全局代码块 -->
    <%!
        String str = "Good Day!";
        public void test(){
        System.out.println("全局代码块!");
    }
    %>
<%--
    jsp的静态引入和动态引入:
        静态引入:
            使用:<%@ include file="static.jsp"%>
            特点:会将引入的jsp文件和当前的jsp文件转译成一个Java(servlet)文件使用
            注意:静态引入的jsp文件不会单独转译成一个Java(servlet)文件
                 当前文件和静态引入的jsp文件中不能使用Java代码块声明同名变量
        动态引入:
            使用:<jsp:include page="active.jsp"></jsp:include>
            特点:会将引入的jsp文件单独转译,在当前文件转译好的Java文件中调用引入的jsp文件的转译文件
            注意:动态引入允许文件中声明同名变量
        优点:
            降低代码的冗余,便于维护升级
--%>

<!--静态引入文件-->
<%@ include file="static.jsp"%>

<!--动态引入文件-->
<jsp:include page="active.jsp"></jsp:include>

<%--
    jsp的转发标签:
        使用:
            <jsp:forward page="forward.jsp">
                <jsp:param name="str" value="Linyuqi"/>
            </jsp:forward>
        特点:一次请求 地址栏信息不变
        注意:在转发标签<jsp:forward>中只能写<jsp:param />标签
             name和value以键值对方式传输数据
             注意:数据会?的形式拼接在转发路径后面
--%>

<!--转发-->
    <%--<jsp:forward page="forward.jsp">
        <jsp:param name="str" value="Linyuqi"/>
    </jsp:forward>--%>


<%--
    jsp的九大内置对象的学习:
            内置对象:jsp文件在转成servlet文件的时候自动生成并声明的对象,可以在jsp中直接使用
            注意:内置对象在jsp页面使用,使用局部代码块或脚本段语句来使用
                 不能在全局代码块中使用

            九大对象:
                pageCOntext:页面上下问对象,封存了其他八个内置对象,封存了当前jsp的运行信息。
                        注意:每个jsp页面单独拥有一个pageContext对象
                request:封存当前请求数据的对象,有服务器创建 一次请求
                session:用来存储用户不同请求的数据共享问题 一次会话
                application:也就是servletcontext对象,一个项目只有一个,存储用户共享数据,以及完成其他操作
                response:响应对象,用来响应请求处理结果给浏览器的对象,设置响应头,重定向
                out:响应对象,jsp内部使用,带有缓冲区的响应对象,效率高于response
                page:代表当前jsp对象,相当于Java中的this
                exception:异常对象,存储了当前运行的异常信息
                        注意:使用此对象需要在page指定使用属性 isErrorPage=""开启
                config:也就是servletconfig对象,主要用来获取web.xml的配置数据,完成一些初始化数据的读取

            四个作用域对象:
                    pagecontext:当前页面,解决了当前页面数据共享问题
                    request:一次请求,一次请求的servlet的数据共享,通过请求转发,将数据流转给下一个servlet
                    session:一次会话,一个用户的不同请求的数据共享,将数据从一次请求流转给其他对象
                    application:项目内,不同用户的数据共享问题,将数据从一个用户流转个另一个用户
                 作用:
                    数据流转

--%>
<!--jsp的九大内置对象的学习-->
    <%
        response.getWriter().write("九大内置对象!!!");
    %>

<%--
    JSP的路径:
        相对路径:/项目名/。。。。
        jsp全局路径声明方式:
            使用:顶部:
                <%
                    String path = request.getContextPath();
                    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
                %>
                <head>
                    <base href="<%=basePath%>">

                    <title>JSP的学习</title>
                </head>
            作用:
                实现相对路径的绝对使用
--%>
<!--路径跳转-->
    <a href="loginpractice.jsp">注册用户</a>
    <div>
        <%
            response.getWriter().write(basePath);
        %>
    </div>
</body>
</html>

<%--
  Created by IntelliJ IDEA.
  User: linyuqi
  Date: 2019-07-05
  Time: 18:15
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>发生错误</title>
</head>
<body>
<b>该页面发生错误。 。 。</b>
</body>
</html>

<%--
  Created by IntelliJ IDEA.
  User: linyuqi
  Date: 2019-07-05
  Time: 18:11
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>静态引入</title>
</head>
<body>
    <div>
        <b>静态引入文件</b>
    </div>
</body>
</html>

<%--
  Created by IntelliJ IDEA.
  User: linyuqi
  Date: 2019-07-05
  Time: 18:20
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>动态引入</title>
</head>
<body>
    <div>
        <b>动态引入文件</b>
    </div>

</body>
</html>

<%--
  Created by IntelliJ IDEA.
  User: linyuqi
  Date: 2019-07-05
  Time: 18:33
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>转发页面</title>
</head>
<body>
    <b>转发页面</b>
</body>
</html>

3 学习总结

jsp页面就如java类一样,让数据传输更加的方便。

发布了28 篇原创文章 · 获赞 5 · 访问量 2211

猜你喜欢

转载自blog.csdn.net/qq_40307379/article/details/94793412
今日推荐