Java进阶学习第二天(JavaWeb开发历史、Tomcat、开发动态资源)

一、JavaWeb开发历史

1、1999年6月,Sun公司发布了第二代Java平台(简称为Java2)的3个版本:
① J2SE(Java2 Standard Edition,Java 2平台的标准版,后改名为JavaSE),应用于桌面环境;
② J2EE(Java2 Enterprise Edition,Java 2平台的企业版,后改名为JavaEE),应用于基于Java的应用服务器。
③ J2ME(Java2 Micro Edition,Java2平台的微型版,后改名为JavaME),应用于移动、无线及有限资源的环境;

范围是:J2SE包含于J2EE中,J2ME包含了J2SE的核心类,但新添加了一些专有类应用场合,API的覆盖范围各不相同。
也可以这样理解:
J2SE是基础;压缩一点,再增加一些CLDC等方面的特性就是J2ME;扩充一点,再增加一些EJB等企业应用方面的特性就是J2EE。

2、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。

3、常见的市面上web服务软件
① WebLogic:BEA公司的产品、 收费的、支持JavaEE规范。
② WebSphere:IBM公司的产品、收费的、支持JavaEE规范
③ JBoss:Redhat公司的产品、收费的、支持JavaEE规范
④ Tomcat:开源组织Apache的产品、免费的、支持部分的JavaEE规范(servlet、jsp、jdbc)

二、Tomcat

1 、Tomcat基本使用
① 下载并安装:到Apache Tomcat官网( http://tomcat.apache.org/)下载
② 安装包分为:
◆ 安装版:window(exe、msi)、linux(rmp)
◆ 压缩版:window(rar,zip)、linux(tar,tar.gz)[学习时候使用]
③ 运行Tomcat
◆ 找到%tomcat%/bin/startup.bat ,双击这个文件
◆ 弹出窗口,显示信息(不要关闭窗口)
◆ 打开浏览器,输出以下地址( http://localhost:8080)
◆ 看到一只猫画面,证明软件启动成功!
④ 关闭Tomcat
◆ 找到%tomcat%/bin/shutdown.bat,双击这个文件即可!
◆ 打开浏览器,输出以下地址,会看到“无法连接”(最好先清空浏览器缓存)

2、Tomcat软件使用的常见问题
① 闪退问题
原因:Tomcat软件是java语言开发的,Tomcat软件启动时,会默认到系统的环境变量中查找一个名称叫JAVA_HOME的变量,这个变量的作用找到Tomcat启动所需的jvm。
解决办法:到环境变量中设置JAVA_HOME的变量
JAVA_HOME= C:\Program Files\Java\jdk1.6.0_30 (注意别配置到bin目录下)
② 端口占用的错误
原因: Tomcat启动所需的端口被其他软件占用了!
解决办法: 关闭其他软件程序,释放所需端口或者直接修改Tomcat软件所需端口

//找到并修改%tomcat%/conf/server.xml文件(69行)                      
"8081" protocol="HTTP/1.1" 
    connectionTimeout="20000" 
    redirectPort="8443" />

③ CATALINA环境变量问题
原因:Tomcat软件启动后,除了查找JAVA_HOME以外,还会再查找一个叫CATALINA_HOME变量,这个变量的作用是设置Tomcat的根目录。
解决办法:建议不要设置CATALINA_HOME变量。检查如果有的话,清除掉!

3、体验Tomcat软件作用
webapps目录: tomcat共享目录。
需要共享的本地资源放到此目录中(不能单独一个文件,要放在文件夹下)。

4、URL:全名叫统一资源定位符,用于定位互联网的资源。
问题:如何在 http://localhost:8080/myweb/test.html 看到文件?

字符 解释
http:// 协议:http协议
localhost 域名:为了找到IP地址(本地域名:localhost、外部域名)
8080 端口:软件监听(8080为tomcat默认的端口、3306为mysql数据库的端口、1521为orace数据库的端口)
/myweb web应用的名称:默认情况下,在webapps目录下找
/test.html 资源名称

5、Tomcat的目录结构
① bin:存放启动和关闭Tomcat 的脚本文件

catalina.bat命令:
startup.bat  -> catalina.bat start  
shutdown.bat -> catalina.bat stop

② conf:存放Tomcat的配置信息,其中server.xml文件是核心的配置文件
③ lib:支持Tomcat软件运行的jar包,其中还有技术支持包,如servlet,jsp
④ logs:运行过程的日志信息
⑤ temp:临时文件
⑥ webapps:共享资源目录,web应用目录(注意不能以单独的文件进行共享)
⑦ work:Tomcat的工作目录,jsp运行时产生的临时文件就存放在这里

6、在MyEclipse中新建一个web project工程,MyEclipse会自动创建Web应用的目录结构。
其中,WebRoot:web应用的根目录,该目录下的所有子目录和子文件在部署时,会原封不动的发布到web应用目录下,该目录包含
① 静态资源(html+css+js+image+vedio):这些文件一般存在web应用根目录下,根目录下的文件外界可以直接访问
② WEB-INF:固定写法,java类、jar包、web应用的配置文件存在这个目录下,该目录下的文件外界无法非法直接访问,由web服务器负责调用
◆ classes:(可选)固定写法,存放class字节码文件
◆ lib:(可选)固定写法,存放jar包文件
◆ web.xml:用于对web应用中的web资源进行配置

三、开发动态资源

1、静态资源和动态资源的区别
静态资源:当用户多次访问这个资源,资源的源代码永远不会改变的资源。
动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变。

2、Servlet:sun公司提供的一门用于开发动态web资源开发技术
① Servlet 的命名可以看出 sun 命名的特点,如 Applet 表示小应用程序;Scriptlet = Script + Applet,表示小脚本程序;同样 Servlet = Service + Applet,表示小服务程序。
② Sun公司在其API中提供了一个servlet接口,用户若想使用Java程序开发一个动态web资源,只需编写一个servlet接口的实现类,并把这个类部署到web服务器中,就算开发好了一个动态web资源。按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet。
③ Servlet特点:
◆ 普通的java类,继承HttpServlet类,覆盖doGet方法
◆ Servlet类只能交给Tomcat服务器运行!(开发者自己不能运行)

3、Servlet手动编写步骤:
① 编写一个servlet程序,继承HttpServlet

/**
 * 第一个servlet程序
 * @author APPle
 */
public class HelloServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
        //解决中文乱码问题
        resp.setContentType("text/html;charset=utf-8");
        //向浏览器输出内容
        resp.getWriter().write("这是第一个servlet程序,当前时间为:"+new Date());
    }
}

② 找到HelloServlet类的class字节码,然后把拷贝到tomcat的一个web应用中WEB-INF/classes目录下。
③ 在当前web应用下的web.xml文件配置Servlet。


    <servlet>
        
        <servlet-name>HelloServletservlet-name>
        
        <servlet-class>gz.itcast.d_servlet.HelloServletservlet-class>
    servlet>
    <servlet-mapping>
        
        <servlet-name>HelloServletservlet-name>
        
        <url-pattern>/hellourl-pattern>
    servlet-mapping>

④ 启动tomcat服务器,运行访问(http://localhost:8080/myweb/ hello)

4、工具开发动态资源
① 创建web project (javaweb工程)
② 在WebRoot下建立静态资源文件
③ 在src下建立动态资源文件
◆ new > Servlet(servlet的代码生成器)
◆ 写pacakge > class名 > 修改mapping url
④ 关联tomcat服务器
window > Preferences > MyEcplise > servers > Tomcat 6.x (注意一定要enable)
⑤ 部署web project应用(相当于拷贝web应用到tomcat的webapps目录下)
⑥ 启动tomcat服务器
⑦ 访问servlet(http://localhost:8081/day08_web/hello)

你可能感兴趣的:(Java)