《Spring MVC学习指南》读书笔记--附录C JavaServer Pages

C.1 JSP概述

当一个JSP页面第一次被请求时,容器会生成一个java类。该类实现JspPage或其子接口HttpJspPage。而JspPage是javax.servlet.Servlet的子接口。所以每一个JSP页面实现类都是一个servlet。

C.2 注释

<%-- --%> JSP注释
<!-- --> HTML注释

C.3 内置对象

这些对象不用实例化,直接就可以使用。

request     --     javax.servlet.http.HttpServletRequest
response     --     HttpServletResponse
out     --     javax.servlet.jsp.JspWriter (功能上和Response.get)
session     --     javax.servlet.http.HttpSession
application     --     javax.servlet.ServletContext
config     --     javax.servlet.ServletConfig
pageContext     --     javax.servlet.jsp.PageContext
page     --     javax.servlet.jsp.HttpJspPage
exception     --     java.lang.Throwable

一些方法:

     //获取request中header名字集合,可用Enumeration<String>接收
     request.getHeaderNames() 
     //获取header参数的具体值 
     request.getHeader(String header)     
     response.getBufferSize()
     session.getId()
     config.getServletName()
     application.getServletInfo()

C.4 指令

指令知识JSP转换器如何翻译JSP页面为Servlet,其中最重要的是page和include指令。

C.4.1 page指令

语法格式:

<%@ page attribute1="value1" attribute2="value2" ...%>

page属性列表:

  • import 导入java类
  • session 是否加入会话管理
  • buffer 定义out的缓冲大小
  • autoFlush 为True表示缓冲区满时自动写入输出流
  • isThreadSafe 线程安全级别,不推荐使用
  • info
  • errorPage 定义错误处理页面
  • isErrorPage 标识本页是一个错误处理页面
  • language 值为java

C.4.2 include指令

<%@ include file="url"%>
JSP转换器处理include指令时,将指令替换为指令所包含文件的内容。
.jspf文件、html文件等常被include

C.5脚本元素

一个脚本程序是以<%开始以%>结束的java代码块。
定义在一个脚本的变量,可以在后续的脚本程序中使用。

C.5.1 表达式

以<%=开始,以%>结束。会被jsp容器执行。实际上会用out对象打印出结果。
如:
Today is <%=java.util.Calendar.getInstance().getTime()%>
无需分号结尾.

C.5.2 声明

声明在JSP页面中使用的方法和变量。以<%!开始,并以%>结束。
(声明方法是包括方法体的)
可以通过声明来重写类的(JSP页面生成的servlet类)init和destroy方法。

<%!
  public void jspInit(){
       System.out.println("index.jsp jspInit...");
  }
  public void jspDestroy(){
       System.out.println("index.jsp jspDestroy...");
  }
%>

C.5.3 禁用脚本元素

“随着JSP 2.0对表达式语言的加强,推荐的实践是:在JSP页面中用EL访问服务器端对象且不写JAVA代码。”(?)

<jsp-property-group>
     <url-pattern>*.jsp</url-pattern>
     <scripting-invalid>true</scripting-invalid >
</jsp-property-group>

C.6 动作

useBean\setProperty\getProperty

<jsp:useBean id="employee" class="entity.Employee"></jsp:useBean>
<jsp:setProperty property="firstName" name="employee" value="chen"/>
first name:<jsp:getProperty property="firstName" name="employee"/>

include动作与include指令的区别:
对于include指令,资源引入发生在页面转换时,即当JSP容器转换页面生成Servlet时。
而include动作,资源引入发生在请求页面时,故可以传递参数。
还有其他……未完善

forward动作
转向其他资源:

<jsp:forward page="useBeanTest.jsp">
    <jsp:param name="" value=""/>
</jsp:forward>

C.7 错误处理

可将一个JSP页面定义为错误处理页面,只需设置<%@page isErrorPage="true"%>
设置一个页面的错误处理页面:<%@page errorPage="errorHandler.jsp"%>
这样当该jsp页面抛出异常时,便会跳转到错误页面处理,当网页url不变,输出为页面处理程序的输出,
不再会输出难以理解的信息。

C.8 小结

JSP隐身对象: (九大对象)

  • out
  • session
  • request
  • response
  • exception
  • application
  • page
  • config
  • pageContext

3大语法元素:

  1. 指令:
    <%@page attribute="value"%>
    <%@ include file="url"%>
  2. 脚本元素
    <% %>脚本
    <%= %>表达式
    <%! %>声明
  3. 动作
//bean
<jsp:useBean name="" class=""></jsp:useBean>
<jsp:setProperty name="" property="" vlaue=""/>
<jsp:getProperty name="" property=""/>
//include动作:
<jsp:include page="">
     <jsp:param name="" value=""/>
</jsp:include>
forward动作:
<jsp:forward page="">
     <jsp:param name="" value="">
</jsp.forward>

其他:

  1. 新增加JSP页面后,并不需要重启Tomcat服务器。

  2. 解决JSP页面中文乱码问题:
    <%@page contentType="text/html;charset=utf-8"%>

  3. Servlet的缺点:

  • html是由以字符串形式输出的。这使得处理response响应非常繁琐。
  • 页面形式的一点变化都要重新编译

备注

第一次用MarkDown写文章,确实强大,排版很方便、很美观。棒棒哒!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 3,832评论 0 11
  • 1.什么是JSP (1)jsp全称是Java Server Pages,它和Servlet技术一样都是sun公司定...
    yjaal阅读 3,681评论 5 99
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,740评论 18 399
  • 前面讲了servlet入门实践现在开始介绍jsp入门实践,开发环境的搭建请参考我前面的tomcat的文章,jsp入...
    伊豚wall阅读 3,383评论 2 56
  • 这部分主要是与Java Web和Web Service相关的面试题。 96、阐述Servlet和CGI的区别? 答...
    杂货铺老板阅读 1,425评论 0 10