IT兄弟连 JavaWeb教程 Servlet API】的更多相关文章

Java Servlet是运行在带有支持Java Servlet规范的解释器的web服务器上的Java类. Servlet可以使用javax.servlet和javax.servlet.http包创建,它是Java企业版的标准组成部分,Java企业版是支持大型开发项目的Java类库的扩展版本. 这些类实现Java Servlet和JSP规范.在编写本书时,Servlet的最新版本是4.0,JSP的最新版本是2.3. 在javax.servlet包中定义了Servlet接口及相关的通用接口和类:在…
很多情况下,需要传递一些信息,从浏览器到Web服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到Web服务器,分别为GET方法和POST方法. 1.GET方法 GET 方法向页面请求发送已编码的用户信息.页面和已编码的信息中间用“?”字符分隔,如下所示: http://www.test.com/hello?key1=value1&key2=value2 GET方法是默认的从浏览器向Web服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中.如果您要向服务器传递的是密码…
Tomcat作为Web服务器,对Cookie提供了良好的支持.那么,运行在Tomcat的Servlet该如何访问Cookie呢?幸运的是,Servlet无需直接和HTTP请求或响应中的原始Cookie数据打交流,这项工作由Servlet容器来完成.Java Servlet API为Servlet访问Cookie提供了简单易用的接口,Cookie用javax.servlet.http.Cookie类来表示,每个Cookie对象包含一个Cookie名字和Cookie值. 通过Servlet设置Coo…
案例需求:编写一个servlet,可以向session中存放一个消息,再编写一个servlet可以从session取得session中存放的这个消息. 案例实现: package com.xdl.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpSe…
●  public Object getAttribute(String name) 该方法返回在该session会话中具有指定名称的对象,如果没有指定名称的对象,则返回null. ●  public void setAttribute(String name,Object value) 该方法使用指定的名称绑定一个对象到该session会话. ●  public void removeAttribute(String name) 该方法将从该session会话移除指定名称的对象. ●  pub…
Servlet提供了HttpSession接口,该接口提供了一种跨多个页面请求或访问网站时识别用户以及存储有关用户信息的方式. Servlet容器使用这个接口来创建一个HTTP客户端和HTTP服务器之间的session会话.会话持续一个指定的时间段,跨多个连接或页面请求. Session技术原理 当浏览器访问服务器时,我们可以操作创建Session,在Session创建时,服务器会自动创建一个Cookie,发送给客户端,用于存储sessionid,这个Sessionid的值是唯一的! 当浏览器再…
以下是在Servlet中操作Cookie时可使用的有用的方法列表 ●  public void setDomain(String pattern) 该方法设置cookie适用的域,例如 itxdl.cn ●  public String getDomain() 该方法获取cookie适用的域,例如 itxdl.cn ●  public void setMaxAge(int expiry) 该方法设置cookie过期的时间(以秒为单位),如果不这样设置,cookie只会在当前session会话中持…
操作Cookie时,需要注意路径问题: 设置操作:任何路径都可以设置Cookie,但是有时我们也是用设置进行替换Cookie和删除Cookie(maxAge=0)! 替换:只能由完全相同的路径来操作!父路径,子路径都不可操作! 删除:只能由完全相同的路径来操作!父路径,子路径都不可操作! 读取操作: 子路经的Cookie,父路径无法读取! 父路径的Cookie,子路经可以读取! 例如:拥有如下三个Servlet: a.  http://localhost/项目名/xx/a.do 域名:local…
在Internet中,一个Web应用可能被来自西面八方的客户并发访问(即同时访问),而且有可能这些客户并发访问的是Web应用中的同一个Servlet,Servlet容器为了保证能同时相应多个客户端要求访问的同一个Servlet的HTTP请求,通常会为每个请求分配一个工作线程,这些工作线程并发执行同一个Servlet对象的service()方法. 当多个线程并发执行同一个Servlet对象的service()方法时,可能会导致并发问题. 例:下面的案例用于演示导致并发问题的情形. public c…
Servlet对象由Servlet容器创建,并且Servlet对象的service()方法也由容器调用,一个Servlet对象可否直接调用另一个Servlet对象的service()方法呢?答案是否定的,因为一个Servlet对象无法获得另一个Servlet对象的引用. Web应用在响应客户端的一个请求时,有可能响应过程很复杂,需要多个Web项目组件共同协作,才能生成响应结果.尽管一个Servlet对象无法直接调用另一个Servlet对象的service()方法,但Servlet规范为Web组件…
在使用原生的Servlet进行Web应用开发时经常会遇到一些中文乱码问题,造成乱码问题的原因只有一个:即客户端与服务端的字符编码不一致所导致的. 请求参数乱码问题 服务器端获取客户端传递过来的数据出现乱码的问题(即使用get获取post向服务器发送请求时出现乱码): get与post请求的乱码处理时不一致的,当get请求时,其传递给服务器的数据时附加在URL地址之后的:而post的请求时,其传递给服务器的数据是作为请求正文传递给服务器. ●  post请求的乱码处理: 用户在表单中填写的内容在请…
Servlet的定义 Java Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层. 使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其它源的记录,还可以动态创建网页. Java Servlet通常情况下与使用CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果.但是相比于CGI,Servlet有以下几点优势: ●  性…
1.描述Cookie的作用 Cookie是网站保存在浏览器客户端的信息,也就是说保存在访客的机器里的变量,一般随着HTTP头发送到客户端.在Cookie生效之后及失效之前,客户每次发出页面请求的时候,都会把Cookie -块发送到服务器,只要我们针对它进行相应的处理,就可以改变它的值. 2.描述Session的作用 Session的中文译名叫做”会话”,其本来的含义是指有始有终的一系列动作/消息,比如用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间…
●  数据存储在服务器,安全. ●  session能保存Object类型数据,也就是说能存储任意数据. ●  可存储的数据大小,理论上是无限制的. ●  因为数据存储在服务器端,当用户比较多时,会占用服务器大量的内存空间,服务器资源很容易被耗尽.…
方式一:修改所有的session默认时长,修改tomcat目录下的conf文件夹下的web.xml文件. <session-config> <session-timeout>希望存活的时长,单位是分钟</session-timeout> </session-config> 方式二:修改单个session存活时长: 使用session对象,调用setMaxInactiveInterval(int 秒).…
Session对象的获取有两种: ●  有参方法: HttpSession request.getSession(boolean isNew) 参数: true:获取一个Session对象,如果之前Session存在,则拿来使用,如果之前不存在,则创建一个新的使用. false:获取一个Session对象,如果之前Session存在,则拿来用,如果不存在则返回null. ●  无参方法: HttpSession request.getSession() 推荐使用这种方法获取Session对象,其…
Cookie技术存储的数据类型只能是字符串,且不支持中文 ●  保存的数据大小有限,4kb ●  太依赖用户浏览器的设置,用户可以禁用Cookie! ●  数据存储在客户端的文本文件中,不安全,不建议存储敏感数据! String转换后的文本 = URLEncoder.encode(正常的文本, "utf-8"); 在读取Cookie时,需要将url编码,转换为正常文字: String 正常文字 = URLDecoder.decode(url编码文字, "UTF-8"…
Cookie使用HTTPHeader传递数据.Cookie机制定义了两种报头,Set-Cookie报头和Cookie报头.Set-Cookie报头包含于Web服务器的响应头(ResponseHeader)中,Cookie报头包含在浏览器客户端请求头(RequestHeader)中.其原理如下: Cookie 1.客户端在浏览器的地址栏中键入Web服务器的URL,浏览器发送读取网页的请求. 2.服务器接收到请求后,产生一个Ser-Cookie报头,放在HTTP报文中一起回传客户端,发起一次会话.…
随着网络技术的不断发展,单机的软件程序已难以满足网络计算机的需求.为此,各种各样的网络程序开发体系结构应运而生.其中,运用最多的网络应用程序开发体系结构可以分为两种,一种是基于客户端/服务器的C/S结构,另一种就是基于浏览器/服务器的B/S结构.下面将对这两种结构进行介绍. C/S体系结构介绍 C/S是Client/Server的缩写,即客户端/服务器结构.在这种结构中,服务器通常采用高性能的PC机或工作站,并采用大型数据库系统(如Oracle或SQL Server),客户端则需要安装专用的客户…
HTTP协议是无状态的,我们的客户端与服务器的每一次请求与响应,我们服务器都没有记忆能力将客户端与服务器的多次交互数据进行存储与管理共有两种技术实现: ●  基于客户端实现:Cookie,将状态保存在客户端中 ●  基于服务器实现:Session,将状态保存在服务器中…
Cookie的英文原意是“点心”,它是在客户端访问Web服务器时,服务器在客户端硬盘上存放的信息,好像是服务器送给客户的“点心”.服务器可以根据Cookie来跟踪客户状态,这对于需要区别客户的场合(如电子商务)特别有用. 为了便于直观的理解Cookie的作用,可以用健身馆向会员发送的会员卡来做比方.健身馆首先向来报名的客户发送一张会员卡,会员卡上存储了客户的编号.姓名和照片等信息.以后每次客户到健身馆来健身,先要出示会员卡,健身馆依据会员卡的信息来判断是否允许客户健身. 以上会员卡就类似于服务器…
在Java语言中,局部变量和实力变量有着不同的作用于,它们的区别如下: 局部变量在一个方法中定义,每当一个线程执行局部变量所在的方法时,在线程的堆栈中就会创建这个局部变量,当线程执行完该方法,局部变量就会结束生命周期,如果有多个线程同时执行该方法,那么每个线程都拥有自己的局部变量. 实例变量在类中定义.类的每一个实例都拥有自己的实例变量,如果一个实例结束生命周期,那么属于它的实例变量也就结束生命周期.如果有多个线程同时执行一个实例的方法,而这个方法会访问一个实例变量,那么这些线程访问的是一个实例…
ServletContext是Servlet与Servlet容器之间直接通信的接口.Servlet容器在启动一个Web应用时,会为它创建一个ServletContext对象.每个Web应用都有唯一的ServletContext对象,可以把Servlet对象形象的理解为Web应用的总管家,同时一个Web应用中的所有Servlet对象都共享一个ServletContext,所有的Servlet对象都可以通过ServletContext来访问容器中的各种资源.当Servlet容器终止一个Web应用时,…
HTTP协议规定了一种重定向机制,重定向的运作流程如下: ●  用户在浏览器端输入特定URL,请求访问服务器端的某个组件. ●  服务器端的组件返回一个状态码为302的响应结果,该响应结果的含义为: 让浏览器端再次请求访问另一个Web组件.在响应结果中提供了另一个Web组件的URL.另一个Web组件有可能在同一个Web服务器上,也有可能不再同一个Web服务器上. ●  当浏览器端接收到这种响应结果后,再立即自动请求访问另一个Web组件. ●  浏览器端接收到来自另一个Web组件的相应结果. 在J…
Servlet是使用Java Servlet接口(API)运行在Web服务器上的Java程序,其功能十分强大,它不但可以处理HTTP请求中的业务逻辑,而且还可以输出HTML代码来显示指定页面,而JSP是一种在Servlet规范之上的动态网页技术,在JSP页面中,同样可以编写业务逻辑处理HTTP请求,也可以通过HTML代码来编辑页面,在实现功能上,Servlet与JSP貌似相同,实质存在一定的区别,主要表现在以下几方面: 角色不同: JSP页面可以存在HTML代码与Java代码并存的情况,而Ser…
在com.xdl.servlet包下定义RandomServlet类并HttpServlet类,在该类中生成随机数并发送给客户端.RandomServlet类详细代码如下: package com.xdl.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.Random; import javax.servlet.ServletException; import javax.servl…
Ajax的核心是XMLHttpRequest对象(xhr),xhr为向服务器发送请求和解析服务器响应提供了接口,能够以异步的方式从服务器获取新数据. xhr的主要方法有: ●  void open(String method,String url,Boolean async) 用于创建请求,参数说明如下: method:请求方式,字符串类型,如GET.POST.DELETE等. url:要请求的地址,字符串类型. async:是否异步,布尔类型,默认是true,异步的. ●  void send…
●  列出提供下载的文件资源 我们要将Web应用系统中的文件资源提供给用户进行下载,首先我们要有一个页面列出上传文件目录下的所有文件,当用户点击文件下载超链接时就进行下载操作,编写一个ListFileServlet,用于列出Web应用系统中所有下载文件. ListFileServlet的代码如下: package com.xdl.servlet; import java.io.File; import java.io.IOException; import java.util.HashMap;…
在Web应用系统开发中,文件上传和下载功能是非常常用的功能. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载.common-fileupload是依赖于common-io这个包的,所以还需要下载这个包. 开发环境搭建…
感知Session绑定事件的监听器 保存在Session域中的对象可以有多种状态:绑定(session.setAttribute("bean",Object)到Session中:从Session域中解除(session.removerAttribute("bean")绑定:随Session对象持久化到一个存储设备中:随Session对象从一个存储设备中恢复. Servlet规范中定义了两个特殊的监听器接口HttpSessionBindingListener和Http…