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.pluginsorg.eclipse.wst.server.core mp1work[对应具体项目名])。

关于这九大内置对象的说明:

①. 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。


原文地址:https://www.cnblogs.com/itfky/p/13728501.html