0%

JSP-汇总

JSP技术并不是目前流行的前后端分离技术,但它依然没有退出历史舞台,我们还是有必要去了解学习它。

简介

什么是JSP

Java Server Pages:Java服务器页面,也和Servlet一样,用于动态web技术。JSP技术并不是目前流行的前后端分离技术。

JSP(全称JavaServer Pages)是由[Sun Microsystems](https://baike.baidu.com/item/Sun Microsystems)公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTMLXML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。摘自百度百科

最大的特点:

  • 写JSP就像在写HTML
  • 区别:
    • HTML只给用户提供静态的数据
    • JSP页面中可以嵌入Java代码,为用户提供动态数据

JSP原理

思路:JSP到底怎么执行的!

  • 代码层面没有任何问题
  • 服务器内部工作
    • Tomcat中有一个work目录
    • IDEA中使用Tomcat的会在IDEA的Tomcat中建立一个work目录
    • 上边两个work目录相同

我们打开Tomcat中的work目录看看,里边有一个jsp文件夹,里边有名为index_jsp的java程序(类)。其实这是JSP页面转变成的java程序。

Mac中,IDEA内的work目录隐藏的比较深。我电脑上的路径是(记得要先启动web项目)/Users/qsdbl(我的用户名)/Library/Caches/JetBrains/IntelliJIdea2020.2/tomcat/Unnamed_javaweb_study(Unnamed_后边是当前项目名)

打开一个JSP页面转换成的Java类文件,我们可以发现JSP文件本质上属于Servlet(间接继承了HttpServlet类)。所以,浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet。(JSP最终会被转换成为一个Java类)

往下翻,我们发现有很多的write、print方法将文本拼接成HTML代码:

总结

JSP文件本质上属于Servlet程序。在JSP页面中,只要是Java代码就会原封不动的输出,如果是HTML代码,就会使用write、print方法输出(拼接后发送给前端)。可以这么理解:JSP技术主要是为了解决使用Servlet类编写(write、print方法拼接)前端HTML页面麻烦而发展出来的。

初探JSP页面

继续往下翻,我们注意到了三个方法:

1
2
3
4
5
6
7
8
//初始化
public void _jspInit() {
}
//销毁
public void _jspDestroy() {
}
//JSPService
public void _jspService(HttpServletRequest request, HttpServletResponse response)
  1. 判断请求

  2. 内置一些对象

    1
    2
    3
    4
    5
    6
    7
    final javax.servlet.jsp.PageContext pageContext;	//页面上下文
    final javax.servlet.ServletContext application; //application(就是ServletContext)
    final javax.servlet.ServletConfig config; //config
    javax.servlet.jsp.JspWriter out = null; //out
    final java.lang.Object page = this; //page
    HttpServletRequest request // request请求
    HttpServletResponse response //response响应

  3. 输出页面前增加的代码

    1
    2
    3
    4
    5
    6
    7
    8
    response.setContentType("text/html; charset=UTF-8");	//设置响应的页面类型
    pageContext = _jspxFactory.getPageContext(this, request, response,
    null, false, 8192, true);
    _jspx_page_context = pageContext;
    application = pageContext.getServletContext();
    config = pageContext.getServletConfig();
    out = pageContext.getOut();
    _jspx_out = out;
  4. 以上的这些对象,我们可以在JSP页面中直接使用

JSP基础语法

详细笔记见:传送门

JSP内置对象

  • pageContext 可以存数据
  • request 可以存数据
  • response
  • session 可以存数据
  • application (ServletContext) 可以存数据
  • config (ServletConfig)
  • out
  • page
  • exception

详细笔记见:传送门

标签&表达式

JSP标签、JSTL标签、EL表达式。详细笔记见:传送门

若图片不能正常显示,请在浏览器中打开

欢迎关注我的其它发布渠道