servlet如果在配置文件里设置<load-on-startup>标签的话,那么在tomcat启动的时候servlet就会被new出来;
Session:
如果浏览器支持Cookie,创建Session的时候会把SessionID保存在Cookie里
如果不支持Cookie,必须自己编程使用URL重写的方式实现Session,使用response.encodeURL(),它的作用是
(1)转码 (2)URL后面加入SessionID
同一个application下的servlet/jsp可以共享同一个Session,前提是同一个客户端窗口。
jsp变量的声明:
使用<%! %>声明的是成员变量,而使用<% %>声明的是局部变量,如<%!int n=0 %>声明的n就是成员变量,在<%! %>里面
还可以声明方法,这里声明的方法是成员方法!使用<%= %>可以打印出等号后面的内容,等号后面的内容必须是字符串或者可以转
换为字符串的,等号后面只能有一行,没有分号!
jsp的注释:
<%-- --%>、<%// %>、<%/* */>其中后面两种是和Java一样的
Directive:
Directive(编译指令)相当于在编译期间的命令
格式:<%@Directive 属性="属性值"%> 如:<%@page import="java.util.*"%>
常见的Directive:
page、include、taglib
Directive-page:
指明与jsp container的沟通方式
基本格式:
<%@page language="script language"|
extends="className"| 从哪个类继承
记住 import="importList"| 要引入的包 用的比较多
buffer="none|kb size"| -none:不缓冲,默认8K
session="true|false"|是否可以使用session,默认true
autoFlush="true|false"|缓冲器是否自动清除,默认true
isThreadSafe="true|false"|默认是false,不需要指定
info="infoText"|描述性的信息,很好用
记住 errorPage="errorPageUrl"|页面出错后显示哪个页面的内容
记住 isErrorPage="true|false"|页面是否出错
记住 contentType="contentTypeInfo"
%>
Directive-include:
将指定的jsp程序或者HTML文件包含进来,格式:
<%@include file="fileURL%>
jsp Engine会在JSP程序的转换时期先把file属性设定的文件包含进来,然后开始执行转换及编译的工作。
限制:不能向fileURL中传递参数
Action:
Action(动作指令)在运行期间的命令;
常见的:1、jsp:useBean
jsp:setProperty
jsp:getProperty
2、jsp:include
3、jsp:forward
jsp:param
4、jsp:plugin
jsp:include
用于动态包含jsp程序或HTML文件等,除非这个指令是会被执行到,否则它是不会被Tomcat等JSP Engine编译。格式:
<jsp:include page="URLSpec"/>
<jsp:include page="URLSpec">
<jsp:param name="ParamName"value="paramValue"/>
</jsp:include>
jsp:param用来设定include文件时的参数和对应的值!
******************************************************************************************************************
***************************
jsp:forward
用于将一个jsp的内容传送到page所指定的JSP程序或者Servlet中处理(URL)格式:
<jsp:forward page="urlSpec"flush="true"/>
<jsp:forward page="urlSpec"flush="true"/>
<jsp:param name="paramName"value="paramValue"/>
</jsp:forward>
<jsp:param>用于指定参数及对应的值
response.sendRedirect也可以实现页面的跳转,如果使用的是response.secdRedirect,那么浏览器的地址栏显示的会是跳转后页
面的地址,窗口显示的也是跳转后的页面,而如果使用的是<jsp:forward>那么浏览器的地址栏显示的是使用了jsp:forward的那个
页面的地址,窗口显示的却是跳转后的页面!
使用jsp:forward使用的是同一个request,而如果使用的是response.sendDirect使用的是不同的request!
jsp:useBean
通过jsp:useBean可以在JSP中使用定义好的Bean
Bean的基本要素:
1.必须要有一个不带参数的构造器,在JSP元素创建Bean时会调用空构造器
2.Bean类应该没有任何公共实例变量,也就是说,不允许直接访问实例变量,变量名称字母必须小写
3.通过getter/setter方法来读/写变量的值,并且将对应的变量首字母改成大写
4.不要使用裸体类
基本用法:
<jsp:useBean id="beanName" scope="page|request|session|application" class="package.BeanClass"
type="typeName"/>
<jsp:useBean...>
<jsp:setProperty.....>
<jsp:getProperty.....>
</jsp:useBean>
setProperty和getProperty的用法,如:
<jsp:setProperty name="cb" property="count" value="23"/> <jsp:getProperty name="cb"
property="count"/>
其中name表示类的实体,property表示的是属性,value为值!
********************************************************************
jsp:useBean各项参数的含义:
id:对象实例名称
scope:Bean作用的范围,默认为page,对整个jsp页面有效
class:Bean类名称
type:Bean实例类型,可以是本类,或其父类,或实现的接口,默认为本类
Scope各项参数的意义:
page:仅涵盖使用javaBean的页面
request:有效范围仅限于使用JavaBean的请求
Session:有效范围在用户整个连接过程中(整个会话阶段均有效)
application:有效范围涵盖整个应用程序。也就是对整个网站均有效
jsp内置对象:是指可以直接拿来用的,包括:
1.out
2.request
3.response
4.pageContext
5.Session
6.application
7.config
8.exception
9.page
jsp常用的内置对象及其常用方法
jsp-out常用方法:
println():向客户端输出各种类型数据
newLine():输出一个换行符
close():关闭输出流
flush():输出缓冲区里的数据
clearBuffer():清除缓冲区里的数据,同时把数据输出到客户端
clear():清除缓冲区里的数据,但不把数据输出到客户端
getBufferSize():返回缓冲区的大小
jsp-request常用方法
getMethod():返回客户端向服务器端传送数据的方法
getParameter(String paramName):返回客户端向服务器端传送的参数值,该参数由paramName指定
getParameterName():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举类型数据(Enumeration)
getParameterValues(String name):获得指定参数的所有值,由name指定
getRequestURL():获得发出请求字符串的客户端地址
getRemoteAddr():获得客户端的IP地址
getRemoteHost():获得客户端机器的名称
getServerName():获取服务器的名字
getServletName():客户端所请求的脚本文件路径
getServerPort():获取服务器端的端口
jsp-response常用方法
addCookie(Cookie cookie):添加一个Cookie对象,用于在客户端保存特定的信息
addHeader(String name,String value):添加HTTP头信息,该Header信息将发送到客户端
containsHeader(String name):判断指定名字的HTTP文件头是否存在
sendError(int):向客户端发送错误的信息
sendRedirect(String url):重定向JSP文件
setContentType(String contentType):设置MIME类型与编码方式
这个可以给javaBean的属性赋值,但是其属性名必须与传过来的参数名相同;它可以自动接受一个表单传过来的参数然后自动的把
它赋给JavaBean的属性,然后要拿的时候也可以到该JavaBean中去拿;
<jsp:setProperty name="bean的名字" property="*"/>