JSP知识

来源:互联网 发布:mac单机游戏迅雷下载 编辑:程序博客网 时间:2024/05/21 03:56

JSP简介

   JSP由传统的网页HTML文件(*.htm、*.html)中插入Java程序段(Scriptlet)和JSP标记(tag)组成。   在JSP中大部分都是由脚本小程序组成,所谓的脚本小程序就是里面包含了JAVA代码。Scriptlet共分为三种:
  • <%%>:定义局部变量,编写语句
  • <%!%>:定义全局变量,可以编写类和方法
  • <%=%>:表达式输出,专门输出变量或一个具体值 类似于out.println

JSP工作原理

这里写图片描述

   客户端通过浏览器路径发送一个请求,服务器接收到请求,转发或重定向到一个JSP页面。    这个JSP文件是第一次被请求,这时JSP引擎(特殊的Servlet)的操作是:   首先,把将这个JSP文件转换成一个Java类。如果在转换过程中出现异常,转换过程会被中断,并向服务器和客户端输出错误信息;如果转换成功,JSP引擎通过JVM把该Java类编译成相应的.class文件。   其次,创建一个Servlet实例,调用该实例的jspInit()方法,此方法在Servlet的整个生命周期中只执行一次。   然后,创建并启动一个新的线程,新线程调用Servlet实例的jspService方法。(对于每一个请求,JSP引擎都会创建一个新的线程来处理该请求;如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程,每个客户端请求对应一个线程)。   再然后,浏览器调用JSP文件时,Servlet容器会把浏览器的请求和对浏览器的响应封装成HttpServletRequest和HttpServletResponse对象,同时调用对应的Servlet实例中jspService()方法,把这两个对象作为参数传递给jspService()。   最后,jspService()方法执行后将HTML内容返回给客户端。

注意:

   如果JSP文件被修改了,服务器将根据设置决定是否对该文件进行重新编译。如果需要重新编译,则将编译结果取代内存中的Servlet,并继续上述处理过程。 如果在任何时候由于系统资源不足,JSP引擎将以某种不确定的方式将Servlet从内存中移去。当这种情况发生时,jspDestroy()方法首先被调用, 然后Servlet实例便被标记加入“垃圾收集”处理。

参考:http://www.cnblogs.com/mlloc-clove/p/3549777.html

存放路径

存放在在tomcat的work文件夹下
D:\tomcat\apache-tomcat-9.0.0.M10\work
D:\tomcat\apache-tomcat-9.0.0.M10\work\Catalina\localhost\a51\org\apache\jsp

九大内置对象

内置对象 类型 描述 常用语法 pageContext javax.servlet.jsp.PageContext 页面上下文对象 类似于域对象 request javax.servlet.ServletRequest 请求对象 与servelet中的用法相同 response javax.servlet.ServletResponse 响应对象 与servelet中的用法相同 session javax.servlet.http.HttpSession 会话对象 与servelet中的用法相同 application javax.servlet.ServletContext 应用程序对象 与servlet中的ServletContext用法相同 out javax.servlet.jsp.JspWriter 输出对象 out.println(String str);类似于<%= %> config javax.servlet.ServletConfig 配置对象 与servlet中的ServletConfig用法相同 page java.lang.Object 页面对象 代表当前页面,没有常用方法 exception java.lang.Throeable 例外对象 设置errorPage属性,跳转到错误页 在错误页设置isErrorPage为true <%@ page isErrorPage=”true” %> 才可使用该内置对象
常用方法: exception.getMessage();

四个作用域

作用域对象 作用域 有效范围 pageContext page 当前JSP页面 request request 当前请求周期 session session 当前会话 application application 整个应用

补充

  1. 在jspInit()中可以进行一些初始化工作,如建立与数据库的连接、建立网络连接、从配置文件中获取一些参数等,而在jspDestory()中释放相应的资源。
  2. HTML代码错误的情况:正常翻译成java源代码
    Java代码编译时错误的情况:正常翻译成Java源代码,执行时报500错误
    Java代码运行时错误的情况:正常翻译成Java源代码,执行时报500错误
原创粉丝点击