【JavaWeb】JavaWeb从入门到实战(9)
前言:
本文内容:JSP原理剖析、JSP基础语法和指令
推荐免费JavaWeb入门到实战视频:【狂神说Java】JavaWeb入门到实战_哔哩哔哩_bilibili
JSP原理剖析
JSP
JSP(JavaServerPages):Java服务器端页面,也和Servlet一样,用于动态Web技术。
特点:
- 写JSP就像在写Html
- Html之提供静态数据
- JSP可以嵌入Java代码,为用户提供动态数据
JSP原理
JSP是如何执行的
-
服务器内部工作
Tomcat中有一个work目录
-
IDEA中使用Tomcat会在它的Tomcat生成一个work目录
1
C:\Users\Joker大雄\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_javaweb-cookie-session\work\Catalina\localhost\jc1\org\apache\jsp
-
发现页面转变为Java程序
浏览器向服务器发送请求,访问资源都是在访问Servlet
JSP最终也会被转为Java类,其本质还是Servlet
1
2
3
4
5
6
7
8// 初始化
public void _jspInit() {
}
// 销毁
public void _jspDestroy() {
}
// JSPService
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)1、判断请求
2、内置一些对象
1
2
3
4
5
6
7
8final javax.servlet.jsp.PageContext pageContext; // 页面上下文
javax.servlet.http.HttpSession session = null; // session
final javax.servlet.ServletContext application; // applicationContext
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
9response.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;4、以上哪些对象我们可以在JSP页面直接使用
原理图
在JSP页面中,只要是Java代码就原封不动的输出,如果是Html代码,就会被转换为
out.write(<html>\r\n);
…
JSP基础语法和指令
JSP语法
JSP支持Java所有语法,还有JSP一些扩展语法;
JSP表达式:
1 | <%-- JSP基本语法--%> |
JSP脚本片段:
1 | <%--JSP脚本片段--%> |
脚本片段实现
1 | <%--在代码中嵌入HTML元素--%> |
JSP声明
1 | <%--定义全局变量 JSP声明--%> |
JSP声明:会被编译到JSP生成Java类中,其他会生成到_jspService
方法中
EL表达式
1 | ${表达式内容} |
小结
1 | <%%> |
Html注释可以在网页源代码显示,JSP注释则不显示
JSP指令
1 | <%--解决乱码--%> |
web.xml配置错误页面
1 | <!-- 定义404和500错误--> |
页面导入
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hey,Joker!
评论
ValineTwikoo