JavaWeb 速通JSP

目录

一、JSP快速入门

        1.基本介绍 : 

        2.运行原理 : 

二、JSP语法

        1.page指令 : 

        2.声明脚本 : 

        3.表达式脚本 : 

        4.Java代码脚本 : 

        5.JSP注释 : 

三、JSP对象

        1.九大内置对象 : 

        2.四大域对象 : 

            1° 基本介绍

            2° 应用实例

        3.关于请求转发标签 : 


一、JSP快速入门

        1.基本介绍 : 

        (1) JSP 全称Java Server Pages,即Java服务器页面;JSP是一种基于Servlet的服务器渲染技术,可以理解为JSP就是对Servlet的包装

        (2) HTML只能为用户提供静态数据,而JSP允许在页面中嵌套 java代码,为用户提供动态数据注意:JSP页面不能像HTML页面一样直接通过浏览器运行, 而必须先启动Tomcat,再通过浏览器地址栏的URL进行访问
        (3) Servlet很难对数据进行排版,而JSP在用Java代码产生动态数据的同时,也很容易对数据进行排版

        2.运行原理 : 

        (1) JSP页面本质是一个Servlet程序(即本质就是Java程序),性能与Java关联。

        (2) 第一次访问JSP时,Tomcat服务器会把JSP页面先解析成.java的源文件,并进一步编译成.class的字节码文件,实际执行的就是.class字节码程序。eg : index.jsp ---> index_jsp.java 和 index_jsp.class。

                如下图所示 : 

JavaWeb 速通JSP_第1张图片


二、JSP语法

        1.page指令 : 

        language 表示JSP解析后是什么语言文件, 目前只支持java语言。
        contentType 表示JSP返回的数据类型,对应源码中 response.setContentType()中的参数值。
        3° pageEncoding 属性,表示当前JSP页面文件本身的字符集。
        import 属性的使用与java源代码中类似,可用于导包,导类。

        2.声明脚本 : 

        声明脚本的格式是 : <%! java声明 %>可以用Java代码在声明脚本中定义JSP需要的属性、方法、静态代码块和内部类等,即给该JSP文件对应的java类定义成员

        demo.jsp代码如下 : 

<%--
    User : Cyan_RA9
    Version : 21.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    JSP demo


    

demo.jsp

<%! private String name; private int age; private String gender; private static String color; public String getName() { return this.name; } public int getAge() { return this.age; } public String getGender() { return this.gender; } static { color = "Cyan"; } %>

        对应生成的.java文件如下图所示 : 

JavaWeb 速通JSP_第2张图片

JavaWeb 速通JSP_第3张图片

        3.表达式脚本 : 

        (1) 表达式脚本的格式是:<%=表达式%>
        (2) 表达式脚本的作用是:在JSP页面上输出数据
        (3) 表达式脚本的注意事项 : 表达式不能以分号结束

        expression.jsp代码如下 : 

<%--
    User : Cyan_RA9
    Version : 21.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Expression


    <%
        String name = "Cyan_RA9";
    %>
    public : <%=141 + 130%> 
name : <%=name%>
job : <%="Java Full Stack Developer"%>

        运行效果 : 

JavaWeb 速通JSP_第4张图片

        4.Java代码脚本 : 

        代码脚本的语法格式 :<% java 代码%>
        代码脚本的作用 : 在JSP页面中使用Java代码完成业务需求。
        可以由多个代码脚本块组合成一个完整的Java语句,即允许有多个Java代码脚本
        代码脚本还可以和表达式脚本一起组合使用,在JSP页面上输出数据。

        首先定义一个JavaBean类,Student类代码如下 : 

package script;

/**
 * @author : Cyan_RA9
 * @version : 21.0
 */
public class Student {
    private String name;
    private int age;
    private String gender;
    
    public Student() {
    }
    public Student(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }
}

                在javacode.jsp页面中,利用List集合存入几个Student对象的信息。
                javacode.jsp代码如下 : 

\<%--
    User : Cyan_RA9
    Version : 21.0
--%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="script.Student" %> <%--自动导包--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Java Code script


    <%
        ArrayList students = new ArrayList<>();
        students.add(new Student("Cyan", 21, "male"));
        students.add(new Student("Five", 22, "female"));
        students.add(new Student("Ice", 20, "male"));
    %>
    
    <%
        for (int i = 0; i < students.size(); i++) {
            Student student = students.get(i);
    %>
        
    <%
        }
    %>
    
Name Age Gender
<%=student.getName()%> <%=student.getAge()%> <%=student.getGender()%>

        运行结果 : 

JavaWeb 速通JSP_第5张图片

        5.JSP注释 : 

        JSP中不仅支持HTML格式的注释,还支持自己特有的注释格式 :  <%-- --%>

        此外,在JSP的Java代码脚本中,也可以使用Java的行注释和段注释。

        note.jsp代码如下 : 

<%--
    User : Cyan_RA9
    Version : 21.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Note demo



<%
    //这是Java代码的行注释;
    /*
        这是Java代码的段注释。
     */
%>
<%-- 这是JSP特有的注释格式√ --%>



三、JSP对象

        1.九大内置对象 : 

        1> JSP 内置对象(指已经创建好的对象, 可以直接使用[inbuild]),即Tomcat在解析JSP页面为Servlet 后,内部提供的九大对象,叫内置对象。
        2> 内置对象可以直接使用,不需要手动定义。

        3> 九大内置对象如下——

                ① out 向客户端输出数据,out.println("");
                ② request 处理来自客户端的HTTP请求
                ③ response 与回送的HTTP响应相关
                ④ session 会话对象
                ⑤ application 对应 ServletContext
                ⑥ pageContext JSP页面的上下文,是一个域对象,可以使用setAttribue()方法,但 作用范围只是本页面
                ⑦ exception 异常对象 , getMessage()
                ⑧ page 代表JSP 这个实例本身
                ⑨ config 对应 ServletConfig
        4> 九大内置对象与Servlet的关系图——

JavaWeb 速通JSP_第6张图片

        2.四大域对象 : 

            1° 基本介绍

        1> pageContext域对象,存放的数据只能在当前页面使用。

        2> request域对象,存放的数据在一次Request请求中有效(eg : 请求转发)。

        3> session域对象,存放的数据在一次会话有效(sessionId)。

        4> application域对象,存放的数据在整个Web应用运行期间有效, 范围更大。

        作用域 : pageContext < request < session < application.

            2° 应用实例

                scope.jsp代码如下 : 

<%--
    User : Cyan_RA9
    Version : 21.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Scope


<%-- 由于四个域对象是不同的对象,因此允许出现相同的name。 --%>
<%
    pageContext.setAttribute("color", "cyan");
    request.setAttribute("color", "pink");
    session.setAttribute("color", "cornflower");
    application.setAttribute("color", "lightblue");

    //请求转发
//    RequestDispatcher requestDispatcher = request.getRequestDispatcher("scope2.jsp");
//    requestDispatcher.forward(request, response);

    //请求重定向
    ServletContext servletContext = config.getServletContext();
    String contextPath = servletContext.getContextPath();
    response.sendRedirect(contextPath + "/scope2.jsp");
%>

四个域对象,在本页面获取数据的情况

pageContext-color : <%=pageContext.getAttribute("color")%>
request-color : <%=request.getAttribute("color")%>
session-color : <%=session.getAttribute("color")%>
application-color : <%=application.getAttribute("color")%>

                运行效果 : (本页面访问域对象)

JavaWeb 速通JSP_第7张图片

                scope2.jsp代码如下 : (外页面访问域对象)

<%--
    User : Cyan_RA9
    Version : 21.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    scope2


在scope2页面获取数据的情况:

pageContext-color : <%=pageContext.getAttribute("color")%>
request-color : <%=request.getAttribute("color")%>
session-color : <%=session.getAttribute("color")%>
application-color : <%=application.getAttribute("color")%>

                运行效果 : (scope请求转发

JavaWeb 速通JSP_第8张图片

                运行效果:(scope请求重定向

JavaWeb 速通JSP_第9张图片

        3.关于请求转发标签 : 

        page="URL">

        注意 : 1> 此处的URL是在服务器端解析的。

                   2> 请求转发标签常用于一个入口页面,转发到其他功能资源。

你可能感兴趣的:(JavaWeb,#,JSP,java,servlet,前端,后端,tomcat,jsp,web)