JSP_基本知识
简而言之,把tomcat服务器会自动把jsp文件转译为servlet类。
一、简介
服务器响应客户端,大部分时候是响应一个html页面。
而在Servlet中使用io流编写html代码,很麻烦。
所以由Sun Microsystems公司倡导,许多公司参与,共同创建了一门技术,能够在代码中同时存在js、html、css、Java语言。
叫做Java Server Pages。
它的本质是Servlet的封装。
二、原理
解释器模式。
步骤:
1、服务器发出一个请求到jsp文件,比如:
2、tomcat服务器寻找别名是 index.jsp 的Servlet类,即使用 org.apache.jasper.servlet.JspServlet 进行响应。
在tomcat的安装目录下的conf文件夹中的web.xml中配置了:
3、JspServlet把.jsp文件的内容转义为Java代码。
html、css、js代码:
Java代码:
1、直接在service方法体中。
2、在Servlet类中,作为成员变量、属性存在。
3、嵌入到输出流中。
3、执行转义自动生成的servlet进行响应。
三、内容
1、page指令
用来配置jsp文件的转译相关参数。
格式:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <!-- 常见属性: language:声明要转译的语言 import:要导入的包 contentType:响应给浏览器的编码格式 pageEncoding:jsp文件的编码格式 session:设置是否开启session支持,默认开启,置为false则关闭 errorPage:设置jsp运行错误跳转的界面 extends:设置转译的java类继承的父类 -->
2、Java代码块
2.1、局部代码块
会编译在servlet的响应方法中(service方法)。
格式:
<% Java代码 %>
2.2、全局代码块
会编译在servlet类中作为成员变量或方法出现。
格式:
<%! 全局Java代码 %>
2.3、角标语句段
会被编译在输出流中。
格式:
<%= Java脚本代码 %>
四、引入
为了减低代码冗余,我们需要引入相同的jsp代码,例如网页头,网页尾。
1、静态引入
将引入的jsp文件一起转译为一个servlet类,实现合并效果
格式:
<%@includ file="相对路径" %>
2、动态引入
会将引入的jsp文件单独转译为一个servlet,在当前文件转译好的方法中调用引入的jsp文件,实现合并效果
格式:
<jsp:include page="相对路径"></jsp:include>
五、转发
打开另一个jsp页面,底层实现为请求转发,可以携带数据,数据以键值对的形式,用?隔开,拼接在转发路径后面(即get请求)。
格式:
<jsp:forward page="相对路径"> <jsp:param name="键" value="值" /> </jsp:forward>
六、内置对象
自动转译生成的响应方法(service方法)中自动生成的对象,可以在局部Java代码块中直接使用。
1、页面上下文
//封装了其他内置对象,以及当前jsp的运行信息 pageContext
2、请求响应对象
//请求对象 request //响应对象 response
3、session对象
//用来储存用户不同请求直接的数据共享 session
4、ServletContext对象
//一个项目一个的共享对象 application
5、输出流对象
//直接把内容响应给浏览器,会解析html out
7、this对象
//转译生成的servlet类的运行时对象 page
8、异常对象
//储存了当前运行的异常信息,默认不开启,在page中指定isErrorPage="ture"开启 exception
9、ServletConfig对象
//可以获取web.xml中为此servlet配置的数据 config
七、路径
在使用相对路径的时候,不能随意更改任意文件的位置。
给资源前面添加项目路径:
此时访问资源,直接从项目根目录开始。
<% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <base href="<%= basePath%>">
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端