java web 笔记二
2016-07-10 21:29
330 查看
jsp全称: java server page
jsp页面要被WEB容器翻译成java类,按照servlet规范,所有jsp翻译生成的类必须实现HttpJspPage接口,而HttpJspPage是servlet的子接口。也就意味着,所有jsp翻译生成的类也会实现servlet接口。所以从这个意义上说,jsp实质是servlet。
jsp重在于页面显示,而servlet重在于逻辑处理。
jsp引擎:
jsp引擎是web容器编写的类,负责将jsp页面翻译成为java类。在web容器下的/conf/web.xml中进行注册。
jsp生命周期:
由JSP引擎将jsp页面翻译成为java代码
将java代码编程成为class字节码文件
加载到容器
由容器实例化
初始化阶段相关的方法是jspInit()
请求到达,调用服务器阶段相关的方法是_jspService()
销毁阶段相关的方法是jspDestroy()
JSP语法和语义:
1. jsp网页主要由元素(element)和模版数据(TemplateData)两个部分组成
模版数据是jsp的静态部分,web容器不处理
元素则是必须由web容器解释
元素都是以xml作为语法基础,并且大小写要一致
2. web容器支持两种不同格式的jsp语法
普通格式和xml兼容格式
普通jsp语法是设计给开发者用的
xml兼容jsp语法是设计用来容易被开发工具使用的
jsp的脚本元素:
声明:<%! %> 定义jsp类的成员变量、静态变量和方法
脚本:<% %> 丰富_jspService()方法,在脚本中定义的变量全部是_jspService()方法内的局部变量。
表达式:<%= %> 注意里面不能有分号; 丰富_jspService()方法,相当于out.print();向页面输出内容。
jsp注释:
1. jsp注释: <%-- --%> 容器不翻译,只在源代码中可见,最为安全。
2. html注释:<!-- --> html注释会通过out.print 输出到客户端。客户端和服务器均可见,最不安全。
3. java注释: // /* */ 给java代码书写的注释,只在服务器端可见。
jsp隐式对象:
jsp引擎翻译的jsp类中,在_jspService()中会定义九个变量,并将这些变量做初始化。由于脚本和表达式实在丰富_jspService()方法,所以可以直接使用这些变量。这些变量称为jsp的隐式对象。
jsp隐式对象有九个:
四个作用域:
1. pageContext:只在当前JSP页面有效
2. request:作用于请求
3. session:作用于会话
4. application:作用于全局
两个输出:
1. response:响应对象
2. out:打印输出流
page:当前对象
config:配置对象
exception:异常对象
jsp指令:
page: 页面指令,功能是设定整个jsp页面属性和相关功能
<%@page contentType="text/html;charset=utf-8" pageEncoding="utf-8"import="java.util.Date"%>
contenType:设置MIME类型和编码集
pageEncoding:设置编码集,mime类型默认为text/html
import:导入该JSP类中所用到的类,如果需要导入多个类,中间以逗号分开。
session:默认为true。表示访问该jsp页面时,会产生会话对象。
errorPage:表示当前jsp页面如果抛出了运行异常,则跳转指定出错页面
isErrorPage:表示该jsp页面为出错处理页面,定义了exception隐式对象,接收异常
include: 表示在JSP编译时插入一个包含文本或代码的文件
<%include file=””%> 叫做指令包含,也叫静态包含。将本身的jsp和包含的jsp放在一起编译,形成一个class文件,所以两个页面不能存在同名变量,指令包涵也只能包含文件
<jsp:include page=”” flush=’true’>
<jsp:paramname = ‘aaa’ value=’fff’>//可以包含参数
</jsp:include>叫做动作包涵,在请求时发生,本身jsp包涵的是另一个jsp执行的结果。形成2个class文件,所以两个页面可以存在同名变量。动作包含可以包含文件,也可以包含servlet输出结果。同时可以传递参数
将客户端所发出来的请求,从一个jsp网页转发到另一个jsp页面:
<jsp:forward page=’relativeURL’>
4000
taglib:
标签指令
建立标签库
文件名为 name.tld 注意后缀必须是tld 但是实质类型依旧是xml
<?xml version="1.0"encoding="utf-8"?>
<taglib>
<tlib-version>1.2</tlib-version>//必须添加
<jsp-version>1.2</jsp-version>//必须添加
<uri>tagTest</uri>//表示别名,在导入的时候就不需要路径名了
<tag>
<name>forward</name>
<tag-class>com.lovo.mark.ForWardTag</tag-class>
<attribute>//为标签中添加属性,可以传参
<name>page</name>
<required>true</required>//表示使用该标签必须添加该属性,否则报错
</attribute>
</tag>
</taglib>
导入标签库:
tagTest
<%@taglib uri="/WEB-INF/myTag.tld"prefix="mm" %>
<%@taglib uri="tagTest "prefix="mm" %>
标准标记库:JSTL
过滤器:
一个中间组件,用于拦截源数据和目的数据之间的消息
过滤二者之间传递的数据
所有匹配到该URL定义的请求,都要被filter-Name中定义的过滤器过滤。
url-pattern可以替换为servlet-name 表示对该servlet的访问都要被filter-name中定义的过滤器过滤
在<filter-mapping>标签中的<url-pattern>子标签,可以加入<url-pattern>标签,也可以加入<servlet-name>标签,表示针对某个指定名称的servlet过滤。
<filter>
<filter-name>index</filter-name>
<filter-class>com.lovo.util.IndexFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>index</filter-name>
<url-pattern>/jsp/index.jsp</url-pattern>
</filter-mapping>
用注解方式@webfilter(路径名)
过滤器类型:
REQUEST:表示直接请求,按请求路径进行过滤。默认方式
FORWARD:表示通过内部转发到达目标资源之前进行过滤。
INCLUDE:表示包含指定资源时,进行过滤
ERROR:表示发生异常时,进行过滤
在<filter-mapping>标签中加入子标签<dispatcher></ dispatcher >来选择过滤类型
配置过滤器链:
当一个请求到达目标资源时,可能会经过多个过滤器。这酒形成了过滤器链。过滤器链执行的顺序是:先经过 <url-pattern> 在经过<servlet-name>标签。如果一个请求经过多个<url-pattern >标签,按部署顺序执行。
EL表达式:
${parameterName}
取值优先从小范围开始,如果要取出发范围的需要如 ${sessionScope.Name}
${键名} 先从小作用域中查找,如果小作用域中有改建对应的值,则取出,并忽略其他作用域。如果小作用域中没有该键,那么再去大作用域中查找。
所以,可以通过作用域,指定需要查找绑定对象。
${requestScope.keyName}
${sessionScope.keyName}:表示在session会话范围中查找对象,如果没有找到。也不会去其他作用域查找
也能做运算
${3+2} 输出5
${3>5} 输出false
<% UserBeanbean = new UserBean("张三",Date.valueOf("1988-01-01"));
request.setAttribute("us",bean);
%>
${us}<br>
${us.userName}
${bean.dog.name} //bean里面有其他的实体bean
取出实体bean的属性实际上也是调用 get方法所以实体bean需要规范,因为是调用get方法,所以属性首字母是大写的话,用el调用需要把大写改为小写。
通过el表达式,从作用域对象中,取出属性时,是调用get方法完成的。所以就算该实体类没有属性,但是提供了get方法,同样可以通过EL表达式取出属性值。另外,实体类的属性,必须规范,一般来说,属性名前两个字母都不能是大写字母。
<welcome-file-list>
表示欢迎页面集合,表示如果在访问web应用程序时。不输入任何路径,默认所访问的页面列表
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
jsp页面要被WEB容器翻译成java类,按照servlet规范,所有jsp翻译生成的类必须实现HttpJspPage接口,而HttpJspPage是servlet的子接口。也就意味着,所有jsp翻译生成的类也会实现servlet接口。所以从这个意义上说,jsp实质是servlet。
jsp重在于页面显示,而servlet重在于逻辑处理。
jsp引擎:
jsp引擎是web容器编写的类,负责将jsp页面翻译成为java类。在web容器下的/conf/web.xml中进行注册。
jsp生命周期:
由JSP引擎将jsp页面翻译成为java代码
将java代码编程成为class字节码文件
加载到容器
由容器实例化
初始化阶段相关的方法是jspInit()
请求到达,调用服务器阶段相关的方法是_jspService()
销毁阶段相关的方法是jspDestroy()
JSP语法和语义:
1. jsp网页主要由元素(element)和模版数据(TemplateData)两个部分组成
模版数据是jsp的静态部分,web容器不处理
元素则是必须由web容器解释
元素都是以xml作为语法基础,并且大小写要一致
2. web容器支持两种不同格式的jsp语法
普通格式和xml兼容格式
普通jsp语法是设计给开发者用的
xml兼容jsp语法是设计用来容易被开发工具使用的
jsp的脚本元素:
声明:<%! %> 定义jsp类的成员变量、静态变量和方法
脚本:<% %> 丰富_jspService()方法,在脚本中定义的变量全部是_jspService()方法内的局部变量。
表达式:<%= %> 注意里面不能有分号; 丰富_jspService()方法,相当于out.print();向页面输出内容。
jsp注释:
1. jsp注释: <%-- --%> 容器不翻译,只在源代码中可见,最为安全。
2. html注释:<!-- --> html注释会通过out.print 输出到客户端。客户端和服务器均可见,最不安全。
3. java注释: // /* */ 给java代码书写的注释,只在服务器端可见。
jsp隐式对象:
jsp引擎翻译的jsp类中,在_jspService()中会定义九个变量,并将这些变量做初始化。由于脚本和表达式实在丰富_jspService()方法,所以可以直接使用这些变量。这些变量称为jsp的隐式对象。
jsp隐式对象有九个:
四个作用域:
1. pageContext:只在当前JSP页面有效
2. request:作用于请求
3. session:作用于会话
4. application:作用于全局
两个输出:
1. response:响应对象
2. out:打印输出流
page:当前对象
config:配置对象
exception:异常对象
jsp指令:
page: 页面指令,功能是设定整个jsp页面属性和相关功能
<%@page contentType="text/html;charset=utf-8" pageEncoding="utf-8"import="java.util.Date"%>
contenType:设置MIME类型和编码集
pageEncoding:设置编码集,mime类型默认为text/html
import:导入该JSP类中所用到的类,如果需要导入多个类,中间以逗号分开。
session:默认为true。表示访问该jsp页面时,会产生会话对象。
errorPage:表示当前jsp页面如果抛出了运行异常,则跳转指定出错页面
isErrorPage:表示该jsp页面为出错处理页面,定义了exception隐式对象,接收异常
include: 表示在JSP编译时插入一个包含文本或代码的文件
<%include file=””%> 叫做指令包含,也叫静态包含。将本身的jsp和包含的jsp放在一起编译,形成一个class文件,所以两个页面不能存在同名变量,指令包涵也只能包含文件
<jsp:include page=”” flush=’true’>
<jsp:paramname = ‘aaa’ value=’fff’>//可以包含参数
</jsp:include>叫做动作包涵,在请求时发生,本身jsp包涵的是另一个jsp执行的结果。形成2个class文件,所以两个页面可以存在同名变量。动作包含可以包含文件,也可以包含servlet输出结果。同时可以传递参数
将客户端所发出来的请求,从一个jsp网页转发到另一个jsp页面:
<jsp:forward page=’relativeURL’>
4000
taglib:
标签指令
建立标签库
文件名为 name.tld 注意后缀必须是tld 但是实质类型依旧是xml
<?xml version="1.0"encoding="utf-8"?>
<taglib>
<tlib-version>1.2</tlib-version>//必须添加
<jsp-version>1.2</jsp-version>//必须添加
<uri>tagTest</uri>//表示别名,在导入的时候就不需要路径名了
<tag>
<name>forward</name>
<tag-class>com.lovo.mark.ForWardTag</tag-class>
<attribute>//为标签中添加属性,可以传参
<name>page</name>
<required>true</required>//表示使用该标签必须添加该属性,否则报错
</attribute>
</tag>
</taglib>
导入标签库:
tagTest
<%@taglib uri="/WEB-INF/myTag.tld"prefix="mm" %>
<%@taglib uri="tagTest "prefix="mm" %>
标准标记库:JSTL
过滤器:
一个中间组件,用于拦截源数据和目的数据之间的消息
过滤二者之间传递的数据
所有匹配到该URL定义的请求,都要被filter-Name中定义的过滤器过滤。
url-pattern可以替换为servlet-name 表示对该servlet的访问都要被filter-name中定义的过滤器过滤
在<filter-mapping>标签中的<url-pattern>子标签,可以加入<url-pattern>标签,也可以加入<servlet-name>标签,表示针对某个指定名称的servlet过滤。
<filter>
<filter-name>index</filter-name>
<filter-class>com.lovo.util.IndexFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>index</filter-name>
<url-pattern>/jsp/index.jsp</url-pattern>
</filter-mapping>
用注解方式@webfilter(路径名)
过滤器类型:
REQUEST:表示直接请求,按请求路径进行过滤。默认方式
FORWARD:表示通过内部转发到达目标资源之前进行过滤。
INCLUDE:表示包含指定资源时,进行过滤
ERROR:表示发生异常时,进行过滤
在<filter-mapping>标签中加入子标签<dispatcher></ dispatcher >来选择过滤类型
配置过滤器链:
当一个请求到达目标资源时,可能会经过多个过滤器。这酒形成了过滤器链。过滤器链执行的顺序是:先经过 <url-pattern> 在经过<servlet-name>标签。如果一个请求经过多个<url-pattern >标签,按部署顺序执行。
EL表达式:
${parameterName}
取值优先从小范围开始,如果要取出发范围的需要如 ${sessionScope.Name}
${键名} 先从小作用域中查找,如果小作用域中有改建对应的值,则取出,并忽略其他作用域。如果小作用域中没有该键,那么再去大作用域中查找。
所以,可以通过作用域,指定需要查找绑定对象。
${requestScope.keyName}
${sessionScope.keyName}:表示在session会话范围中查找对象,如果没有找到。也不会去其他作用域查找
也能做运算
${3+2} 输出5
${3>5} 输出false
<% UserBeanbean = new UserBean("张三",Date.valueOf("1988-01-01"));
request.setAttribute("us",bean);
%>
${us}<br>
${us.userName}
${bean.dog.name} //bean里面有其他的实体bean
取出实体bean的属性实际上也是调用 get方法所以实体bean需要规范,因为是调用get方法,所以属性首字母是大写的话,用el调用需要把大写改为小写。
通过el表达式,从作用域对象中,取出属性时,是调用get方法完成的。所以就算该实体类没有属性,但是提供了get方法,同样可以通过EL表达式取出属性值。另外,实体类的属性,必须规范,一般来说,属性名前两个字母都不能是大写字母。
<welcome-file-list>
表示欢迎页面集合,表示如果在访问web应用程序时。不输入任何路径,默认所访问的页面列表
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
相关文章推荐
- Java web 笔记一
- VisualSvn Server的使用
- java实现多线程的一种简单方式
- Spring(二)
- java泛型通配符示例
- 转载 Java中使用Runtime和Process类运行外部程序
- JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤
- JAVA之旅(二十八)——File概述,创建,删除,判断文件存在,创建文件夹,判断是否为文件/文件夹,获取信息,文件列表,文件过滤
- Hibernate及Spring的框架简述
- java多态可扩展性缺陷
- java 删除目录
- java 解压文件
- JAVA 复制文件夹(含子目录)
- java 文件下载
- 新换的电脑,java 配置环境备忘下
- Java 运算符的总结
- JAVA中switch是否支持String类型参数?
- 接口测试完整解决方案(持续更新)
- Java-PipedOutputStream和PipedInputStream类
- java学习问题1