1课程回顾web入门1)web服务软件作用:把本地资源共享给外部访问2)tomcat服务器基本操作:启动:%tomcat%/bin/startup.bat关闭:%tomcat%/bin/shutdown.bat访问tomcat主页:)web应用目录结构|-WebRoot根目录|-静态资源(html+css+javascript+images+xml)可以直接被浏览器访问到的|-WEB-INF不可以直接被浏览器访问到|-classes存放class字节码文件|-lib存放jar包文件web.xmlweb应用的配置文件,配置servlet4)Servlet技术:用java语言开发动态资源的技术开发一个Servlet程序的步骤:1)创建一个java类,继承HttpServlet类2)重写HttpServlet类的doGet方法3)把写好的servlet程序交给tomcat服务器运行!!!!3.1把编译好的servlet的class文件拷贝到tomcat的一个web应用中。(web应用的WEB-INF/classes目录下)3.2在当前web应用的web.xml文件中配置servlet!--servlet配置--servletservlet-nameHelloServlet/servlet-nameservlet-classd_servlet.HelloServlet/servlet-class/servlet!--servlet的映射配置--servlet-mappingservlet-nameHelloServlet/servlet-nameurl-pattern/hello/url-pattern/servlet-mapping4)访问servlet协议入门2.1什么是http协议http协议:对浏览器客户端和服务器端之间数据传输的格式规范2.2查看http协议的工具1)使用火狐的firebug插件(右键-firebug-网络)2)使用谷歌的“审查元素”3)使用系统自带的telnet工具(远程访问工具)a)telnetlocalhost8080访问tomcat服务器b)ctrl+]回车可以看到回显c)输入请求内容GET/day09/helloHTTP/1.1Host:localhost:8080d)回车,即可查看到服务器响应信息。2.3http协议内容请求(浏览器-》服务器)GET/day09/helloHTTP/1.1Host:localhost:8080User-Agent:Mozilla/5.0(WindowsNT6.1;WOW64;rv:35.0)Gecko/20100101Firefox/35.0Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language:zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3Accept-Encoding:gzip,deflateConnection:keep-alive响应(服务器-》浏览器)HTTP/1.1200OKServer:Apache-Coyote/1.1Content-Length:24Date:Fri,30Jan201501:54:57GMTthisishelloservlet!!!3Http请求GET/day09/helloHTTP/1.1-请求行Host:localhost:8080--请求头(多个key-value对象)User-Agent:Mozilla/5.0(WindowsNT6.1;WOW64;rv:35.0)Gecko/20100101Firefox/35.0Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language:zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3Accept-Encoding:gzip,deflateConnection:keep-alive--一个空行name=eric&password=123456--(可选)实体内容3.1请求行GET/day09/helloHTTP/1.1#http协议版本http1.0:当前浏览器客户端与服务器端建立连接之后,只能发送一次请求,一次请求之后连接关闭。http1.1:当前浏览器客户端与服务器端建立连接之后,可以在一次连接中发送多次请求。(基本都使用1.1)#请求资源URL:统一资源定位符。。只能定位互联网资源。是URI的子集。URI:统一资源标记符。/day09/hello。用于标记任何资源。可以是本地文件系统,局域网的资源(//192.168.14.10/myweb/index.html),可以是互联网。#请求方式常见的请求方式:GET、POST、HEAD、TRACE、PUT、CONNECT、DELETE常用的请求方式:GET和POST表单提交:formaction=提交地址method=GET/POSTformGETvsPOST区别1)GET方式提交a)地址栏(URI)会跟上参数数据。以?开头,多个参数之间以&分割。GET/day09/testMethod.html?name=eric&password=123456HTTP/1.1Host:localhost:8080User-Agent:Mozilla/5.0(WindowsNT6.1;WOW64;rv:35.0)Gecko/20100101Firefox/35.0Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language:zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3Accept-Encoding:gzip,deflateReferer::keep-aliveb)GET提交参数数据有限制,不超过1KB。c)GET方式不适合提交敏感密码。d)注意:浏览器直接访问的请求,默认提交方式是GET方式2)POST方式提交a)参数不会跟着URI后面。参数而是跟在请求的实体内容中。没有?开头,多个参数之间以&分割。POST/day09/testMethod.htmlHTTP/1.1Host:localhost:8080User-Agent:Mozilla/5.0(WindowsNT6.1;WOW64;rv:35.0)Gecko/20100101Firefox/35.0Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language:zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3Accept-Encoding:gzip,deflateReferer::keep-alivename=eric&password=123456b)POST提交的参数数据没有限制。c)POST方式提交敏感数据。3.2请求头Accept:text/html,image/*--浏览器接受的数据类型Accept-Charset:ISO-8859-1--浏览器接受的编码格式Accept-Encoding:gzip,compress--浏览器接受的数据压缩格式Accept-Language:en-us,zh---浏览器接受的语言Host:(必须的)当前请求访问的目标地址(主机:端口)If-Modified-Since:Tue,11Jul200018:23:51GMT--浏览器最后的缓存时间Referer:当前请求来自于哪里User-Agent:Mozilla/4.0(compatible;MSIE5.5;WindowsNT5.0)--浏览器类型Cookie:name=eric--浏览器保存的cookie信息Connection:close/Keep-Alive--浏览器跟服务器连接状态。close:连接关闭keep-alive:保持连接。Date:Tue,11Jul200018:23:51GMT--请求发出的时间3.3实体内容只有POST提交的参数会放到实体内容中3.4HttpServletRequest对象HttpServletRequest对象作用是用于获取请求数据。1.tomcat服务器接收到浏览器发送的请求数据,然后封装到HttpServetRequest对象2.tomcat服务器调用doGet方法,然后把request对象传入到servlet中。核心的API:请求行:request.getMethod();请求方式request.getRequetURI()/request.getRequetURL()请求资源request.getProtocol()请求http协议版本请求头:request.getHeader(名称)根据请求头获取请求值request.getHeaderNames()获取所有的请求头名称实体内容:request.getInputStream()获取实体内容数据(注意:POST方式)案例:publicclassRequestDemo1extendsHttpServlet{/***1)tomcat服务器接收到浏览器发送的请求数据,然后封装到HttpServetRequest对象*2)tomcat服务器调用doGet方法,然后把request对象传入到servlet中。*/publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{/***3)从request对象取出请求数据。*///t1(request);//t2(request);}//为了接收POST方式提交的请求@OverrideprotectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresp)throwsServletException,IOException{/***3.3请求的实体内容*/InputStreamin=request.getInputStream();//得到实体内容byte[]buf=newbyte[1024];intlen=0;while((len=in.read(buf))!=-1){Stringstr=newString(buf,0,len);System.out.println(str);}}privatevoidt2(HttpServletRequestrequest){/***3.2请求头*/Stringhost=request.getHeader(Host);//根据头名称的到头的内容System.out.println(host);//遍历所有请求头EnumerationStringenums=request.getHeaderNames();//得到所有的请求头名称列表while(enums.hasMoreElements()){//判断