本篇博课知识点:
1.jsp技术简介
2.Tomcat首次访问JSP的过程:
3.JSP语法:
4.代码演示

jsp技术简介

  • JSP是Java Server Page的缩写,它是Servlet的扩展,它的作用是简化网站的创建和维护。
  • JSP是HTML代码与Java代码的混合体。
  • JSP形式上像HTML,但本质上是Servlet。

Jsp页面的代码全部是由java语言代码和HTML语言代码组成,那么为什么说JSP本质是Servlet?— 查看源码
先把含有jsp页面的项目发布,启动服务器,然后去Tomcat里面找生成的jsp文件的源码
我的路径

E:\Tomcat\apache-tomcat-7.0.30-windows-x86\apache-tomcat-7.0.30\work\Catalina\localhost\jspDemo\org\apache\jsp\jsps


生成的.java文件继承一个类

这个类。

org.apache.jasper.runtime.HttpJspBase

然后我再Tomcat的lib目录下面找到了这个包

再利用反编译软件打开,查看源代码

发现两点;
1:继承了HttpServlet

2.写了Servlet方法–调用了一个抽象方法

这个抽象方法就是 我们 Tomcat服务器把我们写的JSP文件编译成Java文件的主要方法;

并且把我们JSP页面所有的东西都包装在这个方法里面了。

用一句话说: 我们写的所有JSP代码 都是写在一个Servlet的service方法里面. 所以转一圈—-我们的JSP就是一个Servlet。

那么为什么要这么做? 肯定是优化了—简化网站的创建和维护。

怎么优化的? 在于他的九大内置对象。 并且我们仔细看会发现这九大内置对象,都是我们servlet里面用的比较多

除了 PageContext、pag和exception三个外,剩下的我们都用的很熟了

ServletContext application、HttpSession session、 ServletConfig config、request、response、 out.这就是JSP的本质—servlet

Tomcat(服务器)首次访问JSP的过程:

(其中一个细节是: 当网站主页打开、有用户访问JSP文件时,服务器才会把他编程.java文件)

下面两句代码区别

contentType="text/html; charset=utf-8"
pageEncoding="UTF-8"

第一句是 告诉浏览器用什么样的编码打开,服务器发过去的文件。
第二句是 告诉服务器,把这个JSP页面编译成 servlet.java文件时候用什么编码

JSP语法:

  • JSP指令。:<%@ 指令名 属性=“值”%>
  • JSP声明。成员变量,或是成员方法.: <%! …. %>
  • Java程序片段。不论有多少这样的代码块,都将包含_jspSerivice方法中。:<% … %>
  • Java表达式。-快速输出信息. <%= …%>

演示代码

<%@ page language="java" import="java.util.*,javax.swing.*" contentType="text/html; charset=utf-8"  pageEncoding="UTF-8"%>
<!-- JSP中写Java脚本的方式1: 指令   --><%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>JSP技术演示页面</title></head><body>This is my JSP page. <br><a href="<%=path%>/jsps/demo2.jsp">aa</a><!-- JSP中写Java脚本的方式2: 普通的Java代码段。翻译后变成jspService()内部的局部代码段   --><%String s="dsjkdsjk";%><form action="demo1.jsp" method="post">Name:<input type="text" name="name"/> <br/>Pwd:<input type="password" name="pwd"/> <br/><input type="submit"/></form><%//response,out,  application,session,request,pageContext,   page, config, exceptionout.println(s);%><div>湖南城市学院OKOK<font color=red size=20pt >暑假</font>很热</div><% //Tomcat翻译成jspServlet,把下面的代码嵌入到jspService()方法中request.setCharacterEncoding("utf-8");String name = request.getParameter("name");String pwd = request.getParameter("pwd");if(name!=null && name.equals(pwd)){out.println("欢迎你,"+name);Date d = new Date();out.println( d.toString()  );}%><!-- JSP中写Java脚本的方式3(比普通多了个叹号): 翻译后变成jspServlet类的成员变量或成员方法   --><%! //声明成jspServlet类中的成员变量int ss=10;public String aa(){return "ss="+ss;}%><%out.println( aa() );%> <br/>输出类的成员变量ss的值:<!-- JSP中写Java脚本的方式4: 一种在页面当前位置输出变量内容的写法   --><%=ss %><%--这是JSP的注释--%><%@include file="demo2.jsp" %></body>
</html>

效果

JSP学习---jsp简介和理解jsp的本质相关推荐

  1. Servlet与JSP学习笔记(五) JSP核心(下)

    同样可以参考菜鸟笔记. JSP标签 JSP除了包括以"<%"开头的JSP标记,还包括以"<jsp:"开头的JSP标签.实际上,前者的每种标记都有后者 ...

  2. Jsp学习总结(1)——JSP九大内置对象和四种属性范围解读

    一.四种属性范围 1.1.在JSP中提供了四种属性保存范围 page:在一个页面内保存属性,跳转之后无效 request:在一次服务请求范围内,服务器跳转后依然有效 session:-在一次会话范围内 ...

  3. JSP学习笔记01 - JSP简介及运行环境配置

    一.什么是JSP 1.jsp简介 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导.许多 ...

  4. 【学习笔记】JSP学习笔记(上)

    我是灼灼,一只初学Java的大一金渐层. 向往余秀华和狄兰·托马斯的疯狂,时常沉溺于将情感以诗相寄:追逐过王尔德.王小波的文字,后陷于毛姆和斯蒂芬·金不可自拔:热爱文学的浪潮,白日梦到底却总在现实里清 ...

  5. javaee学习之路(十五)JSP编程总结

    1.1 Tip:如何查找JSP页面中的错误   JSP页面中的JSP语法格式有问题,导致其不能被翻译成Servlet源文件,JSP引擎将提示这类错误发生在JSP页面中的位置(行和列)以及相关信息.   ...

  6. Java学习(三)JSP学习1

    一.  理解JSP技术 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它 是由Sun Microsystems公司倡导.许多公司参与 ...

  7. javaweb学习总结(二十六)——jsp简单标签标签库开发(二)

    一.JspFragment类介绍 javax.servlet.jsp.tagext.JspFragment类是在JSP2.0中定义的,它的实例对象代表JSP页面中的一段符合JSP语法规范的JSP片段, ...

  8. java jsp学习指南_JSP教程–最终指南

    java jsp学习指南 编者注: JavaServer Pages(JSP)技术使您可以轻松创建同时包含静态和动态组件的Web内容. JSP技术提供了Java Servlet技术的所有动态功能,但提 ...

  9. Head first servlet and jsp学习笔记

    学习中遇到的问题:java基础不行,都忘光了. 主要是:继承,接口,多线程,IO.尤其是多线程,在分布式系统中应该使用的比较多 第一章:前言和体系结构 HTTP协议: TCP/IP的上层协议(应用层) ...

最新文章

  1. android开发教程
  2. 计算机二级考试选择科目有级别,计算机二级考试该选哪一科目?
  3. 一条SQL语句实现二进制到十进制的转换
  4. Scala 求三个数中的最大数代码示例
  5. 驱动程序实例(四):按键驱动程序(platform + input子系统 + 外部中断方式)
  6. javascript基础修炼(4)——UMD规范的代码推演
  7. python矩阵变化_用numpy改变矩阵的形状
  8. 美国科学院院士、斯坦福大学王永雄(Wing H Wong)教授 - 生物信息学云论坛第一讲!...
  9. 我向面试官讲解了单例模式,他对我竖起了大拇指
  10. Linux(debian)操作基础(二)之ASPM(活动状态电源管理)
  11. 链表——单链表、单向循环链表、双向链表
  12. 多因子策略介绍与应用
  13. a byte of python2微盘_《A Byte of Python》与《简明 Python 教程》PDF版
  14. Android开发入门基础
  15. 数学建模:评价性模型学习——层次分析法(AHP模型)
  16. python下载电影_使用python下载VIP电影
  17. a3967驱动_Arduino A3967 步进电机驱动板 EasyDriver Stepper Motor
  18. plotting matlab,MATLAB - Plotting
  19. 为什么阿里巴巴规定禁止超过三张表 join
  20. Linux学习之错误与解决记录(持续更新)

热门文章

  1. 单片机c语言字符串比较,代码对比
  2. JavaScript分页功能如何实现
  3. 【2015年第4期】城市交通大数据技术及智能应用系统
  4. 全栈工程师必备技能栈,聊聊月薪2W以内都该会点啥?
  5. 三、CRUD(增删改查)
  6. Microsoft Office Word 选中图片锐化 以及 所有图片锐化的宏代码
  7. git push简介
  8. 简述GPS,GSM,GPRS和GNSS的名称区别
  9. tensorflow使用高阶api导致训练不收敛问题
  10. pyinstaller 打包附带DLL