• JSP介绍及常用方法


    一、JSP介绍

    • JSP(JavaServer Pages)实际上就是一个servlet,基于Java语言实现的服务器端的页面。

    • 访问XXX.jsp的时候,应用服务器会自动将jsp文件翻译生成XXX.java,并自动编译生成XXX.class,因此XXX.jsp就是一个类。

    • XXX.jsp类继承 HttpJspBase,而HttpJspBase类继承的是HttpServlet,所以XXX.jsp类就是一个servlet类。

    • JSP的生命周期和servlet的生命周期完全相同,都是(假)单例。

    • JSP也是JavaEE的13个子规范之一。

    • JSP是一套规范。所有的web容器/web服务器都是遵循这套规范的,都是按照这套规范进行的“翻译”,每一个web容器/web服务器都会内置一个JSP翻译引擎。

    • 对JSP进行错误调试的时候,还是要直接打开JSP文件对应的java文件,检查java代码。

    二、JSP和servlet的区别(职责不同):

    • servlet的职责:收集数据。(servlet的强项是逻辑处理,业务处理,然后连接数据库,获取/收集数据等)
    • JSP的职责:展示数据。(JSP的强项是做数据的展示)

    三、JSP的基础语法:

    • JSP中直接编写普通字符串会自动翻译到servlet类的service方法的out.write(""),直接翻译到双引号里;在JSP中编写的HTML、CSS、JS代码,对于JSP来说只是普通的字符串。但JSP把这些普通的字符串一旦输出到浏览器,浏览器就会对HTML、CSS、JS进行解释执行,展现web页面效果。
    • <% %>在这个符号当中编写的被视为java程序,被翻译到servlet类的service方法内部。在service方法当中编写的代码是有顺序的,方法体当中的代码要遵循自上而下的顺序依次逐行执行;service方法当中不能写静态代码块,方法和定义成员变量。在同一个JSP当中 <%%> 这个符号可以出现多个
    • <%! %>在这个符号当中编写的java程序会自动翻译到service方法之外。不建议使用,因为在service方法外面写静态变量和实例变量,都会存在线程安全问题(JSP是单例)
    • <%= %>翻译到service方法体内部,翻译为:out.print();,若含有java的变量,则输出的内容是一个动态的内容,不是一个死的字符串。
    • <%@page >page指令
      1. <%@page session="true|false" %>
      2. true表示启用JSP的内置对象session,表示一定启动session对象。没有session对象会创建。如果没有设置,默认值就是session="true"
      3. session="false" 表示不启动内置对象session。当前JSP页面中无法使用内置对象session。
      4. <%@page contentType="text/json" %>
      5. contentType属性用来设置响应的内容类型,但同时也可以设置字符集。
      6. <%@page contentType="text/json;charset=UTF-8" %>
      7. <%@page pageEncoding="UTF-8" %>
      8. pageEncoding="UTF-8" 表示设置响应时采用的字符集。
      9. <%@page import="java.util.List, java.util.Date, java.util.ArrayList" %>
      10. <%@page import="java.util.*" %>
      11. import语句,导包。
      12. <%@page errorPage="/error.jsp" %>
      13. 当前页面出现异常之后,跳转到error.jsp页面。errorPage属性用来指定出错之后的跳转位置。
      14. <%@page isErrorPage="true" %>
      15. 表示启用JSP九大内置对象之一:exception。默认值是false。
    • 注释

            <%--JSP的专业注释,不会被翻译到java源代码当中。--%>

            

    四、JSP的九大内置对象

    • jakarta.servlet.jsp.PageContext pageContext              页面作用域

    • jakarta.servlet.http.HttpServletRequest request           请求作用域

    • jakarta.servlet.http.HttpSession session                      会话作用域

    • jakarta.servlet.ServletContext application                    应用作用域

      • pageContext < request < session < application

      • 以上四个作用域都有:setAttribute、getAttribute、removeAttribute方法。

      • 以上作用域的使用原则:尽可能使用小的域。

    • java.lang.Throwable exception

    • jakarta.servlet.ServletConfig config

    • java.lang.Object page (其实是this,当前的servlet对象)

    • jakarta.servlet.jsp.JspWriter out (负责输出)

    • jakarta.servlet.http.HttpServletResponse response (负责响应)

  • 相关阅读:
    HARQ即混合自动重传请求(Hybrid Automatic Repeat reQuest)
    NetworkManager 图形化配置 bond
    java ssm Vue客户关系管理系统springboot
    【Ubuntu】创建桌面快捷方式并固定到docker栏
    MySQL高级语句(二)
    C++:指针:看完还不会指针,来捶我
    【Pandas数据处理100例】(九十八):Pandas使用between_time()筛选出给定时间区间的数据
    java毕业生设计晨光文具店进销存系统设计与开发计算机源码+系统+mysql+调试部署+lw
    c++内存的四大分区详解
    Android APP稳定性测试工具Fastbot
  • 原文地址:https://blog.csdn.net/YaoChung/article/details/126260996