尚学堂手把手教程授课:张志宇版权所有:尚学堂科技ServletServletJSP是一种Servlet手把手教程版权所有:尚学堂科技Servlet尚学堂背景知识常用的Web服务器IIS应用服务器Apacheweb服务器(处理静态页面)TomcatJSP/Servlet容器通常的动态网页技术CGI(CommonGateWayInterface)API常用的有(NSAPI,ISAPI)ASP(ActiveServerPage)PHP(PersonalHomePage)JSP/Servlet(JavaServerPage)LAMP手把手教程版权所有:尚学堂科技Servlet尚学堂tomcat启动与停止startupshutdowncatalinastartcatalinastopcatalinadebug调试错误的时候runexithelp设置环境变量JAVA_HOMEshutdown.bat小心使用手把手教程版权所有:尚学堂科技Servlet尚学堂tomcat目录结构bin:存放各种平台下启动和关闭Tomcat的脚本文件。startup.bat是windows下启动tomcat的文件,shutdown.bat是关闭tomcat的文件。common:在common目录下的lib目录,存放Tomcat服务器和所有web应用都能访问的JAR。shared:在shared目录下的lib目录,存放所有web应用能访问的,但Tomcat不能访问的JAR。server:在server/webapps目录中,存放Tomcat自带的两个APP-admin和manager应用,来管理Tomcat-web服务用的。work:Tomcat把各种由jsp生成的servlet文件放在这个目录下。temp:临时活页夹,Tomcat运行时候存放临时文件用的。logs:存放Tomcat的日志文件webapps:web应用的发布目录,把java开发的web站点或war文件放入这个目录下就可以通过tomcat服务器访问了。conf:Tomcat的各种配置文件,最重要的是server.xml.手把手教程版权所有:尚学堂科技Servlet尚学堂Tomcat配置文件conf/server.xml服务器的主配置文件conf/web.xml定义所有Web应用的配置(缺省的Servlet定义和MIME类型定义)conf/tomcat-user.xml定义了tomcat用户的信息(用于权限与安全)手把手教程版权所有:尚学堂科技Servlet尚学堂conf/server.xml顶层类元素:位于整个配置文件的顶层,Server;连接器类元素[Connectors]:客户和服务(容器类元素)间的通讯接口。接受客户请求,返回响应结果;Connector容器类元素[Containers]:处理客户请求并且生成响应结果,包含3个:EngineHostContext嵌套类元素[NestedComponents]:可以加入到容器中的元素,包括:loggerValveRealm等一个Server包含一个或多个Service,一个Service包含唯一一个Engine和一个或多个Connector,多个Connector共享一个Engine;一个Engine包含多个Host,每个Host定义一个虚拟主机,包含一个或多个web应用Context;Context元素是代表一个在虚拟主机上运行的Web应用。Pleasenotethatfortomcat5.x,unliketomcat4.x,itisNOTrecommendedtoplaceContextelementsdirectlyintheserver.xmlfile.Instead,putthemintheMETA-INF/context.xmldirectoryofyourWARfileortheconfdirectoryasdescribedabove.手把手教程版权所有:尚学堂科技Servlet尚学堂什么是MIMEMultipurposInternetMailExtension指明白传送内容的格式最早用于邮件附件传递文件的头信息MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。手把手教程版权所有:尚学堂科技Servlet尚学堂server.xml的层次结构Serverport=8005shutdown=SHUTDOWNdebug=0Servicename=Tomcat-StandaloneConnectorclassName=HttpConnectorport=80/Enginename=StandalonedefaultHost=localhostdebug=0LoggerclassName=FileLoggerprefix=catalina_log./RealmclassName=MemoryRealm/Hostname=localhostdebug=0appBase=webappsunpackWARs=trueValveclassName=AccessLogValvedirectory=logs/LoggerclassName=FileLoggerrefix=localhost_log./Contextpath=docBase=ROOT/Contextpath=/managerdocBase=managerprivileged=true/Contextpath=/myappdocBase=tdebug=0reloadable=true//Host/Engine/Service/Server手把手教程版权所有:尚学堂科技Servlet尚学堂HTTP协议基础HTTP(HypertextTransferProtocol,超文本传输协议)HTTP是以明文方式发送数据的用于从服务器传输超文本到本地浏览器的传输协议。HTTP协议是以TCP/IP为基础的高层协议。现在广泛使用的版本HTTP/1.1支持持续连接100:Continue101:witchingProtocols200:OK201:Created202:Accepted203:Non-AuthoritativeInformation204:NoContent205:ResetContent206:PartialContent300:MultipleChoices301:MovedPermanently302:Found303:SeeOther304:NotModified305:UseProxy307:TemporaryRedirect400:BadRequest401:Unauthorized402:PaymentRequired403:Forbidden404:NotFound405:MethodNotAllowed406:NotAcceptable407:ProxyAuthenticationRequired408:RequestTime-out409:Conflict410:Gone411:LengthRequired412:PreconditionFailed413:RequestEntityTooLarge414:Request-URITooLarge415:UnsupportedMediaType416:Requestedrangenotsatisfiable417:ExpectationFailed500:InternalServerError501:NotImplemented502:BadGateway503:ServiceUnavailable504:GatewayTime-out505:HTTPVersionnotsupportedGET请求获取Request-URI所标识的资源POST在Request-URI所标识的资源后附加新的数据HEAD请求获取由Request-URI所标识的资源的响应消息报头PUT请求服务器存储一个资源,并用Request-URI作为其标识DELETE请求服务器删除Request-URI所标识的资源TRACE请求服务器回送收到的请求信息,主要用于测试或诊断CONNECT保留将来使用OPTIONS请求查询服务器的性能,或者查询与资源相关的选项和需求手把手教程版权所有:尚学堂科技Servlet尚学堂HTTP协议基础GET/latest.htmlHTTP/1.1Host:…{空行}POST/servlet/servHTTP/1.1Host::32username=billgates&password=heheHTTP/1.1200OKDate:Fri,31Dec200310:23:34GMTContent-Type:text/htmlContent-length:280html……/html服务器端反馈的内容importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.net.Socket;publicclassTestHTTP{publicstaticvoidmain(String[]args)throwsException{Sockets=newSocket();BufferedWriterbw=newBufferedWriter(newOutputStreamWriter(s.getOutputStream()));bw.write(“OPTIONS(此处写传输方式GET/POST)/HTTP/1.1);bw.newLine();bw.write(Host:);bw.newLine();bw.write(“Content-Type:text/html”);指明访问资源类型bw.newLine();bw.newLine();空行代表请求结束bw.flush();清空缓冲BufferedReaderbr=newBufferedReader(newInputStreamReader(s.getInputStream()));Stringstr=null;while((str=br.readLine())!=null){System.out.println(str);}bw.close();br.close();s.close();}}资源名称(/代表根目录)一个IP配多个域名手把手教程版权所有:尚学堂科技Servlet尚学堂WebApplication的概念WebApplicationNameWEB-INF静态文件直接放在这,就可访问web.xml该webapp的配置文件lib该webapp用到的库文件classes存放编译好的servletMETA-INF存放该webapp的上下文信息,符合J2EE标准WebApplication可以直接放在webapp下面也可以通过配置文件指定到其他目录host里面Contextpath=“/虚拟路径名“docBase=”目录位置debug=0reloadable=true/手把手教程版权所有