日期:2014-05-16  浏览次数:20352 次

(一)jsp基础备忘

jsp笔记之《javaee 企业应用实战》

?

1.WEB-INF是一个特殊的文件夹,web容器会包含该文件夹下的内容,客户端留言器无法访问WEB-INF下的任何内容。

?

2.jsp是servlet的一种简化,每个jsp页面就是一个servlet实例,jsp页面由tomcat等web容器编译成servlet(放在work路径对应的web应用下),servlet再负责相应用户请求。

?

3.从上图可以得知:

?? a.jsp文件必须在jsp服务器内运行;

?? b.jsp文件必须生成servlet才能执行;

?? c.每个jsp页面的第一个访问者速度很慢,因为只有第一次访问jsp需要编译成servlet;

?

4.jsp注释的写法:<%--注释内容--%> ,与html<!-- 注释内容-->不同。

??简单脚本:<%out.println(new java.util.Date())%> 。

?

5.jsp声明:

?

 <%--jsp声明<%=request.getContextPath()%>--%>
    <%!
    	private int count;
    	public String info(){
    		return "hello";
    	}
     %>
     <%
    	//输出info方法的返回值
     	out.println(info());%>
     	<br>
   	  <%
   	    //将count的值输出后再+1
     	out.println(count++);
      %>

打开多个浏览器,甚至在不同那个的机器上访问该jsp地址,发现所有客户端访问count的值是连续的,所有客户端共享了一个count变量。因为每个jsp编译生成的servlet在web容器中只有实例。jsp<%!%>中声明的是serlvet成员变量,成员变量只在创建实例化的时候初始化,该变量的值将一直保存,直到实例销毁。

?

注意:jsp声明部分定义的变量和方法可以使用private、public等访问控制符修饰,也可使用是static修饰,将其辩称雷属性和类方法,但不能使用abstract修饰要声明的方法,这会导致servlet辩称抽象类,从而无法实例化。?

?

6.?jsp输出表达式:<%=? %>,输出表达式语法后不能有分号;

?

7.jsp脚本<%%>中的变量编译到servlet中是局部变量,而非成员变量,所以<% %>中出现的变量声明都不能用private、public等修饰符。 同样的,定义方法也需要修饰符,所以java脚本中也不允许定义方法(jsp脚本将抓换成_jspService方法里的可执行代码,java语法不允许在方法中定义方法)。

?

8.jsp的三个编译指令:

? ◎ page:针对当前页面的指令;

?????<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" errorPage="error.jsp"%>

???? <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" isErrorPage="true"%>

? ◎ include: 包含另一个页面;

???? <%@include file="xx.jsp"%>

? ◎ taglib :用于定义和访问自定义标签;

?

9.jsp的七个动作指令:

JSP动作指令主要有如下7个:

?? jsp:forward:执行页面转向,将请求的处理转发到下一个页面。

?? jsp:param:用于传递参数,必须与其他支持参数的标签一起使用。

?? jsp:include:用于动态引入一个JSP页面。

?? jsp:plugin:用于下载JavaBean或Applet到客户端执行。

?? jsp:useBean:创建一个JavaBean的实例。

?? jsp:setProperty:设置JavaBean实例的属性值。

?? jsp:getProperty:输出JavaBean实例的属性值。

详见:http://ajava.org/readbook/open/qljjeessh/15076.html

?

10.jsp脚本中的9个内置对象:

??? jsp中的内置对象都是servlet API接口的实例,jsp规范将他们完成了默认初始化(由jsp对应servlet的_jspService()来创建这些实例)。也就是说,他们已经是对象,可以直接使用。

??? 记录几个常用的:

??pageContext:jav