




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第八章JavaServlet基础,2,JavaServlet简介,Servlet技术用于在服务器端创建响应用户请求的对象,被创建的对象称为一个Servlet对象。JSP技术以Servlet为基础,提供了Servlet的几乎所有好处:.java文件的生成、编译以及Servlet对象的创建都由JSP引擎自动完成。但JSP技术并非Servlet技术的全部。,3,8.1Servlet对象的创建与使用,使用Servlet的一般步骤是:编写创建Servlet对象的类。在服务器上保存字节码文件。编写部署文件。请求服务器创建Servlet对象。,4,8.1.1HttpServlet类,创建Servlet对象的类是一个特殊类的子类,该特殊类是:javax.servlet.http.HttpServletHttpServlet的子类习惯上称为一个Servlet类。注:要使用javax.servlet.http包中的类,需要把Tomcat的lib目录下的servlet-api.jar拷贝至java安装目录下jrelibext下。,5,例:用Servlet输出一句话,packageserv;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassHelloextendsHttpServletpublicvoidinit(ServletConfigconfig)throwsServletExceptionsuper.init(config);publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOExceptionresponse.setContentType(text/html;charset=gb2312);PrintWriterout=response.getWriter();out.println(Hello,servlet!);,6,8.1.2字节码的保存,Servlet类编译后生成的.class文件的保存与Bean的存放位置相同,即Web服务目录WEB-INFclasses这个目录中。,7,8.1.3编写部署文件,为了能让Tomcat服务器用字节码文件创建对象,必须编写一个部署文件web.xmlweb.xml存放在Web服务目录WEB-INF下。web.xml的一般格式为:,8,helloserv.Hellohello/lookHello,9,说明:,必须以xml声明,即,作为文件的第一行。必须有根标记每一个servlet对应一个标记和一个标记。如果web服务目录下有多个servlet,可添加这些标记。,10,说明:,子标记表示Tomcat服务器创建的Servlet对象的名字。子标记表示通过url怎样访问该servlet。,11,8.1.4运行servlet,当用户请求服务器运行一个Servlet对象时,需根据web.xml中标记指定的格式输入请求。对于上例,请求的url为:http:/localhost:8080/chapter8/lookHello,12,8.1.4运行servlet,Servlet对象创建后,如果修改了Java源文件,需重启Tomcat才能创建新的Servlet对象。如果不想重启可修改server.xml文件,方法是:在前加如下代码:一个Servlet类在第一次使用前需重启Tomcat服务器。,13,8.2Servlet的工作原理,当多个客户请求同一个Servlet时,服务器为每个客户启动一个线程,这些线程由Tomcat服务器管理。,14,8.2.1Servlet的生命周期,一个Servlet的生命周期主要有三个过程:调用init()方法初始化Servlet。调用service()方法响应客户请求。调用destroy()方法消灭Servlet对象。,15,8.2.1Servlet的生命周期,当某个Servlet第一次被请求时,服务器会生成该Servlet并调用其init()方法初始化,再调用service()方法处理用户请求。处理结束后该Servlet会常驻内存,新的用户请求直接调用当前Servlet对象的service()方法处理。服务器关闭时,调用destroy()方法。在Servlet的一个生命周期中,init()和destroy()被调用一次,而service()则会被调用多次。每个客户的每次请求都导致service()方法被调用,由于运行在不同的线程中,service()方法中的局部变量互不干扰。,16,8.3通过JSP页面调用Servlet,可以通过地址栏来运行一个Servlet,但更多的是通过超链接请求。当增加新的Servlet时,都需要为web.xml文件添加标记和标记。可以通过超链接访问Servlet,也可通过表单向Servlet提交数据。,17,例:通过超链接访问hello,JSP文件的内容为:链接到hello这个Servlet,18,例:通过表单向Servlet提交数据,packageserv;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassShowStrextendsHttpServletpublicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOExceptionresponse.setContentType(text/html;charset=gb2312);PrintWriterout=response.getWriter();/request.setCharacterEncoding(gb2312);Strings=request.getParameter(txt);out.println(Youinput:+s);,19,例:通过表单向Servlet提交数据,请输入一个字符串:,20,8.4Servlet的共享变量,Servlet类的成员变量被所有线程共享。下例利用成员变量被所有用户共享这一特性,让用户帮助计算PI值。PI/4=1-1/3+1/5-1/7+1/9-1/11,21,例:帮助计算PI值,publicclassCalculatePIextendsHttpServletdoublesum=0,i=1,j=1;intcount=0;publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOExceptionresponse.setContentType(text/html;charset=gb2312);PrintWriterout=response.getWriter();count+;sum+=i/j;j+=2;i=-i;out.println(你是第+count+人);out.println(目前的PI值是:+4*sum);,22,例:帮助计算PI值,JSP文件:帮助计算PI值,23,8.5doGet()与doPost()方法,每当服务器收到一个Servlet请求,就产生一个新线程,在这个线程中调用service()方法检查HTTP请求类型(GET或POST),根据请求方式决定调用doGet()还是doPost()通常我们不重写service()方法来响应客户,而是重写doGet()和doPost()方法。浏览器默认的请求方式是GET类型。,24,8.5doGet()与doPost()方法,如果不论请求类型是什么,服务器的处理过程完全相同,那么可以在doPost()中编写处理过程,在doGet()中调用doPost(),反之也可。如果重写了service()方法就不再处理doGet()和doPost()方法了。,25,例:根据不同的请求类型返回不同的值,如果文本框中的数据用POST方法提交,则求其平方;如果以GET方法提交,则求其立方。,参SquareorCubic.java与SquareorCubic.jsp,26,SquareorCubic.jsp:,27,SquareorCubic.java:,packageserv;import;publicclassSquareorCubicextendsHttpServletpublicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionresponse.setContentType(text/html;charset=gb2312);PrintWriterout=response.getWriter();Strings=request.getParameter(txt1);doublen=Double.parseDouble(s);doubleresult=n*n;out.println(n+的平方是:+result);publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException,28,8.6重定向与转发,HttpServletResponse类的重定向方法voidsendRedirect(Sringlocation)可以将用户重定向到另一个JSP页面或另一个Servlet。但不能将用户对当前页面的请求(HttpServletRequest对象)转发给将要重定向到的页面。,29,8.6重定向与转发,RequestDispatcher类的forward()方法可以将用户对当前JSP页面或Servlet的请求转发到另一JSP页面或Servlet。如果要转发到a.jsp,可以:RequestDispatcherdispatcher=request.getRequestDispatcher(“a.jsp”);dispatcher.forward(request,response);与sendRedirect()不同的是:用户在浏览器的地址栏中看不到forward()转发的地址,仍是当前Servlet地址。,30,例:重定向与转发,在文本框中输入一个数,提交给Verify这个Servlet,如果输入为空则重定向到输入界面,不为空则转发到Calc这个Servlet进行计算。,参Verify.java,Calc.java,input.jsp,31,Input.jsp:,求平方:,32,Verify.java的doPost()方法:,publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionresponse.setContentType(text/html;charset=gb2312);PrintWriterout=response.getWriter();Strings=request.getParameter(txt);if(s.length()=0)response.sendRedirect(input.jsp);elseRequestDispatcherdispatcher=request.getRequestDispatcher(Calc);dispatcher.forward(request,response);,33,Calc.java的doPost()方法:,publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionresponse.setContentType(text/html;charset=gb2312);PrintWriterout=response.getWriter();Strings=request.getParameter(txt);doublen=Double.parseDouble(s);doubleresult=n*n;out.println(n+的平方是:+result);out.println(返回input.jsp重新输入);,34,8.7会话管理,request调用getSession()获取用户的会话对象:HttpSessionsession=request.getSession(true)一个用户在同一Web服务目录的不同Servlet中获取的session对象相同。,35,例:利用session存取数据,调用一个Servlet时,将一个字符串存入session对象;调用另一Servlet时,取出该字符串。,参Sto
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年济宁市嘉祥县事业单位招聘真题
- 2025年5G网络建设项目信息技术服务外包合同范本
- 2025新型医疗器械临床试验与成果转化合作协议模板
- 2025年度商业综合体采光井设计优化合同
- 2025年现代化厂房建设及智能控制系统安装服务合同
- 2025医疗设备租赁与环保节能改造项目服务协议
- 2025年度青少年消费权益保护及理财素养提升服务合同
- 2025年新型生态社区景观维护与更新服务协议
- 2025年城市安全监控设备采购与安装服务合同
- 2025年医疗设备维修与技术培训一体化服务合同
- 银行卡被法院冻结复议申请书
- 【保密风险评估报告】保密风险评估及防控措施
- 《sowt分析星巴克英》课件
- 装修维修协议合同范例
- 初中信息技术课堂中的项目式学习实践研究结题报告
- DB32T-蛋鸡养殖场健康生产规范(报批稿)编制说明
- 停车数据深度挖掘
- 产品研发与技术转移制度
- 八年级语文重点知识及文学常识归纳总结
- 台州市开发投资集团有限公司招聘笔试题库2024
- 乡镇供电所全能型员工评聘考试题库(精简600题)
评论
0/150
提交评论