第五章 JSP

一、概述

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标签

 

 这里的pom.xml如果引入了以上两个依赖(1.2版本及以上的jstl包,taglibs依赖包已经集成在里面,可以不需要依赖),编译后JSP页面中JSTL的标签taglib标签依然报红,解决方法如下:

1. tomcat的lib目录下,放入jstl的依赖包

2. 如果还是不行的话,要确认是不是本地环境的Tomcat包、JDK版本以及SpringBoot版本过高导致的依赖包不兼容问题,可以换个jstl依赖包版本,如下所示:

 5.8. MVC三层架构

模型层包含以下几块内容:

  1. 数据持久化层:Dao,专注于数据库层面的增删改查
  2. 业务逻辑层:专注于业务逻辑的实现
  3. JDBC:规范化的访问数据库的应用程序接口
  4. JavaBean
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值