j6基讲义于servlet的会话跟踪1练习
servlet-练习
1. 在JSP中,要定义一个方法,需要用到以下的元素是()。
A. <%= %>B. <% %>C. <%! %>D. <%@ %>正确答案:C2. 在Java Web开发中,不同的客户端需要共享的数据应存储在()中。
A. sessionB. applicationC. requestD. response正确答案:B3. login.jsp为登录页面,表单代码如下:<form action="index.jsp" method="post"><input type="text" name="pwd"/><input type="submit" value="登录"/></form>index.jsp中直接显示密码,以下代码正确是:()。
A. ${requestScope.pwd}B. <%=pwd%>C. ${param.pwd}D. <%=param.pwd%>正确答案:C4. JSP文件代码如下:<% int temp; %><h1> temp is <%=temp%></h1> 编译或运行结果是:()。
A. 输出:temp is 0B. 输出:temp isC. 编译出错,因为temp没有被初始化D. 输出:temp is null正确答案:C5. 在WEB应用程序的目录结构中,在WEB-INF文件夹外的文件可以为:()。
A. .jsp文件B. .class文件C. .jar文件D. web.xml文件正确答案:A6. 在JavaEE中,使用Servlet 过滤器,需要在web.xml中配置的元素是:()A. <servlet>和<servlet-mapping>B. <filter>和<filter-mapping>C. <servlet-filter>D. <filter-config>正确答案:B7. 下面为部署文件中的Servlet映射代码片段,正确的是:( )A. <servlet-mapping><servlet>Demo</servlet><url-pattern>/demo</url-pattern></servlet-mapping>B.<servlet-name><servlet-mapping>demo</servlet-mapping><url-pattern>/Demo</url-pattern></servlet-name>C.<servlet-mapping><servlet-name>Demo</servlet-name><url-pattern>/demo/*</url-pattern></servlet-mapping>D.<servlet><servlet-name>Demo</servlet-name><url-pattern>/demo/*</url-pattern></servlet >正确答案:C8. 下列代码的输出结果是()。
基本功训练_Servlet技术
同学们,这些小例题虽然很简单,但是可以锻炼一下大家对于本节课相关小模块的思维能力。
这都是按照我自己的习惯手打出来的,很多都是我自己风格的代码直接复制过来的,可能很多同学看着会不习惯。
希望大家好好看看,不要求你一个字一个字去读,只要你能理解每道题目中含有什么信息,以后遇到了这样一个情境能会去运用就行。
其中,红色的标出的部分一般是这个小模块是干嘛的,类似于题目要求,意思就是当你看到以后,能有个条件反射应该怎么实现。
黑色加粗是需要了解的概念,黄色部分是拓展,表格里面的是源代码,你们并不需要刻意去跟我写得一样,只要这些功能你们能自己实现就行了。
千万不要把程序写死了哈,最后希望我跟同学们一起学习,共同进步。
既然选择了远方,就注定风雨兼程。
―――――――写在前面基本功训练一:在Servlet中实现请求转发在实际的网站开发中,请求转发是最常见的,在Servlet中实现页面转发,使用的是RequestDispatcher对象的forward()方法。
可以在Servlet中通过forward()方法将当前的请求转发到其他web组件(Servlet、JSP、HTML)。
下面的例子关键点是如何在Servlet 中控制请求转发,在文本框中输入用户名和密码,单击“登录按钮,如果用户名和密码输入正确则页面转发到成功页,否则页面将跳转到失败页。
运行结果如下图所示:图1-1 登陆页面图1-2 成功页图1-3 失败页2) ForwardServlet 关键代码:【思维扩展】当在Servlet中验证用户名和密码失败时,将页面跳转到index.jsp首页面。
也可以在错误页中定义一个变量,根据变量值的不同来判定显示结果。
基本功训练二:在Servlet中处理表单提交的数据Java Web的核心组件Servlet的主要功能就是处理客户端的表单请求数据,然后再Servlet中首先对这些数据进行验证,然后可能会封装到JavaBean,接下来调用数据库的业务逻辑方法将数据保存或者进行其他操作,最后Servlet控制将响应结果返回到客户端。
26-《Servlet常见对象应用以及会话管理与跟踪》
HttpServletRequest主要方法 主要方法3 主要方法
获得请求对象实现跳转
getRequestDispatcher() 声明: public RequestDispatcher getRequestDispatcher(String path); 说明: 获得一个RequestDispatcher对象,用来在应用内实现跳转, 参数path是跳转的目标资源,调用获得的RequestDispatcher 对象的forward()方法执行跳转。可以在执行forward()的时候 传递相应的请求对象和响应对象 示例: RequestDispatcher rd= getRequestDispatcher(“servlet2”); rd.forward(request,response); //执行跳转,注意参数
使用HttpServletRequest 的 getSession() 方法创建会话, 语法如下:
getSession( true ) 返回与当前关联的 会话, 会话,如果没有就 创建后将其返回
获取session 获取 true 对象的方法 使用HttpSession接口的方法,进行
会话的使用
返回与当前关联 public void setAttribute(String param,Object value); false 的会话,如果没 的会话, public Object getAttribute(String param); 有返回null 有返回 使用时, 使用时,将其转换成原来数据类型
购买2 购买 个商品
张三
李四
HTTP是无状态协议(3-3)
如何标识用户?
Web程序能不能 程序能不能 再次请求的时候, 再次请求的时候 像银行卡号那样,根据 , 像银行卡号那样, 我带着ID号 我带着 号, 卡号锁定一个用户呢? 卡号锁定一个用户呢? 告诉服务器“我是谁” 告诉服务器“我是谁” 请求 响应
第三章基于Servlet的会话跟踪
第一章基于Servlet的会话跟踪(一)本章技能目标:理解会话跟踪的原理会使用获得HttpSession对象的方法会使用HttpSession对象进行数据的存储HTTP协议的无状态HTTP协议是无状态的,也就是说,如果我们仅使用Http协议是不能够进行用户状态的跟踪的。
会话跟踪什么是会话?✧在Java Servlet API 中引入session机制来跟踪客户的状态。
Session指的是一段时间内,单个用户与Web服务器的一连串相关的交互过程, 如何进行会话跟踪的?✧在Servlet API中定义了javax.servlet.http.HttpSession接口,Servlet容器必须实现这个接口。
✧当一个session开始时,Servlet容器创建一个HttpSession对象,并同时在内存中为其开辟一个空间,在HttpSession对象中可以存放客户状态的信息(例如:购物车)。
✧Servlet容器为HttpSession分配一个唯一标识符,称为SessionID。
Servlet容器把SessionID保存在客户的浏览器中。
每次客户发送HTTP请求时,Servlet容器可以从HttpSession对象中读取Se○.ssionID,然后根据SessionID找到相应的HttpSession对象,从而获取客户的状态信息。
会话的创建和使用✧会话的创建Servlet中的HttpRequestServlet对象为我们提供了以下两种创建和获取HttpSession对象的方法。
区别:在第一种方法中,布尔值为true时,如果存在与当前请求关联的会话,就会返回该会话,否则就创建一个新会话,并返回。
布尔值为false时,如果存在与当前请求关联的会话,就返回该会话,否则返回NULL,不再创建会话。
第二种方法等同于第一种方法中的布尔参数为true的情况。
✧会话的使用在Javax.servlet.http.HttpSession接口定义的方法,我们常用的是有关数据存储的方法。
jsp-servlet题库(附答案)
1.B 编写一个Filter,需要()A. 继承Filter 类B. 实现Filter 接口C. 继承HttpFilter 类D. 实现HttpFilter接口2.D 自定义标签的配置文件放在________A. WebRootB. libC. classesD. WEB-INF3. ABC 有关会话跟踪技术描述正确的是( )(多选)A. Cookie是Web服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器端。
B. 关闭浏览器意味着会话ID丢失,但所有与原会话关联的会话数据仍保留在服务器上,直至会话过期。
C. 在禁用Cookie时可以使用URL重写技术跟踪会话。
D. 隐藏表单域将字段添加到HTML表单并在客户端浏览器中显示。
4.C 在J2EE中,重定向到另一个页面,以下()语句是正确的A. request . sendRedirect(“http :// www . svse . com . cn”);B. request . sendRedirect();C. response . sendRedirect(“http: // www . svse . com . cn”);D. response .sendRedirect();5.B EL表达式,${10 mod 3},执行结果为( )A. 10 mod 3B. 1C. 3D. null6. C 自定义标签的作用是( )A. 编写和使用方便B. 规定是这样的,如果不用,别人会说我们不专业C. 可以减少jsp中的java代码,将代码与界面标签分离,简化前台开发D. 连数据库7.B request.getRequestDispatcher().forward(request,response)称之为( )A. 流转B. 转发C. 重定向D. 导航8. BCD 有关Servlet的生命周期说法正确的有( ) (多选)A. Servlet的生命周期由Servlet实例控制。
Servlet习题
Servlet习题1 、Servlet执行时一般实现哪几个方法?public void init(ServletConfig config)public ServletConfig getServletConfig()public String getServletInfo()public void service(ServletRequest request,ServletResponse response)public void destroy()2 、说一说Servlet的生命周期?servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。
这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
3 、JAVA SERVLET API中forward() 与redirect()的区别?前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。
这样,从浏览器的地址栏中可以看到跳转后的链接地址。
所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。
在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
servlet-练习
B. <filter>和<filter-mapping>
C. <servlet-filter>
D. <filter-config>
正确答案:B
7.下面为部署文件中的Servlet映射代码片段,正确的是:( )
A. <servlet-mapping>
1.在JSP中,要定义一个方法,需要用到以下的元素是()。
A. <%= %>
B. <% %>
C. <%! %>
D. <%@ %>
正确答案:C
2.在Java Web开发中,不同的客户端需要共享的数据应存储在()中。
A. session
B. application
C. request
D. response
<c:out value="${a}"/>
A. 5
l
正确答案:B
15.下列属于抽象类的是()。
A. ServletConfig
B. HttpServlet
C. Cookie
D. HttpServletRequest
正确答案:B
16.以下选项中的代码可以正确导入JSTL核心标签库的是()。
$('#d1').click(function(e){ alert('你点击了一个div'); }); });
点击超链后,弹出对话框的情况是:()
A.弹出一个对话框,显示“你点击了一个链接”
B.弹出一个对话框,显示“你点击了一个div”
Servlet测试题答案
Servlet测试题一、填空题,每空2个俯卧撑,共46个1、会话跟踪的3种实现方式SSL 、Cookie 、URL重写2、out.print(“<meta http-equiv=\"pragma\" content=\"no-cache\">”);的作用是禁止浏览器缓存3、<form action=”/xxxServlet” method=”post”>其中action中的‘/’表示主机根目录4、Web.xml 中<url-pattern>/xxxxServlet</url-pattern>中的‘/’表示_ 应用程序根目录5、设置session有效时长为15分钟<session-config><session-timeout>15</session-timeout></session-config>6、销毁HttpSession的方法是:调用HttpSession的invalidate()方法7、向响应信息中增加Cookie的方法是response.addCookie(Cookie cookie);8、getServletContext.getNamedDispacther方法返回RequestDispatcher对象9、tomcat的Context.xml中Resource元素的maxActive=”0”表示不限制激活的Connection 对象数量,maxIdle=”-1”表示不限制空闲的Connection对象数量,maxWait=“-1”表示一直等待直至Connection对象创建成功10、当Servlet容器接收到一个针对HttpServlet请求时先调用公有的service方法在该方法中把请求参数转换为HttpServletRequest和HttpServletRespose在调用保护的service 方法11、HTTP协议中状态代码200表示一切正常,返回的是正常请求结果12、HTTP协议中状态代码500表示服务器端程序发生异常13、TOMCA T可以配置基于http1.1协议的哪2种虚拟主机基于名称的虚拟主机基于端口的虚拟主机14、web.xml中servlet-mapping元素中url-pattern子素的文本/*的作用是为所有http请求提供服务15、HttpServlet中doGet和doPost方法通常抛出ServletException 和IOException 异常二、简答题,每题10个俯卧撑,共60个1、开发线安全的SERVLET变量的使用有哪些要求?尽可能的只使用局部变量应该只使用只读的域变量和静态变量不创建自己的线程修改共享变量时一定要使用同步,使用尽可能小的同步代码块修改外部对象一定要加锁,做到互斥访问2、简述session的生命周期在第一次请求时创建,在调用invalidate方法时或者2次请求间隔超过session-timeout 时间间隔限制3、简述Servlet接口的方法及其作用init()在服务器对Servlet第一次访问的时候执行初始化,对Servlet进行初始化操作。
基于Servlet的会话跟踪(一)
请求
在内存开辟空间 保存数据信息 清空内存内当前浏 览器相关数据信息
CISSST
现场编程
在登录页面用户已录入用户名,现 在编写一个 Servlet 接 收该数据,并把用户名值保存在 HttpSession 对象 内
… public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String userName=request.getParameter("userName"); HttpSession session=request.getSession(); if (userName!=null && !"".equals(userName)) session.setAttribute("userName", userName); else response.sendRedirect("index.html"); } ...
响应的时候,由服务器 给我分配一个唯一ID号, 这样就能区别不同的用户了
CISSST
会话跟踪(2-1)
HttpSession对象
服务器为每个会话创建一个HttpSession对象 每个会话对象都有一个唯一的ID 把用户的数据保存在相应的HttpSession对象内
根据ID号服务器寻找 服务器创建一个 HttpSession对象 内存中相应的数据 并把该对象的ID返回给用户 第二次请求把ID一 第一次请求 起发送给服务器 响应 把ID发送给客户端 同时,服务器在内存中开辟 一空间,用来保存该对象数据
ServletSession跟踪菜鸟教程
ServletSession跟踪菜鸟教程HTTP 是一种'无状态'协议,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录。
但是仍然有以下三种方式来维持 Web 客户端和 Web 服务器之间的 session 会话:Cookies一个 Web 服务器可以分配一个唯一的 session 会话 ID 作为每个Web 客户端的cookie,对于客户端的后续请求可以使用接收到的cookie 来识别。
这可能不是一个有效的方法,因为很多浏览器不支持cookie,所以我们建议不要使用这种方式来维持 session 会话。
隐藏的表单字段一个Web 服务器可以发送一个隐藏的HTML 表单字段,以及一个唯一的 session 会话 ID,如下所示:<input type='hidden' name='sessionid' value='12345'>该条目意味着,当表单被提交时,指定的名称和值会被自动包含在GET 或POST 数据中。
每次当Web 浏览器发送回请求时,session_id 值可以用于保持不同的 Web 浏览器的跟踪。
这可能是一种保持session 会话跟踪的有效方式,但是点击常规的超文本链接(<A HREF...>)不会导致表单提交,因此隐藏的表单字段也不支持常规的 session 会话跟踪。
URL 重写您可以在每个 URL 末尾追加一些额外的数据来标识 session 会话,服务器会把该session 会话标识符与已存储的有关session 会话的数据相关联。
例如,/file.htm;sessionid=12345,session 会话标识符被附加为 sessionid=12345,标识符可被 Web 服务器访问以识别客户端。
URL 重写是一种更好的维持session 会话的方式,它在浏览器不支持 cookie 时能够很好地工作,但是它的缺点是会动态生成每个 URL 来为页面分配一个 session 会话 ID,即使是在很简单的静态 HTML 页面中也会如此。
【免费阅读】JavaWeb程序设计习题参考答案(第1-6章)
《JavaWeb程序设计》练习题参考答案第一章:Servlet基础1、下列选项中属于动态网站技术的是_________(多选)答:PHP/ASP/JSPA、PHPB、ASPC、JavaScriptD、JSP参考答案:PHP(Hypertext Preprocessor):超文本预处理器,其语法大量借鉴C、Java、Perl等语言,只需要很少的编程知识就能使用PHP建立一个真正交互的Web站点,由于PHP 开放源代码,并且是免费的,所以非常流行,是当今Internet上最为火热的脚本语言之一。
ASP(Active Server Pages):是一种类似HTML、Script与CGI结合体的技术,他没有提供自己专门的编程语言,允许用户使用许多已有的脚本语言编写ASP应用程序局限于微软的IIS,般只适用于中小型站点,但目前ASP升级演变而来的支持大型网站的开发。
JSP(Java ServerPages):是基于Java Servlet以及Java体系的Web开发技术。
能在大部分服务器上运行,而且易于维护和管理,安全性能方面也被认为是三种基本动态网站技术中最好的。
2、下列关于Servlet的说法正确的是_______(多选)A、Servlet是一种动态网站技术B、Servlet运行在服务端C、Servlet针对每个请求使用一个进程来处理D、Servlet与普通的Java类一样,可以直接运行,不需要环境支持参考答案:Servlet是一种动态网站技术,是运行在服务器端,Servlet针对每个请求使用一个线程来处理,而不是启动一个进程,传统的CGI为每次请求启动一个进程来处理。
所以Servlet的效率更高3、下列关于Servlet的编写方式正确的是______(多选)A、必须是HttpServlet的子类B、通常需要覆盖doGet() 和doPost()方法或其一C、通常需要覆盖service()方法D、通常要在web.xml文件中声明<servlet>和<servlet-mapping>两个元素参考答案:A、B、D必须继承Httpservlet类,不需要覆盖servlce()方法,service()方法是Servlet接口中的方法,Servlet是HttpServlet的父类,该方法会根据请求类型选择执行doGet()或doPost()方法。
Servlet习题
11. 下面选项中, 用于根据指定名称获取 ServletContext 的域属性值的方法是( )
A、String getAttibute(String name) B、Object getAttibute(String name) C、String getAttibute(Object name) D、Object getAttibute(Object name)
D、<servlet> <servlet-name>syxy.Student </servlet-name> <servlet-value>student </servlet-class> </servlet> <servlet-mapping> <servlet-name> syxy.Student </servletname> <url-pattern>/start/*</url-pattern> </servlet-mapping>
访问servlet时web服务器直接返回servlet的源码d后者需要在webxml文件中配置url路径判断题servlet是一个服务器上运行处理请求信息并将其发送到客户端的java程序当某个web应用没有缺省servlet时也会使用tomcatdefaultservlet作为默认缺省的servleservlet程序中只有属于同一个请求中的数据才可以通过httpservletrequest对象传递一个servlet只能映射一个虚拟路径一个元素下配置多个子元素能实现servlet的多重映射在servlet映射的路径中使用通配符格式只有两种
2. 在 login.html 中存在如下代码: <form action =”/LoginServlet” method=”post”>
解析ServletJSP会话跟踪机制
解析ServletJSP会话跟踪机制JSP四种会话跟踪技术Cookie:服务器在一个应答首部传递给浏览器的名称/值对。
浏览器保存的时间由cookie的过期时间属性来指定。
当浏览器向某个服务器发送一个请求时,它会检查其保存的cookie,并在请求首部中包含从同一台服务器上接收到的所有cookie。
Session tracking:在浏览器和服务器之间不直接传送所有的状态信息,而只是传递表示符(session ID)。
浏览器发送sessionID,服务器跟踪与该会话相关联的所有信息。
传递sessionID可以通过cookie和URL复写技术,大部分容器都支持这两种技术。
服务器无法分辨用户是否关闭了浏览器,因此关闭浏览器意味着与先前的会话关联的所有会话数据都保留在服务器上,直到会话超时,服务器销毁会话对像。
跟踪同一会话中的请求的会话ID可以有多种方法,主要有cookie 和url复写。
URL复写:把会话ID编码在URL中。
例:counter.jjsp;jsessionnid=be8d697876787876befdbde898789098 980这样,即使浏览器不支持cookie,也能够实现会话跟踪。
对于URL复写,服务器从请求的URI中提取出会话ID,并把该请求与相应的会话关联起来,然后在访问会话数据的时候,JSP页面所进行的处理方式就和使用cookie跟踪会话id时所使用的方式完全相同。
所以sesssion的实现要依靠cookie或URL复写技术。
如果想为不支持cookie的浏览器提供会话跟踪,就必须使用<c:url>行为对应用程序中的所有URL进行复写。
这意味着应用程序中的所有页面(至少是那些带有对其他页面引用的页面)都必须是JSP 页面,这样页面引用才能以动态方式进行编码,如果遗漏了一个ur,那么服务就会失去对会话的跟踪。
隐藏表单域:隐藏表单域是将会话ID添加到HTML的隐藏表单中(类型为hidden的input)。
“servlet技术”单元习题
“Servlet技术”单元习题一、填空题1.___________是Sun公司推出的一种在服务器端运行的小程序,它的实质就是一个类,是一个能够使用print 语句产生动态HTML 内容的Java 类。
2.编译Servlet 之前,将Servlet 所需要的___________包添加到classpath 中。
3.Java API 提供了___________和___________包为编写Servlet提供了接口和类。
4.在编写Servlet 时要用到的javax.servlet.HttpServlet 类为___________的子类。
5.Javax.servlet.GenericServlet 类为______________________类的子类,并且实现了javax.servlet.Servlet 接口、javax.servlet.ServletConfig 接口和javax.io.Serializable 接口。
6.在doGet方法的参数中通常要用到______________________接口和_________________________________接口。
7.一般情况下要用到的javax.servlet.http.HttpServletRequest 接口继承于______________________接口,而javax.servlet.http.HttpServletResponse接口继承于______________________接口。
8.______________________接口定义了Servlet 必须实现的方法。
9.______________________类提供Servlet 接口的HTTP 特定实现。
10.______________________接口的主要作用是获得客户端的请求信息。
11.______________________接口的主要作用是获得与服务器端的响应信息。