《教学课件第9章 Servlet.ppt》由会员分享,可在线阅读,更多相关《教学课件第9章 Servlet.ppt(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、PPT模板下载:/moban/ 行业PPT模板:/hangye/ 节日PPT模板:/jieri/ PPT素材下载:/sucai/PPT背景图片:/beijing/ PPT图表下载:/tubiao/ 优秀PPT下载:/xiazai/ PPT教程: /powerpoint/ Word教程: /word/ Excel教程:/excel/ 资料下载:/ziliao/ PPT课件下载:/kejian/ 范文下载:/fanwen/ 试卷下载:/shiti/ 教案下载:/jiaoan/ 字体下载:/ziti/ 教学课件第9章 Servlet版权所有test2.jsp源码:Insert title hereI
2、m so good!其中org.apache.jasper.runtime.HttpJspBase继承自javax.servlet.http.HttpServlet9.1Servlet概述9.2Servlet的生命周期9.3Servlet发送页面到客户端9.4Servlet处理表单数据9.5Servlet请求转发9.6示例:使用Servlet完成工资计算Web服务器在这里不是指计算机硬件,而是一种服务器软件,是指能够接收HTTP协议请求、提供给用户网页、图片、多媒体等信息的服务软件。 常见的Java EE平台的Web服务器软件有Tomcat,Jboss,resin,glassfish等。 Se
3、rvlet容器,是Web服务器的一部分,一个Servlet容器可管理所有运行在服务器端的Servlet程序,控制这些Servlet程序的整个生命周期。 每个Servlet都代表一个能够处理某个Web请求的服务处理程序,Web服务器对这些处理程序进行执行、调度、资源分配等 JSP页面页面JSP容器容器JSP实现实现类类解译解译页面指令标签行为代码片断静态模板客户端请求客户端请求JSP实现类实现类实例对象实例对象RequestResponse结果页面结果页面执行执行Servlet在Java EE平台中是指能够通过某种网络协议对客户端请求进行响应的服务程序。 Servlet接受来自网络的http请求
4、(客户端浏览器提交的表单、客户端浏览器提供的一个网络地址、或者一个文件),并对不同请求作出不同的响应。能够生成动态内容,如生成一个Web页面。 将应用逻辑封装到一个个Servlet中,使得客户端页面能更好的隔离应用逻辑;使应用程序的层次更为清晰。 例如:例如:http:/localhost:8080/Servlet_Output/LifeCircle新建一个servlet。public class LifeCircle extends HttpServlet public LifeCircle() super(); System.out.println(Construct!); public
5、void init(ServletConfig config) throws ServletException System.out.println(init!);public void destroy() System.out.println(destroy!);protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException System.out.println(get!);protected void doPost(Http
6、ServletRequest request, HttpServletResponse response) throws ServletException, IOException System.out.println(post!);LifeCircleLifeCircletestServlet.LifeCircleLifeCircle/LifeCirclehttp:/localhost:8080/WageIS_Servlet/LifeCircle启动tomcat服务器后,在浏览器地址栏中输入:http:/localhost:8080/Servlet_Output/LifeCircle在Con
7、cole窗口中可以依次看到:Construct!init!get!当刷新该页面时,会发现控制台新增一行:get!所有Servlet程序必须继承类HttpServlet或它的派生类;HttpServlet实现了Servlet接口,init方法和destroy方法即定义在该接口中。类HttpServlet中有2个方法,会根据来自客户端浏览器的Http请求的不同而被执行;protected void doGet(HttpServletRequestreq, HttpServletResponseresp) ; 这个方法由Web服务器调用,使该Servlet可以处理Http的Get请求。protect
8、ed void doPost(HttpServletRequestreq, HttpServletResponseresp) 这个方法由Web服务器调用,使该Servlet可以处理Http的Post请求。http:/ Platform, Enterprise Edition 6 API Specification在程序中书写的Servlet代码并不能直接被Web服务器用来进行网络服务,还需要使用Web配置文件(即web.xml文件)对Servlet进行配置。包含2部分信息:1.Servlet 说明该Servlet的名称、显示名称以及对应的JAVA实现类。2.Servlet-mapping 说明
9、该Servlet将映射到服务器上哪个网址进行处理。如在默认包中新建了一个servlet,取名OutputWelcome,则对应的配置为:OutputWelcomeOutputWelcomeOutputWelcome如在包ServletPack中新建了一个servlet,取名OutputWel,则对应的配置为:OutputWelOutputWelServletPack.OutputWelOutputWelcome/OutputWelcome9.3.1 Servlet的调用过程的调用过程如:http:/localhost:8080/Servlet_Output/Servlet_Name这个Serv
10、let_Name即为存放于服务器上的Servlet程序对应的名字。为访问Servlet程序,服务器会根据URL请求中的Servlet_Name来定位到服务器中相应的Servlet的文件并执行,本例中Servlet程序中的get方法将加入用于发送给客户端页面功能的代码。public class OutputWelcome extends HttpServlet protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException req
11、uest.setCharacterEncoding(GBK);response.setContentType(text/html;charset=GBK);PrintWriter out=response.getWriter();out.println();out.println(欢迎页面);out.println();out.println(我们欢迎你!);out.println();out.close();http:/localhost:8080/Servlet_Output/Servlet_Name页面源码: SenderData.jsp可在下列文本框中输入数据:可在下列多选框中选择15
12、项: num1num2num3num4num5在浏览器地址栏中输入:http:/localhost:8080/GetData_Servlet/SenderData.jsp显示页面如图:输入测试数据后点击“Enter”按钮:此时页面内容发生变化,浏览器中地址转变为:http:/localhost:8080/GetData_Servlet/HandleParam?inputbox=Hello&number=one&number=four&number=fivepublic class HandleParam extends HttpServlet protected void doGet(Http
13、ServletRequest request, HttpServletResponse response) throws ServletException, IOException String inputText = request.getParameter(inputbox); String multiValue = request.getParameterValues(number); response.setContentType(text/html; charset=GBK); PrintWriter pw = response.getWriter(); pw.println();
14、pw.println(你输入的文字:); if( inputText != null ) pw.println(inputText); pw.println(); pw.println(你选择的项:);if( multiValue != null ) for(int i=0; imultiValue.length; i+) pw.println(multiValuei + ); pw.println();HandleParamHandleParamGetParam.HandleParamHandleParam/HandleParamhttp:/localhost:8080/GetData_Se
15、rvlet/HandleParam?inputbox=Hello&number=one&number=four&number=five通过Servlet生成客户端请求的页面这一方式,控制不太方便,特别当页面内容较多,页面样式较为复杂的情况则不太适合,所以一般可以采用Servlet完成服务器端进行计算处理,将结果通过jsp页面发送给客户端的方式,也就是通常所说的Servlet+jsp方式。在Servlet计算处理后,可利用RequestDispatcher对象,可以把请求转发给其他的Servlet或JSP页面。通常这出现在Servlet进行了验证处理得出结果,需要到另外一个结果页面显示的情形。S
16、ervletContext context=getServletContext();RequestDispatcher rd=context.getRequestDispatcher(/Payroll/ShowCalResult.jsp?employeeName=+name+&wage=+wage);rd.forward(request,response);其中name、wage是当前servlet计算出来的值。response.sendRedirect(Payroll/ShowCalResult.jsp?employeeName=+name+&wage=+wage);源文件一览如图:form
17、 id=form1 method = post action =本院全职教师工资计算请输入:姓名: 职称: 副教授教授本月超额课时为:public class CalAssociateProWage extends HttpServlet public CalAssociateProWage() super(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExceptiontryrequest.setCharacterEnco
18、ding(utf-8);response.setContentType(text/html;charset=utf-8);String name = request.getParameter(employeeName);String title = request.getParameter(employeeTitle);Float extraClasshour = Float.parseFloat( request.getParameter(employeeExtraClasshour);/FulltimeTeacher pt2 = new FulltimeTeacher(name,title
19、);pt2.setExtraclasshour(extraClasshour);pt2.calculateWage();/Float wage=pt2.getWage();ServletContext context=getServletContext();RequestDispatcher rd=context.getRequestDispatcher(/Payroll/ShowCalResult.jsp?employeeName=+name+&wage=+wage);rd.forward(request,response);/response.sendRedirect(/Payroll/S
20、howCalResult.jsp?employeeName=+name+&wage=+wage);CalAssociateProWageCalAssociateProWageServletCalculateWage.CalAssociateProWageCalAssociateProWage/CalAssociateProWage姓名:工资为:public class CalAssociateProWage extends HttpServlet public CalAssociateProWage() super(); protected void doGet(HttpServletRequ
21、est request, HttpServletResponse response) throws ServletException, IOExceptiontryrequest.setCharacterEncoding(utf-8);response.setContentType(text/html;charset=utf-8);String name = request.getParameter(employeeName);String title = request.getParameter(employeeTitle);Float extraClasshour = Float.pars
22、eFloat( request.getParameter(employeeExtraClasshour);/FulltimeTeacher pt2 = new FulltimeTeacher(name,title);pt2.setExtraclasshour(extraClasshour);pt2.calculateWage();/Float wage=pt2.getWage();HttpSession hs=request.getSession();hs.setAttribute(employeeName,name);hs.setAttribute(wage,wage);response.sendRedirect(Payroll/ShowCalResult.jsp);姓名:工资为:可看到此时地址栏中并没有请求参数