JAVA知识积累 JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】...
什么是JSP
JSP全名为Java Server Pages,java服务器页面。JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在!
为什么需要JSP
JSP是为了简化Servlet的工作出现的替代品,Servlet输出HTML非常困难,JSP就是替代Servlet输出HTML的。
简单使用一下JSP
- 在idea下生成一个JSP,我们来看一下JSP长什么样子
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>简单使用JSP</title> </head> <body> </body> </html>
- 看起来就像一个HTML页面,前面也说了:JSP的特点就是HTML和Java代码共同存在
- 我们向浏览器输出一句HelloWorld,至于<%%>这个东西,我先不解释!
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>简单使用JSP</title> </head> <body> <% String s = "HelloWorld"; out.println(s); %> </body> </html>
JSP的工作原理
- 在Tomcat博客中我提到过:Tomcat访问任何的资源都是在访问Servlet!,当然了,JSP也不例外!JSP本身就是一种Servlet。为什么我说JSP本身就是一种Servlet呢?其实JSP在第一次被访问的时候会被编译为HttpJspPage类(该类是HttpServlet的一个子类)
- 刚才我简单使用了一下JSP,它被编译成了这么一个Servlet:
package org.apache.jsp;import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import java.util.Date; public final class _1_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent { private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory(); private static java.util.List<String> _jspx_dependants; private javax.el.ExpressionFactory _el_expressionfactory; private org.apache.tomcat.InstanceManager _jsp_instancemanager; public java.util.List<String> getDependants() { return _jspx_dependants; } public void _jspInit() { _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory(); _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig()); } public void _jspDestroy() { } public void _jspService(final HttpServletRequest request, final HttpServletResponse response) throws java.io.IOException, ServletException { final PageContext pageContext; HttpSession session = null; final ServletContext application; final ServletConfig config; JspWriter out = null; final Object page = this; JspWriter _jspx_out = null; PageContext _jspx_page_context = null; try { 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; out.write("\r\n"); out.write("\r\n"); out.write("<html>\r\n"); out.write("<head>\r\n"); out.write(" <title>简单使用JSP</title>\r\n"); out.write("</head>\r\n"); out.write("<body>\r\n
JAVA知识积累 JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】...相关推荐
- 【Spring第一篇】ClassPathXmlApplicationContext工作原理
ClassPathXmlApplicationContext工作原理 创建一个ClassPathXmlApplicationContext类 package com.qx;import org.jso ...
- JAVA知识体系之多线程篇
目录 1.线程概述 1.1 线程的定义 1.2 多线程的优势 1.2.1 更多的处理器核心 1.2.2 更快的响应时间 1.3 多线程的挑战 1.3.1 上下文切换 1.3.2 死锁 1.3.3 资源 ...
- JAVA知识体系之数据库篇——MySQL
目录 1.一条查询语句的执行流程 1.1 MySQL基本架构 1.2 连接层 1.3 服务层 1.3.1 查询缓存 1.3.2 解析器(Parser) 词法解析 语法解析 1.3.3 预处理器(Pre ...
- Java小白入门系列 第一篇 写在前面
2018年8月30日 22:00:17 郑州 多云 Sue Java小白入门系列 第一篇 写在前面 写在前面: 首先声明一下,本人也是正在学Java,并不是多么专业人士,只是最近受老师的启发,所 ...
- Redis入门第一篇【介绍、安装】
tags: Redis title: Redis入门第一篇[介绍.安装] 为什么要用Redis 我对Redis的简单理解:Redis相信学JavaEE的同学都听过这个名词,它是一个缓存数据库. Red ...
- Base64系列第一篇 Base64介绍
本文地址:http://blog.csdn.net/morewindows/article/details/11871429转载请标明出处,谢谢. 欢迎关注微博:http://weibo.com/Mo ...
- GraphQL实战-第一篇-GraphQL介绍
GraphQL实战-第一篇-GraphQL介绍 GraphQL的前世今生 Facebook的业务线有移动端,PC端和其它端,不同的场景下对一个资源所需要的信息是不同的.如移动端需要User的a.b.c ...
- Java知识体系之JVM篇
Java知识体系之JVM篇 目录 博客链接 Java虚拟机知识点总结 https://blog.csdn.net/qq_24095055/article/details/88574017 String ...
- 原理剖析(第 009 篇)ReentrantReadWriteLock工作原理分析
2019独角兽企业重金招聘Python工程师标准>>> 原理剖析(第 009 篇)ReentrantReadWriteLock工作原理分析 一.大致介绍 1.在前面章节了解了AQS和 ...
- “约见”面试官系列之常见面试题之第八十八篇之什么是vue生命周期(建议收藏)
我们知道vue是一个构建数据驱动的 web 界面的渐进式框架,那么vue生命周期是什么呢?本篇文章就给大家来介绍一下vue生命周期的内容,希望可以帮助到有需要的朋友. vue生命周期是什么? Vue生 ...
最新文章
- python获取机器唯一标识_开发中常用工具 - 获取设备的唯一标识、UDID、UUID、keychain保存UUID、判断网络...
- 又是一个程序员粗心的代码引起频繁FullGC的案例
- C语言socket()函数解析(创建套接字)af地址族,ip地址类型(Address Family)INET(Inetnet)PF(Protocol Family)
- MSSQL系统常用视图命令及其作用
- gitbook新版本 build命令导出的html不能跳转?
- Nginx安装手册(摘自入云龙老师教案,亲测可用)
- CleanMyMac for mac之偏好设置
- 小白浅论JAVA数组中“for加强版”
- scala学习-scala读取Hbase表中数据并且做join连接查询
- c#编写三角形面积公式_三角形的面积公式二叙
- http协议的状态码——400,401,403,404,500,502,503,301,302等常见网页错误代码
- 武汉科技大学计算机课程设置,武汉科技大学计算机控制与接口技术课程实施方案.docx...
- 人工智能、机器学习、深度学习、神经网络的区别
- apdu 移动sim_在Android中将APDU命令发送到USIM / SIM卡
- R语言也能玩ps?magick包你值得拥有
- 基于android的校园新闻app,移动端校园新闻APP的设计探析
- dbeave 安装驱动网络问题失败
- 亚马逊账号关联怎么办?多账号如何自查?
- [Leetcode] 810. Chalkboard XOR Game 解题报告
- 【Windows】右键菜单“新建”选项没有word和excel