1、 背景知识介绍J2EE 的 13 种技术java-servlet-jsp 技术总是有一个演变过程zip 粘贴到 word 设置 回顾一下我们现有的技术java 基础(面向对象,集合,界面,线程,文件,网络)jdbc (java 的数据库编程)oracle / mysql / sqlserverhtml css javascript (web 开发 ) -网页设计xml serlvet+jsp -java web 开发使用 java 技术做 web 开发 java ee 体系的介绍 servlet 项目演示 web 开发介绍 静态页面 (html) 动态页面1. 用户可以输入数据,和页面交互(注
2、册,购物,发帖子,付款.)2. 不同时间打开页面,内容是变化.3. 目前比较流行的左动态页面的技术 ( servlet/jsp , php , , asp, cgi ) 动态网页技术的比较(了解 ) bs 和 cs 的比较(1)BS :browser server 浏览器服务器j2ee.zip(2)cs client server 客户服务 为什么需要的 web 服务器/web 究竟是干什么的?模拟一个 web 服务器 MyWebServer.javaimport java.io.*;import .*;public class MyWebServerpublic static void m
3、ain(String args) throws ExceptionServerSocket ss=new ServerSocket(80);Socket s=ss.accept();/提示一句话System.out.println(“在 9999 上等待连接.“);OutputStream os=s.getOutputStream();BufferedReader br=new BufferedReader(new FileReader(“d:hello.html“);String buf=“;while(buf=br.readLine()!=null)os.write(buf.getByte
4、s();/关闭流br.close();os.close();s.close(); 通过 tomcat 来讲解 BS 结构 安装 tomcat 服务器(1) 解压即可(2) 配置在环境变量中添加JAVA_HOME= 指向你的 jdk 的主目录(并不是 bin 文件目录) 在不配置 JAVAHOME 的前提下启动 tomcat在 startup.bat 的第 25 行中添加 set JAVA_HOME=JKD 路劲 (3) 启动 tomcat 服务器到 tomcat 主目录下 bin/startup.bat(4) 验证是否安装成功http:/localhost:8080(8080 是默认端口如果该
5、端口已经被占用需要修改端口) tomcat 安装后问题解决(1)tomcat 无法正常启动的原因分析1. JAVA_HOME 配置错误,或者没有配置 2. 如果你的机器已经占有了 8080 端口,则无法启动, 解决方法(1) 你可以 8080 先关闭netstat an netstat anb 来查看谁占用该 8080(2) 主动改变 tomcat 的端口.到 conf/server.xml 文件中修改server.xml 的端口号)protocol=“org.apache.coyote.http11.Http11NioProtocol“ redirectPort=“8443“/(3) 能够正
6、常启动,但是会导航到另外一个页面.去修改工具-管理加载项,把默认的导航给禁用即可.(4) 在访问 tomcat 时候,一定保证 tomcat 服务器是启动 tomcat 的目录结构文件bin: 启动和关闭 tomcat 的 bat 文件conf: 配置文件 server.xml : 该文件用于配置和 server 相关的信息, 比如 tomcat 启动端口后,配置Host, 配置 Context 即 web 应用 web.xml : 该文件配置与 web 应用(web 应用就相当于是一个 web 站点)tomcat-users.xml: 该文件用户配置 tomcat 的用户密码 和 权限lib
7、 目录: 该目录放置运行 tomcat 运行需要的 jar 包logs 目录:存放日志, 当我们需要去查看日志的时候,很有用!,当我们启动 tomcat 错误时候,可以查询信息.webapps 目录: 该目录下,放置我们的 web 应用(web 站点), 比如:建立 web1 目录 下面放置我们的 html 文件 jsp 文件 .图片. 则 web1 就被当做一个 web 应用管理起来( 特别说明 tomcat 6.0 以后支持 tomcat 5 版本 还有别的设置)work: 工作目录: 该目录用于存放 jsp 被访问后 生成的对应的 server 文件 和.class 文件 如何去访问一个
8、 web 应用的某个文件 首页面设置及目录规范结构现在我们要求:把 hello.html 文件设置成 该 web 应用的首页,则需要把 web 应用的目录格式做的更加规范:在 web 文件夹下配置 WEB-INF 文件夹在 web.xml 文件中添加配置的代码:hello1.html通过 http:/localhost:8088/web1 来访问 hello1.htmlweb-inf 目录下的 classes 目录将来是存放 class 文件lib 目录将来时存放 jar 文件web.xml 配置当前这个 web 应用的信息. tomcat 如何去管理虚拟目录需求: 当我们把 web 应用放到
9、 webapps 目录,tomcat 会自动管理,如果我们希望 tomcat可以管理其它目录下的 web 应用?- 虚拟目录配置我在 d 盘有一个 web 应用. 虚拟目录配置步骤: 找到 server.xml 文件 编辑 host 节点 添加 Context path在 server.xml 中添加:myweb2:是访问时输入的 web 名,实际取出的是 web2 中的资源“d:web2“:绝对路径下 web2 中存放资源如:hello2.html实际访问时输入的地址:http:/localhost:8088/myweb2/hello2.html绝对路径:从根分区找某个文件相对路径:从该文件
10、位置去找另一个文件 需要重启 tomcat,才能生效.(因为是采用的 dom 技术讲信息加载到内存中) context 的几个属性的说明path:docbase:reloadable ;如果设为 ture ,表示 tomcat 会自动更新 web 应用,这个开销大,建议在开发过程中,可以设为 true, 但是一旦真的发布了,则应当设为 false;upackWAR: 如果设为 ture ,则自动解压,否则不自动解压.:打 war 包 cd:d/web2 然后 jar cvf web2.war *:浏览打好的 war 包 Deploy 发布后会在 webapps 中自动生存改文件 配置域名我们看
11、和一个如何配置自己的主机名:我们在实际访问网站的过程中,不可能使用 http:/localhost:8080/web 应用/资源名 的方式去访问网站,实际上使用类似http:/ 或者http:/ 的方式去访问网站,这个又是怎么实现的呢 ?看看 ie 浏览器访问一个 web 站点的流程.实现的步骤如下:(1) 在 C:WINDOWSsystem32driversetc 下的 host 文件 添加 127.0.0.1 (2) 在 tomcat 的 server.xml 文件添加主机名 (3) 在 d:web3 加入了一个 /WEB-INF/web.xml 把 hello2.html 设为首页面如果
12、连端口都不希望带,则可以吧 tomcat 的启动端口设为 80 即可.(4) 重启生效 tomcat 体系的再说明 图:如何配置默认主机:在 tomcat/conf/server.xml 文件 为什么需要 servlet 技术?比如需求:我们希望用户可以贴,用户还可以回复 .这样一些和用户可以交互的功能,用普通的 java 技术就完成不了, sun 就开发了 servlet 技术供程序员使用. servlet 的介绍 servlet 其实就是 java 程序(java 类) 该 java 程序(java 类)要遵循 servlet 开发规范 serlvet 是运行在服务端 serlvet 功能
13、强大,几乎可以完成网站的所有功能 是学习 jsp 基础 tomcat 和 servlet 在网络中的位置 servlet 的生命周期是怎样的/servlet 究竟是怎样工作的UML 时序图帮助大家理解参看 execel 面试题: 请简述 servlet 的生命周期(工作流程)答:标准版本:WEB 服务器首先会检查是否已经装载并创建了该 servlet 实例对象。如果是直接进行第步,否则执行第步。装载并创建该 Servlet 的一个实例对象。调用 Servlet 实例对象的 init()方法。创建一个用于封装 HTTP 请求消息的 HttpServletRequest 对象和一个代表 HTTP
14、响应消息的 HttpServletResponse 对象,然后调用 service()方法并将请求和响应作为参数传递进去。WEB 应用被停止或重启之前,Servlet 引擎将卸载 Servlet,在卸载之前调用 Servlet 的destroy()方法1. 当 serlvet 第一次被调用的时候,会触发 init 函数,该函数会把 servlet 实例装载到内存.init 函数只会被调用一次2. 然后去调用 servlet 的 service 函数3. 当第二次后访问该 servlet 就直接调用 service 函数.4. 当 web 应用 reload 或者 关闭 tomcat 或者 关机
15、 都会去调用 destroy 函数,该函数就会去销毁 serlvet5. Servlet 的生命周期当客户端第一次向 web 服务器发出一个 servlet 请求时,web 服务器将会创建一个该servlet 的实例,并且调用 servlet 的 init()方法;如果当服务器已经存在了一个 servlet 实例,那么,将直接使用此实例;然后再调用 service()方法,service()方法将根据客户端的请求方式来决定调用对应的 doXXX()方法;当 web 应用 reload 或者 关闭 tomcat 或者 关机,web 服务器将调用 destroy()方法,将该 servlet 从服
16、务器内存中删除。生命全过程:1.加载2.实例化3.初始化4.处理请求5.退出服务 开发 servlet 有三种方法 (1) 实现 Servlet 接口(2) 通过继承 GenericServlet(3) 通过继承 HttpServlet 实现 servlet 接口的方式需求如下: 请使用实现 接口的方式,来开发一个 Servlet ,要求该 Servlet 可以显示Hello,world,同时显示当前时间.步骤1. 在 webapps 下建立一个 web 应用 hspWeb12. 在 hspWeb1 下建立 WEB-INF-web.xml web.xml 可以从 ROOT/WEB-INF/web.xml