传智java散结构即客户端服务器Client Server例如QQ就_第1页
传智java散结构即客户端服务器Client Server例如QQ就_第2页
传智java散结构即客户端服务器Client Server例如QQ就_第3页
传智java散结构即客户端服务器Client Server例如QQ就_第4页
传智java散结构即客户端服务器Client Server例如QQ就_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

day08WebHttpC/SC/S结构即客户端/服务器(/ServerQQC/S结构的。我们每个人电脑上都需要QQ的客户端,客户端软件向服务器端软件发送请求,服务器端给客户端返回响应。C/S结构的客户端已经好多了,可以提示用户更新,用户只需要点击更新就可以了。最早时需要用户自己去官网上最B/S(rowser/SererB/SOK。当软件需要更新时,开发人员只需要关心服务器端就行。就像你在浏览器中时,发现的主页发生了。如果有其他用户登录页可以中包含变量,数据的变化就不是问题了。但页只能在服务器端使用,客户端浏览器只能识别静态网页。所以,如果用户请求的是页,那么就需要服务器先把pagesdo(struts1但页也可以成htm和html如果只有Web服务器还不行,我们还需要JSP/Servlet容器,即可以把页转换成静态网页JSP/ServletJSP/Servlet的生命周期!JavaWeb领域中说的服务器都是即为WebJSP/Servlet容器的东西。也JavaWebomcat(ApcheJBoss(Redhat红帽GlassFish(Oaleesin(auchoeblogc(Orcaeebsphre(IMTomcatJDKJavaWebJDK。我们现在使用的TomcatTomcat6或Tomcat7。Tomcat6Servlet2.5; 或者是 IP地址,localhost如果其他机器需要,那么要把localhost使用本机IP地址替换假如我的IP是00,要我机器上的Tomcat,那么需要在的浏览器中访问:Tomcat只需要解压就能使用,无需安装,这样一台电脑上可以安装多个Tomcat。Tomcat有点不同,你需要先去配置环境变量:启动:在Tomcat中找到startup.bat停止:在TomcatWeb 是用来存放Java项目的,每个文件夹都是一个项目。默认这个 有了四个项目,都是tomcat自带的。其中ROOT就是我们测试Tomcat时的Tomcat主项目。 o项目 结|-o是项 下必须有一个名为WEB-INF ,web.xml 是受保 WEB-INF下还会存在lib和classes,lib下存放项目所需的jar文件 class文件,但这两 web.xml文件中只需要给出XML文档,以及根元素。当然,根元素中包含很多与名称空间相关属性,背下来是有难度的,不过我们可以去webapps 当然,以后我们可能会使用Eclipsewebapps下,这就::8080:端;MyEclipseMyEclipseMyEclipse配置服务器后,就可以使用MyEclipse来启动和停止服务器了。当然,你需要先(omcatMyEclipse自带Tomcat 弹出吃MyEclipse启动MyEclipseWebMyEclipseWebwebapps装起来,copywebapps下。MyEclipsecopywebapps下,这与我们自己在webappsMyEcpliseMyEclipseTomcatwebappsJava源代码!只包含项目中WebRoot下的内容!项目部署后,启动TomcatXMLomcat TomcatTomcatbin:该下存放的是二进制可执行文件,如果是安装版,那么这个下会有两个exe动Tomcat,但需要先配置JAVA_HOME和CATALINA_HOME两个环境变量才能启动,shutdawn.batTomcat;conf:这是一个非常非常重要的,这个及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在TomcatTomcatManager页面了;text/html类型的,这就是一个MIME类型。客户MIMEhtml弹出窗口才对。MIME就是用来说明文档的内容是什么类型的!它放到这 中,当然也可以把项目依赖的jar文件放到这 中的 中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时temp:存放Tomcat的临时文件,这 下的东西可以在停止Tomcat后删除webapps:存放web项目的 ,那么都是tomcat自带的。项目。其中ROOT是一个特殊的项目,在地址栏中没有 时,对应的就是ROOT项目。,进入示例项目。其中examples就是项目名,即文件夹的名字。以把这个下的内容删除,再次运行时会生再次生成work。当客户端用户一个javaclass文件都会存放到这个下。LICENSE:证你应该已经发现,ROOT项目时无需给出项目名,其实localhost是一个主机名,每个主机都会对应一个项目空间,localhostTomcatwebapps,每个项目空间都可以有一个名为ROOT项目,这个ROOT项目被时无需给出项目名称。 在 这个东西基本没什么用,因为它是用来管理Tomcat的,而我们都是直接在Tomcat 删除修改文件来管理Tomcat,它个东东只有在本机不是Tomcat主机时才会有用,即管理! 名。这个也应该可以掌握了!还有就是JavaEEWeb项目的workwebapps下的项目在运work下的文件。这个下的东西可以删除,然后再次运行时还<Server>--<Listener>--<Service>--<Connector>--<Engine>--<Host>--<Context>--在项目时就不用再给出端了,因为80是HTTP默认端口,即不给出时就是表示使用80端口,例如:。已经了<Connector>是接待员,它不能处理业务,它会把用户带到<Engine>这里来处理。例如<Hostname=”localhost”appBase=”webapps”>localhost,这个主机的项目存放在webapps中。这个项目下的主机时,需要使用localhost主机名,项目都存webapps用户发出一个请求接待人员(Conector)发现是http/1.18080端口,就把请求接收,然后交给引擎(Engine)。引擎通过请求中的主机名localhost找到虚拟主机(Host)appBase(webapps)中去找项目。在webapps中找到o项目,再到oindex.jsphttp默认端为80,也就是说在URL中不给出端时就表示使用80端口。当然你也可Oracle默认端MySQL默认端WebLogic默认端端必须是0~65535之间的整数,OS会使用0~1023这些端,所以你最好去使查看端口是否被占用:cmdnetstat你想不想这样来Tomcat的首页:htt DNS,到C:\WINDOWS\system32\drivers\etc\hosts127.0.01; 的Host元素DNS当然,你也可以把appBase的值修改为其 中去。假如你把appBase=”F:\myapps”,用户 o时,服务器会 o项目注意,其他人不能通过htt /o来我的服务器,因为的电脑不能解析htt 是什么你可能会想在自己的C:\WINDOWS\system32\drivers\etc\hosts文件中添加 成这个IP地址,而这个地址表示的是本机!所以你需要把修改为我的IP就可了!但这么做没什么意思,因为每个人想通过htt 去修改自己的C:\WINDOWS\system32\drivers\etc\hosts文件,只是而已,不用当真!第一种我们已经学过了,就是把项目放到webapps 下,即localhost主机名对应的项目空间 <Host>元素中添加<Context>元素,然后指定<Context>pathdocBasepath指定abc。docBase指定你的项目的真实存放的路径。 在F:\o你找到server.xml中的<Host>元素给其添加子元素<Context>,注意,一旦给出了docBase属性的值后,localhost的abc项目时,就不会再去webapps目录下去查找项目,而是通过docBase的值来锁定项目位置,即F:\o1。注意,项目的URL:,而不是 下找到catalina\localhost 下创建一个XML文件,这个名称就是虚拟路径名。例如创建的XML文件名为def.xml,然后在def.xml文件中添加如下内容path属性,因为已经不用给出了,pathXML文件的名称决定。也就是说path的值为def。URL为:。HTTPHTTPHTTPHTTPHTTP响应协议。如果你还HTTP去看时,验票人员与看的观众就是无状态连接。当验票人员验过你的票之后,你进入了观影厅,然后从后头出来了,再从正门进入时,验票人员已经不在记得你,他会要求你出示票。内容(html)html,其实这时已经的呢?其这不是TP状态而是服务器端的码要处理会话的问题,这也是我后面的一个课题!但一定要相,TP是无状态的如果没有会的话HTTP1.0HTTP现在有两个版本,HTTP1.0HTTP1.1。FireFoxFirebugGET////GET Host:User-Agent:Mozilla/5.0(WindowsNT5.1;rv:5.0)Accept: Accept-Encoding:gzip,deflate:User-Agent:Mozilla/5.0(WindowsNT5.1;rv:5.0)Gecko/ 相关的信息。有些会显示用户的系统版本和浏览器版本信息,这都是通过获取User-Agent头信息而来的; Accept-Encoding:gzipdeflate:支持的压缩格式。数据在网络上传递时,可能服务器会把数:: C0B2DE36D98所以会在请求中把上一次服务器响应中发送过来的在请求中一并发送去过;这个JSESSIONID,然后在讲会话是讲究它!POST下面是通过POST////POST/ Host:localhostUser-Agent:Mozilla/5.0(WindowsNT5.1;rv:5.0)Accept: Accept-Encoding:gzip,deflateConnection:keep-alive: Content-Length:14// 提供资源之前可以去判断请求是从哪个页面发送过来的,如果不是从本发送过来的,UTF-8编码数据;url编码的数据都是以“%16StringStringsURLEncoder.encode("大家好UTF-8");s=URLDecoder.decode(s,"UTF- //////Server:Apache-Content-Length:777Date:Sat,09Feb201218:30:52//HTML<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<base <title>MyJSP'index.jsp'starting "<metahttp-equiv="description"content="ThisismyThisismyJSPpage.<inputtype="submit"HTTP/1.1200OKHTTP1.1200,表示请求成功,OK是对状态码的:: :; ;Date:Sat09Feb201218:30:52GMT8404notfound200ok只有表单才可能是POSTPOST有正文,即表单内容:username=zhangSan&password=123GET没有正文,但是空行可是有的!HTTP/1.1HTML!JavaHTTPJavaHTTPJavaSocket对象的输出流对象,向服务器发送请求信息;Socket对象的输入流对象,接收服务器的响应信息;publicstaticvoidmain(String[]args)throwsUnknownHostException,{Sockets=newSocket("",Writerout=newOutputStreamWriter(s.getOutputStream());Stringstr=getMsg(); Stringstr=postMsg();BufferedReaderreader=newBufferedReader(newStringline=while((line=reader.readLine())!=null){}}publicstaticStringgetMsg()////"GET/ o/index.jspHTTP/1.1\r\nhost::8080\r\n\r\n"StringBuildersb=newStringBuilder();sb.append("GET/ o/index.jspHTTP/1.1").append("\r\n");returnsb.toString();}publicstaticStringpostMsg(){StringBuildersb=newStringBuilder();sb.append("POST/ o/index.jspHTTP/1.1").append("\r\n");sb.append("Accept:image/gif,image/jpeg,image/pjpeg,image/pjpeg,application/x-shockwave-flash,application/x-ms-application,application/x-ms-xbap, ,application/xaml+xml,application/vnd.ms-excel, sb.append("User-Agent:Mozilla/4.0(compatible;MSIE8.0;WindowsNT5.1;Trident/4.0;.NETCLR2.0.50727;.NETCLR3.0.4506.2152;.NETCLRsb.append("Content-Type:application/x-www-form-urlencoded").append("\r\n");sb.append("Accept-Encoding:gzip,deflate").append("\r\n");sb.append("Host:localhost:80").append("\r\n");sb.append("Content-Length:36").append("\r\n");sb.append("Connection:Keep-Alive").append("\r\n");sb.append("Cache-Control:sb.append("Cache-Control:no-cache").append("\r\n"); return}JSPJSPrequest,它表示请求对象,它封装了所有与请求信息。request.getHeader(Stringhead)方法可以用来获取指定的头信息。JSP在JSP中有一个对象叫response,它表示响应对象,可以使用它向客户端添加响应头信息。response.setHeader("Refresh","5;URL=ht 例如其中username为参数request.getParameter(“username”)usernameqdmmy6。request.getParameter(“password”)password123。页面中文,GETPOSTtxt和js这些文件的编码最为隐匿,我们先来处理它(当然这个东西今天我们还用不上txtjs编码问题:在MyEclipseUTF-htmljsp编码问题:先把已经创建的文件编码修改了!自己到页面中去找到与编码相关的地UTF-8。然后再去处理今后创建的网页使用的默认编码。修改以创建jsp为将来创建的新网页文件设置默认编码:首选项→MyEclipse→FilesandEditors→JSP→修改编码html、xmlJSP为例:POST编码处理POST编码就是把通过POSTGET编码处理Strings=snewString(s.getBytes("ISO-8859-1UTF-8");//先用ISO-8859-1UTF-8Strings=snewString(s.getBytes("ISO-8859-1UTF-8");//先用ISO-8859-1UTF-8OK了。打印URLURLLocator,URIIdentifier, 也是一个URI,但不是URL!你大可以把URL类看成是类,它的构造器需要一个String为参数URLurl=newURL(“URL类与字符串没有什么区别。当然不可能没有区别,URL类的构造器会校URLopenURLConnection()URLConnectionrmqj的一个抽象类子类的实例对象,表示一个URLConnection,这个连接对象可以用来与指定的通讯。URLConnectionURLInputStreamin=conn.getInputStream();OutputStreamout=conn.getOutputStream();conn.setDoOutput(true)方法!URLConnectionconn=url.openConnection();OutpuptStreamout=HttpURLConnectionURLConnectionHTTP协议的服务器通讯。HTTP协议相关的方法。URLConnectionconn=HttpURLConnectionhttpConn=GET////创建URL对象 URLurl=new //HttpURLConnectionhttpCon=//设置请求方法为GETintcode=如果响应码是if(code==200)BufferedReaderbr=newBufferedReader(new//StringStringBuildersb=newStringBuilder();while((line=br.readLine())!=null){}}POST////创建URL对象,注 URLurl=newHttpURLConnectionhttpCon=//设置请求方法为POST//////PrintStreamout=new// intcode=if(code==200)BufferedReaderbr=newBufferedReader(newStringStringBuildersb=newStringBuilder();while((line=br.readLine())!=null){}}HttpURLConnection//URLurl//URLurl=newHttpURLConnectionhttpCon=//设置请求方法为GETintcode=if(code==200)InputStreamin=new//OutputStreamout=newBufferedOutputStream(newbyte[]buff=newbyte[2048];intlen;while((len=in.read(buff))!=-1){out.write(buff,0,len

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论