关于对JSP整体的理解--20190918

在idea中启动的tomcat服务器

通过昨天的学习,其实我们能够发现,在idea中,当我们启动服务器时,它会自己拷贝一个类似于tomcat副本的文件,这一点可以通过查看server的output控制台中的信息看出:

Using CATALINA_BASE:   "C:\Users\ASUS\.IntelliJIdea2019.1\system\tomcat\Tomcat_9_0_24_20190917servlet01"
Using CATALINA_HOME:   "D:\newre_apache_tomcat\apache-tomcat-9.0.24"
Using CATALINA_TMPDIR: "D:\newre_apache_tomcat\apache-tomcat-9.0.24\temp"
Using JRE_HOME:        "D:\newre_jdk11.0.3"
Using CLASSPATH:       "D:\newre_apache_tomcat\apache-tomcat-9.0.24\bin\bootstrap.jar;D:\newre_apache_tomcat\apache-tomcat-9.0.24\bin\tomcat-juli.jar"

第一行是生成项目的路径;第二行是tomcat的安装目录;第三行是tomcat的临时文件区目录,第四个是Java虚拟机环境目录,最后一行,则是一个类似于环境变量的东西。

JSP是一种特殊的servlet,与传统的直接用Java编写的servlet相比,它需要额外有一个转换成Java文件的过程,但是,它改变了传统servlet在Java中插入html的特点,变成了在html中插入Java的形式。

JSP加载流程

当客户端想要加载一个JSP页面时,并不能直接通过打开网站的方式加载,而是必须要经过JSP引擎的处理,而JSP引擎,则是位于服务器当中(tomcat服务器),服务器启动,JSP引擎启动,此时才能根据请求对JSP页面进行处理,将其转化成Java文件,经过编译后,变成可执行的字节码文件,此时,我们看到的页面就是被转化后的了。

JSP所对应的Java文件位于控制台中的CATALINA_BASE路径下的work\Catalina\localhost\ROOT\org\apache\jsp文件夹中,当打开JSP页面时,JSP引擎就会在此处加载出一个Java文件,以及一个.class文件,可以对比JSP文件与Java文件,可以看到其中的某一句都有对应关系,在之后的学习中,可以通过对比得出其中的转换规则。

JSP元素

HTML标记

JSP中的HTML标记和html文件书写时的标记一样,在此不多说。

注释

在JSP中能够体现出三种注释:

  • JSP注释:<%--jsp注释--%>,通过查看对应Java文件可以看出此注释不会在源码中体现
  • HTML注释:<!--html注释-->,通过查看对应Java文件可以看出此注释是html的一部分,所以实际上也是页面的一部分
  • JSP脚本注释(Java注释):与Java相同,能够写单行或多行注释。(//单行注释;/*多行注释*/)

变量及方法声明

格式:<%!变量及方法声明%>

查看对应Java文件,此句声明的变量属于成员变量,方法属于成员方法(比如在操作中变量值改变,那么意味着在此刷新时就成了变了的值)

代码片

格式:<%代码片%>

里面可以进行变量声明、代码编写,但是不能进行方法声明。这能够通过查看Java文件找出原因:代码片中的内容位于_jspService方法中,方法不能嵌套方法。

但是能够轻易想到,我们可以通过封装类(方法内部类),调用类中方法,达到间接封装方法的目的(但是实际中应该不用这么做)。

表达式

格式:<%=表达式%>

它的特点就是,最多只有单句代码(而且不能有分号)。

如果里面是方法,那么这个方法必须要有返回值,如果里面是对象,那么默认调用对象的toString方法(基本数据类型直接输出)。

此外,还有一点就是,此处不能写成null,否则会报错。

指令

格式:<%@指令元素内容%>

指令元素共有三种,可以通过一个xsd文件找见详细内容,部分内容如下图:

xsd文件部分内容

在Java中,它的体现是一个方法的设置与变量的设置。

九大内置对象(隐含对象)

  1. page:表示当前JSP页面,指代当前JSP编译后的Servlet对象本身,也就是this。
  2. config:表示Servlet配置,与Servlet对象中的ServerConfig对象一样,能够调用ServerConfig对象的方法(省去了在Servlet中需要getServletConfig的步骤)。
  3. application:标识web应用上下文,类型是ServletContext。
  4. request:请求对象,HttpServletRequest对象。
  5. response:响应对象,HttpServletResponse对象。
  6. session:表示一次会话,在服务器端记录用户状态信息的技术。HttpSession对象。
  7. exception:表示发生异常的对象。在默认情况下,由于page指令中的isErrorPage属性默认值为false,所以默认不会产生此对象,但是设置之后可以看到,这个对象是Exception类型的。
  8. out:输出响应体,JspWriter对象。
  9. pageContext:表示jsp页面上下文(jsp管理者),PageContext对象。

至于九大内置对象的详细内容,在此不多做介绍,只是简单提一句:1到7个内置对象在servlet中都有体现,但是8和9是jsp独有的,分别体现了在页面输出文本,管理jsp页面的作用。

总结

通过学习JSP,可以很明显地感觉到它和Java的关系是一一对应的,它里面的内容,除了jsp注释外会被一句不差地转化成适合加载成网页的格式,在此过程中,它只有利用服务器中的JSP引擎(在此处是tomcat服务器),才能够正常地在网站中显示出来内容。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NewReErWen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值