1. JSP注释: <%-- 文字 --%>
HTML注释:<!--文字 -->
HTML注释可以在源代码中查看到,但JSP的注释无法在源代码中查看到,说明JSP注释不会被发送到客户端。
2. JSP声明中定义的变量和方法会转换成Servlet的成员变量和成员方法,因此可以用static,private,public修饰
(<%!声明部分%>)
JSP脚本中定义的变量会转换成Servlet的_jspService方法中的局部变量,所以不能用修饰符。因为方法中不能再 定义方法,所以JSP脚本中不能定义方法。
(<%脚本%>)
3. JSP的三个编译指令:page,include,taglib
JSP的七个动作指令: jsp:forward jsp:param jsp:include
jsp:plugin jsp:useBean jsp:setProperty
jsp:getProperty
编译指令和动作指令的区别:
⑴ 编译指令是通知Servlet引擎的处理消息,而动作指令只是运行时的动作
⑵ 编译指令在JSP编译成Servlet时起作用,而处理指令通常可替换成JSP脚本,它只是JSP脚本的标准化写法
4. 静态导入和动态导入的区别:
静态导入:<% @include file=”xxx.jsp” %>
动态导入:<jsp: include page=”xxx.jsp”/>
⑴ 静态导入是将被导入页面的代码完全融入,两个页面融合成一个Servlet,动态导入是在Servlet中使用include 方法引入被导入页面。
⑵ 静态导入时被导入页面的编译指令会起作用,所以如果导入的页面编译指令和原页面不同一,会发生冲突。动 态导入时被导入页面的编译指令不会起作用,只是插入被导入页面的body。
⑶ 动态包含可以增加额外的参数。
5. JSP内置对象的实质是_jspService()方法的形参,或者是_jspService()方法的局部变量,所以直接在JSP脚本中就 可以调用这些对象,因为脚本对应于Servlet的_jspService()方法部分。
JSP的9个内置对象:
① application对象:对于整个web应用有效
作用:
⑴ 让多个JSP,Servlet之间共享数据
application.setAttribute(Stringname,String value);
application.getAttribute(Stringname);
⑵ 获得web应用配置参数,配置参数需在web.xml中设定
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
通过application.getInitParameter(“driver”)获得参数的值
② config对象:用于获取JSP配置信息
③ exception对象:Throwable的实例,exception对象在异常处理页面中才有效,因为JSP脚本和html部分都将转换成_jspService()方法中的执行部分,该部分已经在try块中,所以JSP脚本无需处理异常,但JSP的声明部分仍然需要处理异常。
④ out对象:out对象代表一个页面输出流,通常用于在页面上输出变量值及常量。可用<%=...%>代替,因为<%=...%>本质就是out.write(...);
⑤ pageContext对象:该对象用于访问JSP之间的共享数据,使用pageContext可以访问page,request,session,application范围的变量。
获取指定范围的值:getAttribute(String name,int scope)
scope对应4个值:PageContext.PAGE_SCOPE 1
PageContext.REQUEST_SCOPE 2
PageContext.SESSION_SCOPE 3
PageContext.APPLICATION_SCOPE 4
pageContext还可以用于获取其它内置对象:
getRequest()------------------------------------request
getResponse()----------------------------------response
getServletConfig-------------------------------config
getServletContext-----------------------------application
getSession---------------------------------------session
⑥ request对象:用于获取客户端的请求
作用:
⑴ 获取请求头/请求参数
⑵ 操作request范围的属性:
setAttribute(String attName,Object attValue)
getAttribute(String attName)
⑶ 执行forward或include:
getRequestDispatcher(“/xxx.jsp”).include(request,response)
getRequestDispatcher(“/xxx.jsp”).forward(request,response)
⑦ response对象:用于响应客户端
作用:
⑴ 生成非字符响应,如jpeg图片响应
⑵ 重定向:response.sendRedirect(“xxx.jsp”)
△response重定向与forward不同,会丢弃所有的请求参数和request范围的属性,因为重定向将生成第二次请求,与前一次请求不在同一个request范围内。
⑶ 增加Cookie: Cookiecookie=new Cookie(“value”,name);
cookie.setMaxAge(24*3600);
response.addCookie(cookie);
Cookie[] cookies=request.getCookies();
for(Cookie c:cookies) {...}
△如果Cookie的值为中文,用java.net.URLEncoder.encode(“x”,”GBK”)编码
用java.net.URLDecoder.decode(value)解码
⑧ session对象:这个对象代表一次会话,即从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。
setAttribute(String name,Objectvalue)
getAttribute(String name)
JSP读书笔记PDF版网盘地址: http://pan.baidu.com/s/1tmfi2