一、概述
JSP(Java Server Pages)是一种动态网页技术标准,它的本质是个Servlet,JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其他Java程序共同处理复杂的业务需求。JSP将Java代码和特定变动内容嵌入到静态页面中,实现以静态页面为模板,动态生成其中的部分内容。
二、原理
JSP的工作原理基于Web服务器接收到客户端请求时,服务器会将JSP文件翻译为Java代码,并编译成Servlet。Servlet根据客户端请求生成HTML页面,然后将其返回给客户端浏览器。
我们idea中创建的jsp编译运行后,在以下路径中会生成一个java和class文件(我本地是Mac OS系统,具体以个人操作系统环境和idea安装环境情况为准)
/Users/wangzhexiao/Library/Caches/JetBrains/IntelliJIdea2022.3/tomcat/50cc2748-c71b-48ed-af00-6e1432e46097/work/Catalina/localhost/S02/org/apache/jsp
其中work是tomcat服务器的工作目录。
通过上述代码我们可以查看到,JSP的本质是继承了HttpServlet。
三、JSP内置对象
final javax.servlet.jsp.PageContext pageContext; // 页面上下文
javax.servlet.http.HttpSession session = null; // session
final javax.servlet.ServletContext application; // 应用上下文
final javax.servlet.ServletConfig config; // 配置
javax.servlet.jsp.JspWriter out = null; // out
final java.lang.Object page = this; // page
HttpServletRequest request // 请求
HttpServletResponse response // 响应
以下是输出页面前增加的代码:
response.setContentType("text/html;charset=UTF-8");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
以上对象可以在JSP页面中直接使用。
四、JSP基本语法和指令
4.1. JSP变量和表达式
<%= %> 用于将程序的输出,输出到客户端
4.2. JSP脚本片段
4.3. JSP脚本声明
脚本声明会被编译到JSP生成java的类中!除脚本声明之外的(表达式/脚本片段)就会被生成到-jspService方法中。
4.4. 指令
1. include
一个JSP引入另一个JSP页面
2. page
经常需要对页面的某些特性进行描述,例如,页面的编码方式, JSP 页面采用的语言等,这时,可以通过 page 指令来实现。其中errorPage可以指定页面报错跳转页面
5.5. JSP内置对象
PageContext
Request
Response
Session
Application
config
out
page
exception
pageContext.forward会携带本页面的request参数到下一个转发的页面。
5.6. JSP标签
5.7. JSTL标签
JSTL标签库的使用是为了弥补HTML标签的不足,它自定义了许多标签可以供我们使用,标签的功能和Java代码一样。
核心标签(掌握部分)
格式化标签
SQL标签
XML标签
5.8. MVC三层架构
模型层包含以下几块内容:
- 数据持久化层:Dao,专注于数据库层面的增删改查
- 业务逻辑层:专注于业务逻辑的实现
- JDBC:规范化的访问数据库的应用程序接口
- JavaBean