通信模式 * C/S (client、server) ,客户端与服务器。要求客户端必须安装。例如:QQ、网络游戏 * B/S (Browser、Server),浏览器与服务器。就是通过浏览器查看网页,不需要下载客户端 优缺点对比: B/S只要有操作系统和浏览器就行,与操作系统平台无关,也无需专门安装其它软件 B/S对计算机配置要求较低,且升级方便,服务器升级即可,浏览器查看的就是最新的版本 C/S安全性较高,响应速度快,且客户端软件使用起来更方便 * web开发就是指网页开发,即B/S结构 * web采用的是HTTP协议,无状态传输 即一次传输完成之后,浏览器与服务器就不会存在任何关系 有请求才有响应, 服务器不能主动推送消息 URL * URL :统一资源定位符,路径必须是完整。 * URI :统一资源标识符,标记,有可能不完整。URI是URL的子集。 * 格式: 协议://域名或IP:端口/资源路径 协议 http / ftp / svn / https 等 域名或IP IP --> 用于在全球标识每一台计算机。IPv4 (0-255.0.0.0), IPv6 本机IP:127.0.0.1 局域网IP:192.168.3.100 外网IP:202.123.34.45 域名 --> 由于IP不便于记忆,所以出现了域名,域名在使用前会先去DNS服务器查询域名对应的IP,然后再发送请求 本地域名:localhost 外网域名:www.itcast.cn 注意:localhost 与 127.0.0.1存在对应关系 DNS,域名解析服务 端口 端口范围:0-65535 , 一般0-1024不建议使用,系统预留 一个程序可以占用多个端口,但一个端口只能被一个程序占用。 http协议默认端口80,如果是80端口可以省略 tomcat端口8080 资源路径 请求的网址,服务器根据不同资源路径做出不同的处理 静态网页和动态网页 动态网页是动态生成的,然后展示给用户. 在一次请求中,服务器处理请求并动态生成相应的网页,不同的用户看到的信息可能不一样, 如网页上登陆后出现的 XXX,欢迎您. XXX对于不同的用户看到的不一样 静态web资源开发技术:Html 常用动态web资源开发技术:JSP/Servlet、ASP、PHP等 常用web服务器(了解) * WebLogic : Oracle公司的产品,是目前应用最广泛的Web服务器,支持J2EE规范(13种核心:Servlet、JSP等),收费 * WebSphere : IBM公司,支持J2EE规范,收费 * Glass Fish : Oracle中型服务器,开源 * tomcat ;apache组织,开源。只支持:Servlet 和 JSP 开发企业级应用介绍(了解) ERP:企业资源计划( Enterprise Resource Planning ),针对物资资源管理(物流)、人力资源管理(人流)、财务资源管理(财流)、信息资源管理(信息流)集成一体化的企业管理软件 CRM:客户关系管理(Customer Relationship Management)是指用计算机自动化分析销售、市场营销、客户服务以及应用支持等流程的软件系统 BPM:业务流程管理(Business Process Management),即,是一套达成企业各种业务环节整合的全面管理模式。 OA:办公自动化(Office Automation)是将现代化办公和计算机网络功能结合起来的一种新型的办公方式。 J2EE的13种核心技术(了解) 一、JDBC(Java Database Connectivity) JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDBC对数据库的访问也具有平台无关性。 二、JNDI(Java Name and Directory Interface) JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,或应用服务器中的对象。 三、EJB(Enterprise JavaBean) J2EE技术之所以赢得媒体广泛重视的原因之一就是EJB。它们提供了一个框架来开发和实施分布式商务逻辑,由此很显著地简化了具有可伸缩性和高度复杂的企业级应用的开发。EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的是,EJB并不是实现J2EE的唯一途径。正是由于J2EE的开放性,使得有的厂商能够以一种和EJB平行的方式来达到同样的目的。 四、RMI(Remote Method Invoke) 调用远程对象上的方法。它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。 五、Java IDL/CORBA 在Java IDL的支持下,开发人员可以将Java和CORBA集成在一起。他们可以创建Java对象并使之可在CORBA ORB中展开,或者他们还可以创建Java类并作为和其它ORB一起展开的CORBA对象的客户。后一种方法提供了另外一种途径,通过它Java可以被用于将你的新的应用和旧的系统相集成。 六、JSP(Java Server Pages) JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。 七、Java Servlet Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和CGI Perl脚本很相似。Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码,而servlets全部由Java写成并且生成HTML。 八、XML(Extensible Markup Language) XML是一种可以用来定义其它标记语言的语言。它被用来在不同的商务过程中共享数据。 XML的发展和Java是相互独立的,但是,它和Java具有的相同目标正是平台独立性。通过将Java和XML的组合,您可以得到一个完美的具有平台独立性的解决方案。 九、JMS(Java Message Service) JMS是用于和面向消息的中间件相互通信的应用程序接口(API)。它既支持点对点的域,又支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。JMS还提供了另 一种方式来对您的应用与旧的后台系统相集成。 十、JTA(Java Transaction Architecture) JTA定义了一种标准的API,应用系统由此可以访问各种事务监控。 十一、JTS(Java Transaction Service): JTS是CORBA OTS事务监控的基本的实现。JTS规定了事务管理器的实现方式。该事务管理器是在高层支持Java Transaction API (JTA)规范,并且在较底层实现OMG OTS specification的Java映像。JTS事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供了事务服务。 十二、JavaMail JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类。不仅支持SMTP服务器,也支持IMAP服务器。 十三、JAF(JavaBeans Activation Framework) JavaMail利用JAF来处理MIME编码的邮件附件。MIME的字节流可以被转换成Java对象,或者转换自Java对象。大多数应用都可以不需要直接使用JAF。 tomcat * 安装 1. 解压apache-tomcat-xxx.zip 2. 配置JAVA_HOME环境变量,指定jdk目录 3. 启动 : %tomcat%/bin/startup.bat 4. 用浏览器访问 : http://localhost:8080 * 常见问题 tomcat的错误信息可在%tomcat%/logs/catalina.xxx.log中查看 问题:打不开startup.bat,窗口闪烁然后消失 报错信息: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program 没有配置环境变量JAVA_HOME,配置一下即可 问题:tomcat启动报错Caused by: java.net.BindException: Address already in use: JVM_Bind <null>:8080 端口被占用 先检查有没有开其他的tomcat 如果没有的话,打开任务管理器,查看进程有没有javaw.exe,有的话结束进程 * 修改端口号 修改文件:%tomcat%/conf/server.xml 主要修改: 原内容:<Connector port="8080" protocol="HTTP/1.1" 修改后:<Connector port="80" protocol="HTTP/1.1" 其他修改: 原内容: <Server port="8005" shutdown="SHUTDOWN"> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 修改后: <Server port="9005" shutdown="SHUTDOWN"> <Connector port="9009" protocol="AJP/1.3" redirectPort="8443" /> 通常指修改最上面的即可,修改的是http协议监听的端口号 如果想同时启动两个tomcat,则要全部修改 * tomcat常用目录 bin 目录:脚本 (tomcat 使用java程序编写) --> day03/soft/tomcat6.zip tomcat源码但可以运行 startup.bat 启动脚本 shutdown.bat 停止脚本 conf 目录:存放配置文件 (config) server.xml ,tomcat主配置文件 tomcat-users.xml ,tomcat用户配置文件 web.xml ,tomcat管理的所有web程序的默认配置文件 lib 目录:所有的jar文件 servlet-api.jar , tomcat支持javaee servlet jsp-api.jar ,tomcat支持javaee jsp logs 目录:日志目录 ,记录运行的运行过程。tomcat每一天记录一组。 catalina.日期.log , 主记录日志文件 temp 目录:临时目录。此目录中的内容可以随时删除。 临时文件的扩展名 tmp webapps 目录 , tomcat用于存放所有的web项目。此目录下一个文件夹就是一个web项目。 work 目录,tomcat用于处理jsp文件目录,此目录中的内容可以删除(关闭tomcat时) * catalina_home环境变量 安装版本的tomcat时,进行CATALINA_HOME配置,作用:无论运行是哪一个tomcat startup.bat ,只会执行指定catalina_home指定的tomcat的startup.bat 注意:一般不配置 * 访问路径(在没有配置虚拟路径和虚拟主机的情况下) http://localhost:8080/ --> %tomcat%/webapps/ROOT 目录 http://localhost:8080/a.html --> %tomcat%/webapps/ROOT/a.html http://localhost:8080/demo --> %tomcat%/webapps/demo 目录 http://localhost:8080/demo/d.html --> %tomcat%/webapps/demo/d.html http://localhost:8080/demo/abc/123.html --> %tomcat%/webapps/demo/abc/123.html * 精简访问路径 1 欢迎页面 默认访问:http://localhost:8080/demo/d.html 配置欢迎页面:在web.xml文件添加 <welcome-file-list> <welcome-file>d.html</welcome-file> </welcome-file-list> 访问:http://localhost:8080/demo/ 2 省略项目名称:将web项目的名称修改ROOT 访问:http://localhost:8080/ 3 修改端口为80 访问:http://localhost 4 hosts文件 配置文件位置:C:\Windows\System32\drivers\etc\hosts 添加内容: 127.0.0.1 www.baidu.com 访问:http://www.baidu.com 在域名解析之前,先查看本地有没有记录(即hosts文件),没有的话再去DNS服务器查询 只能修改自己的机器,对别人的机器无效,以上三个别人访问你的机器都有效 * conf/server.xml说明 示例: <Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Engine> 为引擎 defaultHost属性为默认的虚拟主机 <Host>标签代表虚拟主机 name属性为主机名 appBase属性为虚拟主机的根目录路径 注意:修改server.xml后要重新启动tomcat才能使配置生效 * 配置发布项目存放位置 需要在conf/server.xml进行修改 更改对应<Host>标签中appBase属性的值即可 * 配置虚拟路径 作用: 为一个文件夹设置虚拟的访问路径,这样也可以设置多个根目录(即不必都放在webapps目录下) 第一种配置,需要在conf/server.xml进行修改,注意:必须重启tomcat <Host><Context path="/xxx" docBase="F:\myweb"/> path : URL中访问路径 (浏览器地址栏) docBase : web项目的所在盘符路径 (硬盘位置) 注意:区分大小写 第二种配置,需要conf/Catalina/localhost添加一个xml文件,不需要重启tomcat xml文件的文件名称,将作为path的值 内容: <?xml version='1.0' encoding='utf-8'?> <Context docBase="F:\myweb"/> 注意:Catalina 和 localhost 目录都是配置在conf/server.xml中的,如果改变了配置,则上面的目录结构也会改变 * 设置基于主机名的虚拟主机 作用: 如果通过多个域名访问到同一个tomcat,则tomcat可以根据访问域名的不同,进行不同的操作 通过conf/server.xml进行配置,和别的<Host>同级 <Host name="www.baidu.com" appBase="F:\mywebapps" unpackWARs="true" autoDeploy="true"> </Host> 则访问www.baidu.com会访问到F:\mywebapps下的资源(当然,你得先改变hosts文件) 而访问localhost会访问到webapps下的资源,因为下面这个是默认的 <Host name="localhost" appBase="webapps" 如果域名没有找到匹配项(如直接用ip访问),则会根据<Engine name="Catalina" defaultHost="localhost">中的defalutHost中配置的主机进行处理 * 设置基于端口号的虚拟主机(可以同时监听多个端口) 作用: 使tomcat能够同时监听多个端口,并且根据端口不同可以进行不同的操作 找到<Service name="Catalina">标签,将标签连内容全部复制一份放到下面 如: <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> 修改Service标签的name属性 修改第一个Connector标签的port属性 修改第二个Connector标签的port属性或直接删除那个标签 修改Engine标签的name属性 修改Host标签的appBase属性 如: <Service name="myCatalina"> <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Engine name="Catalina1" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps2" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> </Engine> </Service> 这样可以用80端口进行访问,并且访问的是webapps2文件夹中的内容 同时可以用8080端口进行访问,访问的是webapps文件夹中的内容 * 配置用户权限 作用: 使用户可以在tomcat首页上对tomcat进行操作 给conf/tomcat-users.xml 添加 <role rolename="manager-gui"/> --> 注册角色(权限)(manager-gui是其中一种权限) <user username="账号名" password="密码" roles="manager-gui"/> 然后进入http://localhost:8080中点击Host Manager即可弹出登录界面 登录后可对tomcat进行管理 tomcat,servlet和javaee的版本关系 tomcat版本 servlet/jsp javaee版本 jdk版本 7.0.x 3.0/2.2 6.0 1.6 6.0.x 2.5/2.1 5.0 1.5 解除占用端口(了解) netstat -an 查看哪些端口正在被监听 netstat -anb 查看被监听端口的详细信息 找到端口正在被哪个程序占用,在任务管理器,或计算机右键-->管理-->服务中关闭相应程序即可 使用命令行结束被占用端口上运行的程序 1.取得被占用端口上正在运行程序的进程号(PID号) netstat -ano 记住对应端口上正在运行程序的PID号 2.强制结束进程 taskkill /pid 进程号 /f 例 taskkill /pid 7252 /f MyEclipse配置tomcat Window-->Preferences-->MyEclipse-->Servers-->Tomcate x.x-->选择tomcat根目录,并Enable tomcat中发布的web项目的目录结构 项目文件夹 WEB-INF目录 , 不允许浏览器直接访问 (可以没有) classes 目录,存放字节码文件或源码包中的其它文件。(源文件夹编译后的文件)(对应java 项目的bin目录) lib 目录,存放当前web项目需要jar文件 web项目添加jar之后,不需要build path(java项目,手动创建lib目录,需要build path) web.xml文件 ,当前web项目的配置文件,默认配置在%tomcat%/conf/web.xml中 myeclipse创建的web项目的目录结构 项目 src ,源码 WebRoot ,通过myeclipse发布web项目时,将此目录下的所有内容都拷贝到tomcat下面 (可以在项目--属性中找到并更改配置) WEB-INF classes lib web.xml 发布web项目 手动发布web项目 将web项目的WebRoot下的所有内容拷贝到%tomcat%/webapps文件夹下即可 也可以先WebRoot下的所有内容打成war包,再拷贝到%tomcat%/webapps文件夹下 自动发布的web项目 访问的根路径是创建web项目时填写的Context root URL的值 即项目右键-->Properties-->MyEclipse-->Web下的Web Context-root的值,而不是项目名称 HTTP协议 * 基于TCP协议传输协议。默认端口80,基于请求--响应模式 * telnet模拟浏览器 建立链接:telnet localhost 8080 发送请求: 发送请求前要先按ctrl+],否则不能输入,然后再按回车,进入编辑状态 GET /myweb1/1.html HTTP/1.0 Host:localhost GET /demo/userServlet?username=李凯昊 HTTP/1.1 服务器响应 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Accept-Ranges: bytes ETag: W/"29-1385450900391" Last-Modified: Tue, 26 Nov 2013 07:28:20 GMT Content-Type: text/html Content-Length: 29 Date: Tue, 26 Nov 2013 07:51:23 GMT Connection: close webapps tomcat default a.html 注意:win7 telnet命令默认是不可用的,需要开启一下.步骤: 控制面板-->程序-->打开或关闭Windows功能-->telnet客户端 和 telnet服务器 * http协议版本 HTTP/1.1,一个链接,多个请求,多个响应 HTTP/1.0,一个链接,一次请求,一次响应。 http请求--request * 请求示例: 参数均为username=李凯昊&password=123 get请求 GET /demo/?username=%E6%9D%8E%E5%87%AF%E6%98%8A&password=123 HTTP/1.1 Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, */* Referer: http://localhost:8080/demo/ Accept-Language: zh-CN User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E) Accept-Encoding: gzip, deflate Host: localhost:8080 Connection: Keep-Alive Cookie: JSESSIONID=17AC598659C4FD9316D2E4F2F2C5CCF8 post请求 POST /demo/ HTTP/1.1 Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, */* Referer: http://localhost:8080/demo/ Accept-Language: zh-CN User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E) Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate Host: localhost:8080 Content-Length: 49 Connection: Keep-Alive Cache-Control: no-cache Cookie: JSESSIONID=17AC598659C4FD9316D2E4F2F2C5CCF8 username=%E6%9D%8E%E5%87%AF%E6%98%8A&password=123 注意:超链接也是get请求,参数也放在请求行中,不过参数没有经过url的编码处理 (超链接和手动在地址栏输入一样,但get请求和手动在地址栏输入不一样,会先进行url编码处理) * 格式:请求行、请求头、请求体 * 请求行 例如:GET /myweb1/1.html HTTP/1.1 格式:请求方式 资源路径 协议/版本 请求方式:共7种,常用2种:POST、GET POST,将请求参数添加到请求体中,一般情况看不到。安全,还可以传输大数据 GET,将请求参数追加到URL之后(即参数在请求行中),第一个参数与URL使用?分隔、其他参数与第一个参数使用&分隔。可以在地址栏显示,长度有限1024字符,不安全。 例如:http://192.168.3.100:8080/myweb1/1.html?username=jack&password=1234 * 请求头: Accept: text/html,image/* --支持数据类型 Accept-Charset: ISO-8859-1 --字符集 Accept-Encoding: gzip --支持压缩 Accept-Language:zh-cn --语言环境 Host: www.itcast.com:80 --访问主机 If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT --缓存时间 Referer: http://www.itcast.com/index.jsp --来自哪个页面、防盗链 User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) --浏览器和操作系统信息 Cookie:JSESSIONID=3F56EB28E5E2D25219E0054CABBDDEC7 --cookie信息 Connection: close/Keep-Alive --链接状态 Date: Tue, 11 Jul 2000 18:23:51 GMT --时间 * 请求体: post请求通过请求体传递参数 请求体与请求头之间存在一个空行 http响应--response * 响应示例 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/html;charset=utf-8 Content-Length: 651 Date: Tue, 21 Oct 2014 13:36:26 GMT <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> ... * 格式:响应行、响应头、响应体 * 响应行 例如:HTTP/1.1 200 OK 格式:协议/版本 状态码 状态码对应的描述信息 状态码 1xx 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程 2xx 表示成功接收请求并已完成整个处理过程,常用200 200 正常 3xx 请求已经部分完成,需要进一步完全其他请求,使整个请求全部完成。例如,请求的资源已经移动一个新地址,常用302、307和304 304 请求资源浏览器已经缓存了,并且与服务器的资源相同,需要浏览器读取本地缓存。 302 当前请求已经完成,但需要进一步再一次发送请求,请求到location指定的位置。重定向 4xx 客户端的请求有错误,常用404 404 页面不存在 5xx 服务器端出现错误,常用 500 500 服务器端异常 * 响应头 Location: http://www.it315.org/index.jsp --跳转地址 Server:apache tomcat --服务器型号 Content-Encoding: gzip --数据压缩 Content-Length: 80 --数据长度 Content-Language: zh-cn --语言环境 Content-Type: text/html; charset=GB2312 --数据类型 Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT --最后修改时间 Refresh: 1;url=http://www.it315.org --定时刷新 Content-Disposition: attachment; filename=aaa.zip --下载 Set-Cookie:SS=Q0=5Lb_nQ; path=/search -- 客户端需要存储的cookie Expires: -1 --缓存 Cache-Control: no-cache --缓存 Pragma: no-cache --缓存 Connection: close/Keep-Alive --连接 Date: Tue, 11 Jul 2000 18:23:51 GMT --时间 * 响应体 返回的页面Html代码或其它内容(图片),浏览器将解析html代码,显示页面 响应体与响应行之间有个空行。 * 小应用 设置字符集,处理中文乱码 response.setHeader("content-type","text/html;charset=utf-8"); 重定向 response.setHeader("location","form.html"); response.setStatus(302); 定时刷新页面(秒) response.setHeader("refresh","3"); 指定秒数后跳转到指定页面 response.setHeader("refresh","3;url=form.html");
web入门(tomcat+http)
最新推荐文章于 2024-06-15 19:49:15 发布