JSP基础
Java Server Page:Java 服务器端网页,在 HTML 页面中编写 Java 代码的页面。JSP 是 Servlet 编写的一种技术,它将 Java 代码和 HTML 语句混合在同一个文件中编写,只对网页中的要动态产生的内容采用 Java 代码来编写,而对固定不变的静态内容采用普通静态 HTML 页面的方式编写。
1. 新建一个JSP页面,在body节点内的 <% %>便签中即可编写Java代码。
<body> <% Date date = new Date(); System.out.print(date); %> </body>
① JSP表达式:<%= expr %>。
② JSP脚本片段:<% java code %> 同一个JSP页面中的多个JSP片段中的代码可以相互访问。
③ JSP声明:<%! statement %> 形同为当前JSP页面对应的servlet类声明类级变量(即成员变量)。
④ JSP注释的格式:<%-- JSP 注释 --%> <!-- HTML 注释 --> 区别: JSP 注释可以阻止 Java 代码的执行。
2. JSP页面可以放置在WEB应用程序中的除了WEB-INF及其子目录外的任何其他目录中,JSP页面的访问路径与普通的HTML页面的访问路径形式完全一样。
3.JSP的运行原理:JSP 本质上是一个 Servlet。
每个JSP 页面在第一次被访问时,JSP 引擎将它翻译成一个 Servlet 源程序,接着再把这个 Servlet 源程序编译成 Servlet 的 class 类文件,然后再由WEB容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。
4. JSP的9大内置对象
即9个隐含的、没有声明即可在JSP页面内使用的对象:request、response、pageContext、session、application、config、out、page、exception。
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException { //... final javax.servlet.jsp.PageContext pageContext; javax.servlet.http.HttpSession session = null; final javax.servlet.ServletContext application; final javax.servlet.ServletConfig config; javax.servlet.jsp.JspWriter out = null; final java.lang.Object page = this; //... }
如上代码片段,可以在任意JSP页面对应的servlet源文件的service方法中查看这些内置对象。(对于Eclipse,源文件位置在[工程项目目录]\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\work\[对应具体项目名]\)。
关于这九大内置对象的说明:
①. request:HttpServletRequest的实例。
②. response:HttpServletResponse的实例(在JSP页面中几乎不会调用它的任何方法)。
③. pageContext:PageContext的实例,页面上下文,可从它获取到其它8个隐含对象,也可以从中获取当前页面的其它信息,自定义标签用的较多。
④. session:HttpSession的实例,代表浏览器和服务器的一次会话。
⑤. application:ServletContext实例,代表当前Web应用。
⑥. config:当前JSP对应的Servlet的ServletConfig对象对象(几乎不使用)。若需要访问当前 JSP 配置的初始化参数,需要通过映射的地址才可以。
<!-- 映射 JSP --> <servlet> <servlet-name>hellojsp</servlet-name> <jsp-file>/hello.jsp</jsp-file> <init-param> <param-name>test</param-name> <param-value>testValue</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>hellojsp</servlet-name> <url-pattern>/hellojsp</url-pattern> </servlet-mapping>
⑦. out:JspWriter的实例。
⑧. page:指向当前 JSP 对应的 Servlet 对象的引用,但为 Object 类型,只能调用 Object 类的方法(几乎不使用)。
⑨. exception:在声明了 page 指令的 isErrorPage="true" 时,才可以使用:<%@ page isErrorPage="true" %>。
pageContext, request, session, application(对属性的作用域的范围从小到大);out, response, config, page;exception。