jsp(二)
来源:互联网 发布:淘宝印度神油是真的吗 编辑:程序博客网 时间:2024/06/07 10:23
JSP 隐式对象
JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP隐式对象也被称为预定义变量。
JSP所支持的九大隐式对象:
request对象是javax.servlet.http.HttpServletRequest 类的实例。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。
request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。
response对象
response对象是javax.servlet.http.HttpServletResponse类的实例。当服务器创建request对象时会同时创建用于响应这个客户端的response对象。
response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。
out对象
out对象是 javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。
最初的JspWriter类对象根据页面是否有缓存来进行不同的实例化操作。可以在page指令中使用buffered='false'属性来轻松关闭缓存。
JspWriter类包含了大部分java.io.PrintWriter类中的方法。不过,JspWriter新增了一些专为处理缓存而设计的方法。还有就是,JspWriter类会抛出IOExceptions异常,而PrintWriter不会。
下表列出了我们将会用来输出boolean,char,int,double,String,object等类型数据的重要方法:
session对象
session对象是 javax.servlet.http.HttpSession 类的实例。和Java Servlets中的session对象有一样的行为。
session对象用来跟踪在各个客户端请求间的会话。
application对象
application对象直接包装了servlet的ServletContext类的对象,是javax.servlet.ServletContext 类的实例。
这个对象在JSP页面的整个生命周期中都代表着这个JSP页面。这个对象在JSP页面初始化时被创建,随着jspDestroy()方法的调用而被移除。
通过向application中添加属性,则所有组成您web应用的JSP文件都能访问到这些属性。
config对象
config对象是 javax.servlet.ServletConfig 类的实例,直接包装了servlet的ServletConfig类的对象。
这个对象允许开发者访问Servlet或者JSP引擎的初始化参数,比如文件路径等。
以下是config对象的使用方法,不是很重要,所以不常用:
JSP 客户端请求
当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信息头的一部分来传送的。您可以查阅HTTP协议来获得更多的信息。
下表列出了浏览器端信息头的一些重要内容,在以后的网络编程中将会经常见到这些信息:
HttpServletRequest类
request对象是javax.servlet.http.HttpServletRequest类的实例。每当客户端请求一个页面时,JSP引擎就会产生一个新的对象来代表这个请求。
JSP 服务器响应
Response响应对象主要将JSP容器处理后的结果传回到客户端。可以通过response变量设置HTTP的状态和向客户端发送数据,如Cookie、HTTP文件头信息等。
HttpServletResponse类
response 对象是 javax.servlet.http.HttpServletResponse 类的一个实例。就像服务器会创建request对象一样,它也会创建一个客户端响应。
JSP HTTP 状态码
HTTP请求与HTTP响应的格式相近,都有着如下结构:
- 以状态行+CRLF(回车换行)开始
- 零行或多行头模块+CRLF
- 一个空行,比如CRLF
- 可选的消息体比如文件,查询数据,查询输出
状态码 消息 描述 100Continue只有一部分请求被服务器接收,但只要没被服务器拒绝,客户端就会延续这个请求101Switching Protocols服务器交换机协议200OK请求被确认201Created请求时完整的,新的资源被创建202Accepted请求被接受,但未处理完203Non-authoritative Information 204No Content 205Reset Content 206Partial Content 300Multiple Choices一个超链接表,用户可以选择一个超链接并访问,最大支持5个超链接301Moved Permanently被请求的页面已经移动到了新的URL下302Found被请求的页面暂时性地移动到了新的URL下303See Other被请求的页面可以在一个不同的URL下找到304Not Modified 305Use Proxy 306Unused已经不再使用此状态码,但状态码被保留307Temporary Redirect被请求的页面暂时性地移动到了新的URL下400Bad Request服务器无法识别请求401Unauthorized被请求的页面需要用户名和密码402Payment Required目前还不能使用此状态码403Forbidden禁止访问所请求的页面404Not Found服务器无法找到所请求的页面405Method Not Allowed请求中所指定的方法不被允许406Not Acceptable服务器只能创建一个客户端无法接受的响应407Proxy Authentication Required在请求被服务前必须认证一个代理服务器408Request Timeout请求时间超过了服务器所能等待的时间,连接被断开409Conflict请求有矛盾的地方410Gone被请求的页面不再可用411Length Required"Content-Length"没有被定义,服务器拒绝接受请求412Precondition Failed请求的前提条件被服务器评估为false413Request Entity Too Large因为请求的实体太大,服务器拒绝接受请求414Request-url Too Long服务器拒绝接受请求,因为URL太长。多出现在把"POST"请求转换为"GET"请求时所附带的大量查询信息415Unsupported Media Type服务器拒绝接受请求,因为媒体类型不被支持417Expectation Failed 500Internal Server Error请求不完整,服务器遇见了出乎意料的状况501Not Implemented请求不完整,服务器不提供所需要的功能502Bad Gateway请求不完整,服务器从上游服务器接受了一个无效的响应503Service Unavailable请求不完整,服务器暂时重启或关闭504Gateway Timeout网关超时505HTTP Version Not Supported服务器不支持所指定的HTTP版本
JSP 过滤器
JSP 和 Servlet 中的过滤器都是 Java 类。
过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。
可以将一个或多个过滤器附加到一个 Servlet 或一组 Servlet。过滤器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 页面。
过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的:
- 在客户端的请求访问后端资源之前,拦截这些请求。
- 在服务器的响应发送回客户端之前,处理这些响应。
根据规范建议的各种类型的过滤器:
- 身份验证过滤器(Authentication Filters)。
- 数据压缩过滤器(Data compression Filters)。
- 加密过滤器(Encryption Filters)。
- 触发资源访问事件过滤器。
- 图像转换过滤器(Image Conversion Filters)。
- 日志记录和审核过滤器(Logging and Auditing Filters)。
- MIME-TYPE 链过滤器(MIME-TYPE Chain Filters)。
- 标记化过滤器(Tokenizing Filters)。
- XSL/T 过滤器(XSL/T Filters),转换 XML 内容。
Servlet 过滤器方法
过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类。javax.servlet.Filter 接口定义了三个方法:
该方法完成实际的过滤操作,当客户端请求方法与过滤器设置匹配的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain用户访问后续过滤器。2public void init(FilterConfig filterConfig)
web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,读取web.xml配置,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作(filter对象只会创建一次,init方法也只会执行一次)。开发人员通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。3public void destroy()
Servlet容器在销毁过滤器实例前调用该方法,在该方法中释放Servlet过滤器占用的资源。
web.xml配置各节点说明
<filter>
指定一个过滤器。<filter-name>
用于为过滤器指定一个名字,该元素的内容不能为空。<filter-class>
元素用于指定过滤器的完整的限定类名。<init-param>
元素用于为过滤器指定初始化参数,它的子元素<param-name>
指定参数的名字,<param-value>
指定参数的值。- 在过滤器中,可以使用
FilterConfig
接口对象来访问初始化参数。
<filter-mapping>
元素用于设置一个 Filter 所负责拦截的资源。一个Filter拦截的资源可通过两种方式来指定:Servlet 名称和资源访问的请求路径<filter-name>
子元素用于设置filter的注册名称。该值必须是在<filter>
元素中声明过的过滤器的名字<url-pattern>
设置 filter 所拦截的请求路径(过滤器关联的URL样式)
<servlet-name>
指定过滤器所拦截的Servlet名称。<dispatcher>
指定过滤器所拦截的资源被 Servlet 容器调用的方式,可以是REQUEST
,INCLUDE
,FORWARD
和ERROR
之一,默认REQUEST
。用户可以设置多个<dispatcher>
子元素用来指定 Filter 对资源的多种调用方式进行拦截。<dispatcher>
子元素可以设置的值及其意义REQUEST
:当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,那么该过滤器就不会被调用。INCLUDE
:如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。FORWARD
:如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。ERROR
:如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。
通常有三个步骤来识别回头客:
- 服务器脚本发送一系列cookie至浏览器。比如名字,年龄,ID号码等等。
- 浏览器在本地机中存储这些信息,以备不时之需。
- 当下一次浏览器发送任何请求至服务器时,它会同时将这些cookie信息发送给服务器,然后服务器使用这些信息来识别用户或者干些其它事情。
Servlet Cookie 方法
下表列出了Cookie对象中常用的方法:
使用 JSP 读取 Cookie
想要读取cookie,您就需要调用request.getCookies()方法来获得一个javax.servlet.http.Cookie对象的数组,然后遍历这个数组,使用getName()方法和getValue()方法来获取每一个cookie的名称和值。
使用JSP删除Cookie
删除cookie非常简单。如果您想要删除一个cookie,按照下面给的步骤来做就行了:
- 获取一个已经存在的cookie然后存储在Cookie对象中。
- 将cookie的有效期设置为0。
- 将这个cookie重新添加进响应头中。
- JSP教程(二)
- JSP教程(二)
- JSP(二)
- jsp乱码(二)
- Jsp基础(二)
- Jsp基础(二)
- Jsp基础(二)
- JSP笔记(二)
- JSP技术(二)
- JSP总结(二)
- JSP基础知识(二)
- JSP原理(二)
- JSP技术(二)
- JSP语法(二)
- jsp学习(二)
- jsp(二)
- JSP技术(二)
- JSP入门(二)
- 指针与堆内存
- 使用sklearn进行集成学习——理论
- yolo配置文件理解
- Kotlin开发语言学习(4) 类特性
- 使用Flask-Mail和qq邮箱SMTP服务发送邮件
- jsp(二)
- python各个读写excel模块的对比
- fiddler过滤器的使用
- Windows 10不能安装mini版迅雷的解决方法
- 2进制负数相关知识
- Kotlin开发语言学习(5) 函数与闭包
- HTML5应用程序缓存(Application Cache)
- 我与免疫台不得不说的故事(二):风湿性疾病_1
- wmic命令收集整理