WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。javaweb:使用java技术开发web页面。供浏览器访问的项目
Internet上供外界访问的Web资源分为:
静态web资源开发技术:Html、CSS、javaScript
常用动态web资源开发技术:
Web服务器的作用是接收客户端的请求,给客户端作出响应。学习web开发,需要先安装一台web服务器,然后再在web服务器中开发相应的web资源,供用户使用浏览器访问。
注意:这里所说的服务器不是指服务器硬件资源,而是指服务器软件。
实验说明:
这说明什么问题?
WebLogic是BEA公司的产品,是目前应用最广泛的Web服务器,支持J2EE规范,而且不断的完善以适应新的开发要求,启动界面如图
另一个常用的Web服务器是IBM公司的WebSphere,支持J2EE规范,启动界面如图
在小型的应用系统或者有特殊需要的系统中,可以使用一个免费的Web服务器:Tomcat,该服务器支持全部JSP以及Servlet规范,启动界面如图
Tomcat服务器由Apache提供,开源免费。由于Sun和其他公司参与到了Tomcat的开发中,所以最新的JSP/Servlet规范总是能在Tomcat中体现出来。当前最新版本是Tomcat8,我们课程中使用Tomcat7。Tomcat7支持Servlet3.0,而Tomcat6只支持Servlet2.5!
java的大方向就是JavaEE,JavaEE不仅仅是socket编程,具体包括13中核心技术。
JAVAEE的核心API与组件
JAVAEE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对JAVAEE中的13种技术规范进行简单的描述(限于篇幅,这里只进行简单的描述):
JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDCB对数据库的访问也具有平台无关性。
JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,或应用服务器中的对象。
JAVAEE技术之所以赢得媒体广泛重视的原因之一就是EJB。它们提供了一个框架来开发和实施分布式商务逻辑,由此很显著地简化了具有可伸缩性和高度复杂的企业级应用的开发。EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用。容器负责提供公用的服务,例如目录服务、事务管理、安全性、资源缓冲池以及容错性。但这里值得注意的是,EJB并不是实现JAVAEE的唯一途径。正是由于JAVAEE的开放性,使得有的厂商能够以一种和EJB平行的方式来达到同样的目的。
正如其名字所表示的那样,RMI协议调用远程对象上方法。它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。
在Java IDL的支持下,开发人员可以将Java和CORBA集成在一起。他们可以创建Java对象并使之可在CORBA ORB中展开, 或者他们还可以创建Java类并作为和其它ORB一起展开的CORBA对象的客户。后一种方法提供了另外一种途径,通过它Java可以被用于将你的新的应用和旧的系统相集成。
JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
Servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行,这和CGI Perl脚本很相似。Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码,而servlets全部由Java写成并且生成HTML。
XML是一种可以用来定义其它标记语言的语言。它被用来在不同的商务过程中共享数据。 XML的发展和Java是相互独立的,但是,它和Java具有的相同目标正是平台独立性。通过将Java和XML的组合,您可以得到一个完美的具有平台独立性的解决方案。
JMS是用于和面向消息的中间件相互通信的应用程序接口(API)。它既支持点对点的域,有支持发布/订阅(publish/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。JMS还提供了另 一种方式来对您的应用与旧的后台系统相集成。
JTA定义了一种标准的API,应用系统由此可以访问各种事务监控。
JTS是CORBA OTS事务监控的基本的实现。JTS规定了事务管理器的实现方式。该事务管理器是在高层支持Java Transaction API (JTA)规范,并且在较底层实现OMG OTS specification的Java映像。JTS事务管理器为应用服务器、资源管理器、独立的应用以及通信资源管理器提供了事务服务。
JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类。不仅支持SMTP服务器,也支持IMAP服务器。
JavaMail利用JAF来处理MIME编码的邮件附件。MIME的字节流可以被转换成Java对象,或者转换自Java对象。大多数应用都可以不需要直接使用JAF
下载地址:http://tomcat.apache.org/
安装目录不能包含中文和空格
JAVA_HOME环境变量指定Tomcat运行时所要用的jdk所在的位置,注意,配到目录就行了,不用指定到bin
端口占用问题:netstat -ano命令查看端口占用信息
Catalina_Home环境变量:startup.bat启动哪个tomcat由此环境变量指定,如果不配置则启动当前tomcat,推荐不要配置此环境变量
在启动Tomcat之前,我们必须要配置环境变量:
startup.bat会调用catalina.bat,而catalina.bat会调用setclasspath.bat,setclasspath.bat会使用JAVA_HOME环境变量,所以我们必须在启动Tomcat之前把JAVA_HOME配置正确。
启动问题:点击startup.bat后窗口一闪即消失:检查JAVA_HOME环境变量配置是否正确;
打开%CATALANA_HOME%\conf\server.xml文件
http默认端口号为80,也就是说在URL中不给出端口号时就表示使用80端口。当然你也可以修改为其它端口号。
当把端口号修改为80后,在浏览器中只需要输入:http://localhost就可以访问Tomcat主页了
一个真实主机可以运行多个网站,对于浏览器来说访问这些网站感觉起来就像这些网站都运行在自己的独立主机中一样,所以,我们可以说这里的每一个网站都运行在一个虚拟主机上,一个网站就是一个虚拟主机
如需在WEB服务器中配置一个网站,需使用Host元素进行配置
在server.xml中
只在servlet.xml中配置Hosts,还不能是其他人通过虚拟主机名访问网站,还需要在DNS服务器上注册一把,我们可以使用hosts文件模拟这个过程
默认虚拟主机:在配置多个虚拟主机的情况下,如果浏览器使用ip地址直接访问网站时,该使用哪个虚拟主机响应呢?可以在
<Host name=”site1” appBase=”c:\app”>Host>
配置的主机(网站)要想被外部访问,必须在DNS服务器或windows系统中注册
由于浏览器访问地址时,需要将地址翻译成对应的ip才能找到服务器,这其中翻译的过程是由dns服务器来实现的.我们在做实验的时候没有办法去修改dns服务器,此时可以使用hosts文件模拟dns的功能,从而完成实验
缺省虚拟主机:如果来访者是通过ip来访问,这个时候服务器无法辨别当前要访问的是哪台虚拟主机中的资源,此时访问缺省虚拟主机。缺省虚拟主机可以在server.xml中engin标签上通过defaultHost属性进行配置
WEB应用程序指供浏览器访问的程序,通常也简称为web应用,是为了提供某一特定功能而按照一定方式组织起来的web资源的组合。
一个web应用由多个静态web资源和动态web资源组成,如
Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射。
web资源不能直接交给虚拟主机,需要按照功能组织用目录成一个web应用再交给虚拟主机管理
静态资源和JSP文件都可以直接放置在web应用的目录下,直接放在web应用下的内容,浏览器可以直接访问到
WEB-INF:可以没有,但是最好有,如果有则一定要保证他的目录结构是完整的。放置在WEB-INF目录下的所有资源浏览器没有办法直接进行访问
classes:动态web资源运行时的class文件要放在这个目录下
lib:动态web资源运行时所依赖的jar包要放在这个目录下
web.xml:整个web应用的配置文件,配置主页/Servlet的映射/过滤器监听器的配置都需要依赖这个文件进行
在server.xml的
在tomcat/conf/引擎名/虚拟主机名 之下建立一个.xml文件,其中文件名用来指定虚拟路径,如果是多级的用#代替/表示,文件中配置
直接将web应用放置到虚拟主机对应的目录下,如果目录名起为ROOT则此web应用为默认web应用
如果三处都配置默认,web应用则server.xml > config/…/xx.xml > webapps
讲到这个地方,很多同学就没劲了,为什么呢?搞半天就是做网站哟,没点意思。所以这里特意讲下web开发的前景,免得有些同学像菜鸟一样,以为自己很懂,其实啥都不懂,说些傻话。要讲web开发前景,首先要强调一点,你学javaweb,开发的是程序,别人通过浏览器,访问的是你写的程序,程序为用户完成服务后,再把结果通过写到浏览器中显示,思想不要停留在90年代,以为通过浏览器看到的都是网页。要注意,将来网站都是用来提供服务的,像你们思想中的网页,只有网站提供的一种服务而已。
再者,要讲web开发前景,就不得不提软件开发的两种架构之争了,一种是c/s架构,一种是b/s架构。
何为b/s架构呢?(浏览器/服务器架构)就是指数据和程序都在服务器端,客户端通过浏览器访问程序并获取数据。这种架构的最大好处就是服务器端程序一旦修改,所有客户端访问的都最新的程序,开发人员只管维护服务器就行了,不用管客户端维护的事。这种架构的最大缺点就是,由于客户端都是使用浏览器来访问服务器程序的,数据最终显示在浏览器中,浏览器有多强,数据就能显示成什么样式,数据的显示样式最终由浏览器决定。由于这种特性,所以b/s架构很少用来开发一些对显示有特殊要求的程序,例如游戏,现在的浏览器很难做到把数据显示成一个人,拿着一把刀,到处找人PK,并且还不卡。
何为c/s架构呢?就是指程序运行在客户机上,数据在服务器上。这种架构有一个很大的毛病,就是程序一旦修改,需要更新所有的客户机程序,客户机多,维护的工作量相当恐怖。这种架构的优点是:由于数据的计算在客户机上,服务器的压力小,并且由于数据的显示也由程序员自己编写gui程序完成,显示不受限制。所以c/s架构适合用于开发像游戏这样的程序。
但是,随着网络带宽的不断提升,云计算概念的提出,浏览器只要足够强大,c/s架构立马就会被淘汰,不仅c/s架构会被淘汰,软件最终都会消失、操作系统都可以没有,最终将会是b/s架构的天下,也就是浏览器+搜索引擎的天下。所有现在桌面软件提供的功能,最后都由网站提供,也就是说,将来打开电脑就是一个浏览器,想要什么服务,通过搜索引擎一找,就可以在网上找到相应的服务,用就是了。所以web开发人员是现在最流行的岗位。