"JSP2.0 技术手册" 读书笔记

以下文字皆是我阅读《JSP2.0 技术手册》1-7 章的心得&笔记,此书做为 JSP 入门参考手册,值得推荐。


1、JSP 的执行过程(1)客户端发出 Request(请求);
(2)JSP 容器将 .jsp 页面转译成 Servlet 的 .java 源码;
(3)将产生的 Sevlet 源码进行编译,并加载的内存执行;
(4)把结果 Response (响应)至客户端。

ps.更详细的说明可以参考 IBM dW 社区的文章: Scott Johnson:JavaServer Pages 新手入门
里面详细的说明了 JSP 容器在处理阶段(转换和请求)实践细节。

 

 

2、JSP 语法

JSP 页具有元素和模板数据。
      元素是 JSP 容器已知的元素类型的实例。
      其他的都是模板数据,即所有 JSP 转换器不知道的内容。

      HTML 是模板文本;JSP 技术并不知道如何解析或验证 HTML 标记(如 codegen.jsp 中的 <html><head><title>)。这意味着可以将 HTML 嵌入到 JSP 页,会在页执行时直接将此内容发送到浏览器。

元素 有四种类型:Directive ELements(指令元素)、Scripting ELements(脚本元素)、Action ELements(动作元素)和 EL表达式。


 

3、指令元素        指令(Directives)主要用来提供整个 JSP 网页相关的信息,并且用来设定 JSP 网页的相关属性,例如:网页的编码方式、语法、信息等。
        <%@   directive   attribute1="value"    attribute2="value"   %>

4 attribute指令 
5 tag指令 
6 variable指令 
1 page指令 
2 include指令
3 taglib指令


  

4、脚本元素        JSP 中的脚本元素包括声明、scriptlet 和表达式,内放置的是 Java 代码。

声明语法为 <%!... %>
        ps.使用声明将不加修改地放入 _codegen.java 中的页实现类的类级别,而不是在服务方法内,即表示:若同时 n个用户在执行此 JSP 网页时,将会共享变量(类实例变量)。这样当 JSP 在多用户环境中执行时,一个特别重要的变量被一个用户请求的线程更改了,将会出错,这是非常危险的。(编译为 Servlet 的时候将作为类的公共字段

scriptlet 语法为 <% ...%>
        ps.在 JSP 中嵌入 Java 是需要此类括号来让 Java 代码保持有效和完整。当 JSP 包含数百或数千行 HTML、JSP语法 和 JSP 脚本混合代码时候,将使得 JSP 难以阅读和调试。

表达式语法为 <%= ... %>

        综上所述,建议不在 JSP 内使用 Java 代码,改用 JSTL+EL 代替。

附加:jspInit() 与 jspDestroy()



 

5、动作元素 http://chain99081.blog.163.com/blog/static/45898482008451023885/ 
        动作元素在请求处理阶段起作用。JSP 的动作元素是使用XML 语法写成的,有以下两种格式:
        <prefix:tag attribute=value attribute-list…/>
       或者<prefix:tag attribute=value attribute-list…</prefix:tag>
常用动作元素


 

 

6、EL 表达式Type text here...




7、JSP 内置对象     http://riman.blogdriver.com/riman/1011608.html

内置对象是不需要声明,直接可以在JSP中使用的对象,JSP有以下几种内置对象:

JSP内置对象       Servlet子类                                                作用域

request                javax.servlet.http.HttpServletRequest          Request
response             javax.servlet.http.HttpServletResponse       Page
session               javax.servlet.http.HttpSession                      Session            request.getSession().setAttribute("user", user)
application          javax.servlet.ServletContext                         Application        servlet.getServletContext().getAttribute("userList")
out                    javax.servlet.jsp.JSPWrite                            Page
pageContext       javax.servlet.jsp.PageContext                      Page
config               javax.servlet.ServletConfig                         Page
page                  java.lang.Object                                          Page
exception           java.lang.Throwable                                     Page



HttpServletRequest request;
HttpServletResponse response;
Cookie[]  cookies = request.getCookies();
HttpSession session = request.getSession();
ServletContext context = servlet.getServletContext(); 
PrintWrite out = response.getWriter();


request:它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。
response:提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)
out:提供了几个方法使你能用于向浏览器回送输出结果。
            PrintWriter pw = response.getWriter();
            pw.print("<script type='text/javascript'>alert('成功添加一个管理员。');history.go(-1);</script>");
            pw.flush();
            pw.close();

             //获得jsp页面的输入流
            JspWrite out=pageContext.getOut();
            out.println("<b>HelloWorld!</b>");

pageContext:它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。
session:可以存贮用户的状态信息
application:有助于查找有关servlet引擎和servlet环境的信息
config:该对象用于存取servlet实例的初始化参数。
page:表示从该页面产生的一个servlet实例。

Servlet API中的几个对象
request,response,session,application,out对象的常用调用的函数

你可能感兴趣的:(读书笔记)