控制层Servlet组件技术.docx

上传人:小飞机 文档编号:5303780 上传时间:2023-06-24 格式:DOCX 页数:9 大小:145.24KB
返回 下载 相关 举报
控制层Servlet组件技术.docx_第1页
第1页 / 共9页
控制层Servlet组件技术.docx_第2页
第2页 / 共9页
控制层Servlet组件技术.docx_第3页
第3页 / 共9页
控制层Servlet组件技术.docx_第4页
第4页 / 共9页
控制层Servlet组件技术.docx_第5页
第5页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《控制层Servlet组件技术.docx》由会员分享,可在线阅读,更多相关《控制层Servlet组件技术.docx(9页珍藏版)》请在三一办公上搜索。

1、控制层Servlet组件技术一 Java Servlet及其技术特点l. Java Servlet 及特点(1) Servlet是使用Java Servlet应用程序设计接口(API)及相关类和方 法的Java程序(2) 在服务器端的Servlet容器里(如Tomcat)运行2.Servlet与传统的应用程序的对比(1) Servlet由Web服务器(如Tomcat)进行加载。3.Servlet能够处理Http请求和响应(1) Web客户端程序与Servlet之间通过http通信,处理客户端程序的请 求并返回一系列结果,动态地生成Web页面 4.Servlet的最大的优势在于它的高性能(1)

2、首先Servlet在第一次初始化时装载并驻留在内存中,以后直接从内存 中运行;(2) 其次,在默认情况下Servlet以单实例多线程的方式工作,一个新请求 到达后,Servlet实例开启一个新的线程服务这个请求。5.Servlet的主要作用:实现服务器端的插件6.JSP和Servlet在应用上的区别(1) 主要的差别1) JSP中应该仅仅存放与表示层有关的内容,而所有的数据计算、数据 分析、数据库连接等处理,统统是属于商业业务层,应该放在 JavaBean或者 Servlet 中。2) 注意:Servlet是包含HTML代码的Java程序,而JSP是包含Java 代码的HTML网页。(2) J

3、ava Servlet的主要缺点1)没有把网站的逻辑处理和页面的显示输出分离,为了解决 Servlet 的这种缺点,SUN 推出 了 Java Server Pages JSP。(3) Servlet与JSP相互配合1) Servlet写商业业务层很好,写表示层则不方便。所以Sun推出JSP + JavaBean,用JSP写表示层,用JavaBean写商业业务层。JSP在Servlet的基础 上有所创新,它们可以互相协作,互相补充对方的不足。注意:Servlet是可以包含HTML标签的Java程序,而JSP是可以包含Java代 码的HTML网页。8 .Servlet容器响应Web客户请求流程的

4、UML时序图二Servlet接口和HttpServlet类各自的应用1. 所涉及的包- javax.servlet 和 javax.servlet.http- 其中在javax.servlet包中的接口和类的命名主要以Servlet开头,而在 javax.servlet.http包中的接口和类的命名主要以Http开头2. HttpServlet 类(1) HttpServlet 类:是 GenericServlet 的一个派生类,通过 GenericServlet 实现了 Servlet 接口。HttpServlet 为基于 HTTP协议的 Servlet 提供了基本的支持。(2) HttpS

5、ervlet 类中的 doXXX ()方法:-当请求到来时,service ()方法决定请求的类型(GET或者POST方式)。-把请求分发给相应的处理方法(doGet()或者doPost()。(3) HttpServlet 类的定义public abstractclass HttpServletextendsGenericServletimplements Serializable-实现接口和继承抽象类在编程方式上的不同点-“Adapter模式(适配器模式)”-采用继承抽象类(HttpServlet类)的方法编程的优点3. 编写流程(1) 编写一个类,继承 javax.servlet.http

6、.HttpServlet,重写1) 一个init ()函数2) 一个 doGet/doPost/service()函数3) 一个 destory 函数(2) 在网站的配置文件里面注册这个Servlet(3) 编译这个Servlet(4) 访问这个Servlet 示例:建立第一个Servlet,打印99乘法表FirstServlet.javaS已已t WizardCreate a 口已w S已二-1 已t classSui.irce folder:serv 已 r 5, mix:E-r.Package:com. px1987. server5. servletBrQ Enclosing type

7、:BrNaine:First ServletlModifiers: public default北stT旦ut 口 fin旦 1ll st己ticSuperclass:javax. e已已t. http. HttpServlet| E-rInterfaces:o1 FTeiriplate to use:1 Default teiriplate for ServletOptiuns:0Create InheritHCreate Construed Met kindsctorsHCreate doGetHCreate doPostHCreate init and destroy OCreate d

8、oDeleteOCreate doPutOCreate getServletInfoI | Finisli | CaneXML Wi*dH Generate /It ap web. xml fileServlet/JSP Class Nam已:Servlet/JSP Name:Servlet/JSP Mapping URL:File Path of web. xiril:Display Nani巳:Description:FirstServ1已tcom. pxl987. server5. servlet. FirstServlet/s er-d e t /F irstS ervl e t/s

9、己tv己r 5/W 己bRocit /WEBJ HF| BiThis is the display naui巳 of iriy J2EE comi:This is th已 description of my J2EE coRipcpublic void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, lOException (PrintWriter out=response.getWriter();for(int i=1;i=9;i+)(for(int j=1;j=i

10、;j+)(out.println(j+火+i+=+j*i);out.println();弛址(D)http : /localhost: 3037/serverE/servlet/FirstServlet1*111*22 2*2=41*33 2+3=6 3+3=91*44 2+4=8 3*4二12 4*4二161*55 2+5=10 3+5=15 4+5=20 5+5=251*66 2+6=12 3*6二18 4*6二24 5+6=30 6*6二361*77 2*7=14 3*7二21 4*7=28 5*7二35 6*7=42 7*7二491+88 2+8=16 3+8=24 4+8=32 5+

11、8=40 6+8=48 7+8=56 8+8=641*99 2+9=18 3+9=27 4*9二36 5*9二45 6*9二54 7*9二63 8+9=72 9*9二81三Servlet技术相关的API1. 处理用户的http请求所涉及的接口和类(1)如何获得请求参数-通过使用HttpServletRequest类型的对象中的getParameter方法request, setCharacterEncoding(Agb2312tf);us erN am e=r e que s t. getFarameter(userName). trim 0;userFassword=request. get

12、Farameter(userFassword). trim0;userDepartment = request. getFarameter(userDepartment. trim0;us erA dm inLevel = request. getFarameter (userAdininLevel). trim 0 ;(2 )处理会话础此巳作1=request. getFarameter (departAdjninLevel). trim 0 ;-通过使用getSession ()方法获得HttpSession对象-而在JSP页面中直接通过内置的session对象来代表(3 )获得Cooki

13、e中的数据-通过使用getCookies()方法获得Cookie对象的数组-实现对Cookie进行操作。2. 处理用户的http响应所涉及的接口和类(1)向浏览器输出结果-通过使用getWriter()方法获得PrintWriter对象,-实现以字符格式方式写数据。7 R- 9 0 1 I100 8 9 Qpublic void doPost(HttpServletRequ已mt request HttpS已rvl已tRespons已 response) r已spons已.m已tContentTyp已已xt/html; charset=GBKA);out =new PrintWriter(re

14、sponse. getOutputStream();(2 )设置HTTP响应的MIME类型:利用setContentType方法(3) 处理响应的步骤-设置响应头中的数据类型-从响应中得到输出流-将数据输出到输出流中以向客户端输出(4 )如何向客户机中写Cookie- 通过使用 addCookie(Cookie cookie)方法-实现将数据写入到Cookie中3、在Servlet中实现重定向(1) 重定向技术可以分为两类-客户端重定向-服务器端重定向(请求转发和请求重定向)。(2) 客户端重定向可以通过设置特定的HTTP头,或者写JavaScript脚本实现。alert (数寤库中已有此用户

15、名:/%=uSerName%的思户, nif您重新注册一个新的用户名。*、 window, parent, location. Itt已f=lie已rr已gist已jspA,;(/script)-(3) 服务器端的重定向使用 HttpServletResponse 的 sendRedirect()方法实现重定向(4 ) HttpServletResponse.sendRedirect()方法-这个方法将响应重定向到参数指定的新的URL。- 参数可以是一个绝对的 URL , 如 response.sendRedirect( )也可以使用相对的 URL。-如果参数以“/”开头,则容器认为相对于当前

16、Web应用的根,否则,容器 将解析为相对于当前请求的URL。-这种重定向的方法,将导致客户端浏览器的重新发出请求URL并跳转到 目标。-从浏览器中的地址栏中可以看到新的URL地址,作用类似于设置HTTP 响应头信息的实现。(5) 重定向的主要应用一可以防止用户重复提交同一表单浏览器先用POST的方式提交表单,然后它接收到重定向的指令,它继续用 GET的方式去下载新的页面;因此,从浏览器的角度来看,这个新的页面不是POST 的返回结果,而是GET的。这样,用户不可能在点击刷新的时候再次提交表单, 因为刷新的结果是再次用GET去下载表单提交后的结果页面,而不是重新提交表 单。4、在Servlet中

17、实现请求的转发(1)实现的方法:利用 RequestDispatcher.forward ()方法。(2 ) RequestDispatcher.forward。方法- forward()方法将当前的request和response 转发到该 RequestDispacher 指定的资源。-要严格遵循“前面的组件处理request,最后的组件处理response” 的准则;只有在尚未向客户端输出响应时才可以调用forward ()方法,在重定向 前将自动清除缓存。否则将抛出一个IllegalStateException异常。(3 )在Servlet中进行页面跳转的方法代码例String t a

18、rgetURI=/Net Shop/infol. htm*; uRequest Di spat cher dispatch =request. getRequestDispatcher(targetllRI): di spat ch. forward (reque st, response); w四Servlet的初始化参数和ServletContext接口的用途1,读取web.xml内局部参数(1) 参数名 值 (2) 读取局部参数getInitParameter(“ 参数名);示例:web.xmlInitServlet com.px198 7.server5.servlet.InitSer

19、vlet bookJava技术InitServlet /servlet/InitServlet InitServlet.javapublic void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException (String book =this.getInitParameter( book);response.setContentType( text/html;charset=gb2312);PrintWriter out=response.getWr

20、iter();out.println(book);地址(D) http: /localhost: 8087/server5/servlet/InitServletJ日v日技术2.Servlet 上下丈ServletContext 对象(1)获得容器的系统资源-利用ServletContext类获得通过容器所实现的各种系统资源的访问 及与其它Servlet之间的交互-利用ServletContext类中的方法访问容器中的资源getRealPath、getResource 和 getResourceAsStream 等方法(2 )区分 ServletConfig 和 ServletContext

21、对象-ServletConfig:当一个Servlet被实例化后仅对本Servlet有效,一 个Servlet的ServletConfig对象不能被另一个Servlet访问。-ServletContext:对任何Servlet都有效,它为Web应用的全局对象3. 读取web.xml内全局参数(1) 参数名 值 (2) 读取全局参数getServletContext.getInitParameter(“参数名);示例:web.xml bookname JSP技术 ContextServlet.javapublic void doGet(HttpServletRequest request, Ht

22、tpServletResponse response)throws ServletException, IOException (ServletContext application= this .getServletContext();String book= application.getInitParameter( bookname); response.setContentType(text/html;charset=gb2312); PrintWriter out=response.getWriter(); out.println(book);地址)http : /localhost

23、 :8087/s 已:rv 已m 已:rvl 已 t /Context ServletJSF技术五线程安全的Servlet编程及应用l.Servlet为多线程方式当多个不同的用户对同一个Servlet进行请求时,服务器采用多线程的技术 来处理请求,每个请求将拥有自己的线程。2. 共享Servlet中的成员变量请求同一个Servlet将使服务器在内存中保存同一个Servlet实例,这也 就意味着所有的请求将共享Servlet中的类的成员变量-在某些应用下将会 出现问题!3. 设计线程安全的Servlet1) 为了避免多个不同用户共享Servlet中的类成员变量2) 可以将数据设计为局部变量,从而

24、保证Servlet的无状态的特性;而将共 用的数据设计为类中的变量整体示例1:cart.jspinput type = submit value = 提交%ArrayList al=(ArrayList)session.getAttribute( book); if(al!=null)( for(int i=0;ial.size();i+)out.println(al.get(i);out.println(删 );%BuyServlet.javapublic void doPost(HttpServletRequest request, HttpServletResponse response

25、)throws ServletException, IOException request.setCharacterEncoding( gb2312); String bookname=request.getParameter( bookname); String method=request.getParameter( method);HttpSession session=request.getSession();ArrayList al=(ArrayList)session.getAttribute( book);if(al=null)al=new ArrayList();session

26、.setAttribute( book , al); if(method.equals(add) al.add(bookname); if(method.equals(delete)int i=Integer. parseInt (bookname);al.remove(al.get(i);response.sendRedirect(/server5/cart.jsp);地址(D) http: /Iocalhost: 8087/server5/cart. jspJ avaK术删除J寄技术删除对HEXkt 士叫龄地址)http: /localhost :8087/server5/cart, jsp提交Jwa技术删除 JSP技术耐除 Java础删除

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号