在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…
Servlet的定义 Java Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层. 使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其它源的记录,还可以动态创建网页. Java Servlet通常情况下与使用CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果.但是相比于CGI,Servlet有以下几点优势: ●  性…
●  列出提供下载的文件资源 我们要将Web应用系统中的文件资源提供给用户进行下载,首先我们要有一个页面列出上传文件目录下的所有文件,当用户点击文件下载超链接时就进行下载操作,编写一个ListFileServlet,用于列出Web应用系统中所有下载文件. ListFileServlet的代码如下: package com.xdl.servlet; import java.io.File; import java.io.IOException; import java.util.HashMap;…
JSP页面是指扩展名为.jsp的文件,在一个JSP页面中,可以包括指令标识.HTML代码.JavaScript代码.嵌入的Java代码.注释和JSP动作标识等内容.但这些内容并不是一个JSP页面所必须的.下面将通过一个简单的JSP页面说明JSP页面的构成. 例:编写一个JSP页面,名称为index,jsp,在该页面中显示当前时间. 代码如下: <%@ page language="java" contentType="text/html; charset=UTF-8&q…
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接口及相关的通用接口和类:在…
Servlet是使用Java Servlet接口(API)运行在Web服务器上的Java程序,其功能十分强大,它不但可以处理HTTP请求中的业务逻辑,而且还可以输出HTML代码来显示指定页面,而JSP是一种在Servlet规范之上的动态网页技术,在JSP页面中,同样可以编写业务逻辑处理HTTP请求,也可以通过HTML代码来编辑页面,在实现功能上,Servlet与JSP貌似相同,实质存在一定的区别,主要表现在以下几方面: 角色不同: JSP页面可以存在HTML代码与Java代码并存的情况,而Ser…
4  监听HttpSession域对象的创建和销毁 HttpSessionListener接口用于监听HttpSession对象的创建和销毁. 创建一个Session时,激发sessionCreate(HttpSessionEvent event)方法. 销毁一个Session时,激发sessionDestroyed(HttpSessionEvent event)方法. 范例:编写一个MyHttpSessionListener类,实现HttpSessionListener接口,监听HttpSes…
过滤器案例:字符编码过滤器 在JavaWeb程序开发中,由于Web容器内部所使用编码格式并不支持中文字符集,所以,处理浏览器请求中的中文数据就会出现乱码现象. 图3  无字符编码过滤器 从上图可以看出,由于Web容器使用了ISO-8859-1编码格式,所以在Web应用的业务处理中也会使用ISO-8859-1的编码格式,虽然浏览器提交的请求使用的是中文编码格式UTF-8,但经过业务处理中的ISO-8859-1编码,仍然会出现中文乱码现象.解决此问题的方法非常简单,在业务处理中重新制定中文字符集进行…
ServletContext是Servlet与Servlet容器之间直接通信的接口.Servlet容器在启动一个Web应用时,会为它创建一个ServletContext对象.每个Web应用都有唯一的ServletContext对象,可以把Servlet对象形象的理解为Web应用的总管家,同时一个Web应用中的所有Servlet对象都共享一个ServletContext,所有的Servlet对象都可以通过ServletContext来访问容器中的各种资源.当Servlet容器终止一个Web应用时,…
案例需求:编写用户登陆页面的验证码模块,在用户进行登陆时,输入验证码后不需要点击提交按钮,使用AJAX异步地向服务器发送验证验证码的请求.如果验证码正确,可以点击提交按钮,如果验证码输入错误,提示用户.如果用户看不清验证码,点击验证码还可以刷新出新的验证码. 案例实现: 验证码原理:当页面请求一个验证码的Servlet时,这个Servlet会把数据以图片的形式传给客户端,并把数据以字符串的形式存入了session中.当用户以图片为标准输入对应的验证码并发送给对应的用来验证验证码的Servlet时…
在JSTL Functions标签库中提供了一组常用的EL函数,主要用于处理字符串,在JSP中可以直接使用这些函数. 在JSP中使用Functions标签库,需要通过taglib指令引入该标签库: <%@ taglib prefix="fn" uri=http://java.sun.com/jsp/jstl/functions %> 使用JSTL函数 1.fn:contains函数 fn:contains函数用于判断在源字符串中是否包含目标字符串,其语法为: fn:cont…
1.请说明cookie.request.session.application的作用域和声明周期? 并说明它们适用与什么场景? request的生命周期是一次请求.可以用于JSP表单提交数据. session会话可以设置它的超时时间,Tomcat中的默认时间为30分钟,session对象的典型应用时用来对用户的身份进行验证,进而进行权限设置. cookie存放的载体在客户端的浏览器中,生命周期默认时根据服务器返回的Set-Cookie头设置的,共两大类: 会话cookie:浏览器一关闭就清除了.…
读取web.xml配置信息的config对象 config对象主要用于取得服务器的配置信息.通过pageContxt对象的getServletConfig()方法获取一个config对象.当一个Servlet初始化时,容器把某些信息通过config对象传递给这个Servlet.开发者可以在web.xml文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数.config对象的常用方法如下: ●  getServletContext():获取Servlet上下文 ●  getServ…
指令标识主要用于设定整个JSP页面范围内都有效的相关信息,它是被服务器解释并执行的,不会产生任何内容输出到网页中.也就是说,指令标识对于客户端浏览器是不接见的.JSP页面的指令标识与我们的身份证类似,虽然公民身份证可以标识公民身份的,但是它并没有对所有见到过我们的人都公开. JSP指令语法 JSP指定标识的语法格式如下: <%@ 指令名 属性1="属性值1" 属性2="属性值2" ...%> 参数说明: 指令名:用于指定指令名称,在JSP中包含page.…
JSP动作指令语法 JSP动作指令语法格式如下: <jsp:动作名 属性名1="属性值1" 属性名2="属性值2" ... %> JSP具体动作指令 ●  包含文件动作标识<jsp:include> JSP的动作标识<jsp:include>用于向当前页面中包含其他的文件.被包含的文件可以是动态文件,也可以是静态文件. <jsp:include>动作标识的语法格式如下: <jsp:include page=&qu…
在JSP页面中,脚本标识使用的最为频繁,因为他们能够方便.灵活地生成页面中的动态内容,特别是JSP程序代码块.JSP中的脚本标识包括3部分,即JSP声明区.JSP表达式和JSP程序代码块.通过这些标识,在JSP页面中可以像编写Java程序一样声明变量.定义函数或进行各种表达式运算. JSP声明区 声明标识用于在JSP页面中定义全局的变量或方法.通过声明标识定义的变量和方法被整个JSP页面访问,所以通常使用该标识定义整个JSP页面需要引用的变量或方法. 服务器执行JSP页面时,会将JSP页面转换为…
由于JSP页面由HTML.JSP.Java脚本等组成,所以在其中可以使用多种注释格式 HTML中的注释 HTML语言的注释不会被显示在网页中,但是在浏览器中选择查看网页源代码时,还是能够看到注释的信息的.其语法格式如下: //注释文本 例:在HTML中添加注释,代码如下: //显示数据报表的表格 <table> ... </table> 上述代码为HTML的一个表格添加了注释信息,其他程序开发人员可以直接从注释中了解表格的用途,无须重新分析代码.在浏览器中查看网页代码时,上述代码将…
Check2Servlet类与Output2Servlet类之间为请求转发关系.在web.xml文件中,为Check2Servlet映射的URL为"/check2",为Output2Servlet映射的URL为"/outout2". public class Check2Servlet extends HttpServlet{ public void service(HttpServletRequest request, HttpServletResponse re…
CheckServlet类与OutputServlet类之间为请求转发关系.在web.xml文件中,为CheckServlet映射的URL为"/check",为OutputServlet映射的URL为"/outout". public class CheckServlet extends HttpServlet{ public void service(HttpServletRequest request, HttpServletResponse response)…
很多情况下,需要传递一些信息,从浏览器到Web服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到Web服务器,分别为GET方法和POST方法. 1.GET方法 GET 方法向页面请求发送已编码的用户信息.页面和已编码的信息中间用“?”字符分隔,如下所示: http://www.test.com/hello?key1=value1&key2=value2 GET方法是默认的从浏览器向Web服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中.如果您要向服务器传递的是密码…
案例需求:编写一个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…
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…
在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请求的乱码处理: 用户在表单中填写的内容在请…
1.描述Cookie的作用 Cookie是网站保存在浏览器客户端的信息,也就是说保存在访客的机器里的变量,一般随着HTTP头发送到客户端.在Cookie生效之后及失效之前,客户每次发出页面请求的时候,都会把Cookie -块发送到服务器,只要我们针对它进行相应的处理,就可以改变它的值. 2.描述Session的作用 Session的中文译名叫做”会话”,其本来的含义是指有始有终的一系列动作/消息,比如用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间…