达内Servlet笔记整理.doc

上传人:h**** 文档编号:120834 上传时间:2018-07-08 格式:DOC 页数:31 大小:123KB
下载 相关 举报
达内Servlet笔记整理.doc_第1页
第1页 / 共31页
达内Servlet笔记整理.doc_第2页
第2页 / 共31页
达内Servlet笔记整理.doc_第3页
第3页 / 共31页
达内Servlet笔记整理.doc_第4页
第4页 / 共31页
达内Servlet笔记整理.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、“*“表示重要性,星号越多越重要 day1 一、 Web 应用基础 1.B-S 架构 (*) 架构的发展 c/s vs. b/s c/s 架构 (client 客户端 -server 服务端 ) (胖客户端 :要求客户端运行业务;把业务放到服务器端,则是瘦客户端 ) 典型的 c/s 应用: ftp 工具、 QQ、邮件系统、杀毒软件 . 1.建立在 tcp/ip 协议之上,有自己的通信规则 (建立业务 ) 2.需要相互配合才能完成一个完整业务逻辑 3.允许多个客户端程序同时接入一个 server 程序 (并发 ) 4.每一个 client(机器 )都必须安装客户软件 5.修改了 server 程

2、序,通常 client 程序都要修改 (升级 ) 优点:利用客户端的计算能力,分担服务器的负荷 (大型网络游戏就利用这点 ) 缺点:用户必须安装客户端程序;客户端需要升级 (麻烦 ) b/s 架构 (browser - web server(cluster 集群 ) (极瘦客户端 :最低 限度地减少客户端程序,只需要 browser(浏览器 ) 1.基于 http 协议 (应用层 ) 2.几乎所有的业务逻辑处理都在 server 完成 3.支持并发 4.client 要求很少,只需要安装 browser(浏览器 ) 5.修改 server 之后, client 不需要任何变化 6.server

3、 端开发技术: html/js,xhtml,. php,asp,jsp,servlet 缺点:所有业务都在服务器 端完成,服务器负荷大。 优点:支持高并发访问;不需另外安装软件 (只需浏览器 ),免去更新的麻烦。 2.开发一个静态的 Web 应用 (*) 1)下载一个 tomcat 服务器 2)web 服务器 -Tomcat 的启动和配置 (熟练使用和配置 ) 先进入 Tomcat 主目录下的 bin 目录 / %catalina_home%/bin window 平台:启动 -startup.bat 关闭 -shutdown.bat Linux 平台:启 动 -startup.sh 或 ca

4、talina.sh run /catalina 单次启动; startup 启动直至shutdown 关闭 -shutdown.sh 或 Ctrl+C 测试: 打开浏览器,访问 Tomcat 首页: http:/localhost:8080 或者 http:/127.0.0.1:8080/ 获取进程 Id 强行杀死 tomcat 进程 ps ef|grep tomcat -查看 tomcat 的进程 id kill -9 tomcat 进程 Id号 - 强行杀死 tomcat 进程 3)介绍 Web 应用的结构 严格定义为两部分 Web 应用的根目录下有一个特定的子目录称为 WEB-INF,其

5、中包含不能被客户访问的专用 Web 应用程序软件, 包括 Servlet 类文件、部署描述符 web.xml、外部库以及其他任何由此应用程序使用的专用文件。 所有位于 WEB-INF 之外的文件都被看作是公共的,它们可以从客户端被访问。资源包括 HTML页面、 JSP 页面和图像等。 web.xml的模板 (一个 web.xml中可以配置多个 Servlet): servlet 的名字 1 /servlet 的逻辑名 servlet 类全名 1 /类的完全限定名 servlet 的名字 2 servlet 类全名 2 servlet 的名字 1 /要和 servlet 标签中的相同 指定 se

6、rvlet相对于应用目录的路径 /servlet的访问路径 servlet 的名字 2 指定 servlet 相对于应用目录的路径 index.jsp/指定默认的欢迎页面 4)注意事项 3.介绍 Web 服务器的一些特点 什么是静态内容?什么是动态内容? 静态:返回页面每个客户端都相同。 动态:各个 客户端的页面各不相同。 产生动态内容的 Web 辅助应用: CGI Post()方法 ; 其他方法: Head, Trace, Put, Delete, Connect 等 Get()方法: Http 最简单的方法,其最主要的任务:从服务器上获取资源 Post()方法:更强大的请求方法,不仅可以请

7、求资源,还可以向服务器发送表单数据 4)分析 http 请求的信息 客户端向服务器发送一个请求,请求头包含: 1.请求的方法; 2.URI; 3.协议版本; 4.以及包含请求修饰符; 5.客户信息和内容的类似于 MIME 的消息结构 5)分析 http 响应的信息 截获内容: HTTP/1.1 200 OK / HTTP/1.1 是 web 服务器使用的版本; 200 是状态码;OK 是状态码的文本版本 ETag: W/“472-1198101802343“ Last-Modified: Wed, 19 Dec 2007 22:03:22 GMT Content-Type: text/html

8、 / MIME 类型:告诉浏览器所要接收的是哪一类型的数据。以供浏览器显示。 Content-Length: 472 Date: Wed, 19 Dec 2007 22:05:44 GMT Server: Apache-Coyote/1.1 /以上是 Http 响应的首部 /响应体中包含了 Html以及其他要显示的内容 User Login Http 响应状态码分析 (具体代码含义参看 http 代码对照表 ): 1xx:信息响应类,表示接收到请求并且继续处理 2xx:处理成功响应类,表示动作被成功接收、理解和接受 3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理 4xx:客户端错

9、误,客户请求包含语法错误或者是不能正确执行 如: 404 无法找到,表示无法找到指定位置的资源。 5xx:服务端错误,服务器不能正确执行一个正确的请求 二、 Servlet 基础 1.介绍 Servlet 的基本概念 (*) (Servlet、 Servlet 容器、 Servlet vs. CGI) 图示 1)它是由 java 编写的、服务端的小程序。相对而言, Applet 和 javaScript 是客户端小程序。 2)基于 Http 协议的,运行在 web 服务器内的。 Servlet 和 CGI 都是运 行在 Web 服务器上 ,用来生成 Web 页面。 3)没有 main 方法。是

10、接受来自网络的请求 (form 表单,以及其他的请求 ),并对不同请求作出不同的响应。 4)由容器管理和调用。这个 web 容器可以控制 Servlet 对象的生命周期,控制请求由 Servlet对象处理。 5)Web 服务器的辅助应用,处理特定的用户请求,并返回响应。 web 服务器,这里的服务器不是硬件概念,而是软件,常用的 web 服务器有 Tomcat,Jboss 等 Tomcat 是一个用 java 语言编写的 web 服务器,所以需 要有相应的 java 运行环境,也就是 JVM,还要配置 tomcat 的具体路径。 6)继承 java 的优点,与协议、平台无关 2.开发第一个 S

11、ervlet 应用 (*) Web 应用的结构 开发一个 Servlet 应用的步骤 1)建立 Web 应用目录 (注意细节 :各目录的位置、名称与包含的内容 ) 2)编写 Java 代码,如: HelloWorld.java 把生成的 .class 文件放置到 WebRoot/WEB-INF/classes 目录下 3)编 写配置文件: web.xml 放置到 WebRoot/WEB-INF/ 目录下 4)把整个 web 应用放到 %catalina_home%/webapps /放到 tomcat 的 webapps 目录下 3.分析 Servlet 应用 (*) 1)Servlet 的继

12、承体系 javax.servlet.Servlet 接口 GenericServlet 抽象类 HttpServlet 自定义类 所有的 servlet 都必须实现该接口 处理各种协议 (包括 http) 专职处理 http 协议 也可继承 GenericServlet 2)Servlet 接口; GenericServlet 抽象类; HttpServlet 类 Servlet 接口 (位置: javax.servlet.Servlet) 定义了特定的生命周期方法: init(ServletConfig config) service(HttpServletRequest request,

13、HttpServletResponse response) destroy() GenericServlet implements Servlet 实现了 init(ServletConfig config)、 destroy()等方法;并提供了 init()方法。 还实现了 ServletConfig 接口。由于这是抽象类,所以必须实现抽象方法: service() HttpServlet extends GenericServlet (位置: javax.servlet.http.HttpServlet) 具有父类 GenericServlet 类似的方法和对象,是使用 Servlet 编

14、程常用的类 支持 HTTP 的 post 和 get 等方法。 3)容器如何找到指定的 Servlet? (图示 ) Servlet 有 3 个 “名字 “: url 名、 应用中的逻辑名、 实际的名字 配置文件 web.xml 都把这几个名字一一对应起来了 Servlet 是受容器管理的 request 对象、 response对象都是容器根据客户端请求而产生 的。 容器根据 url请求,通过 DD(web.xml)配置 (url名,内部逻辑名,完全限定名 )定位具体的 servlet。 容器根据客户请求创建 /分配一个线程,并调用 servlet 的 service()方法,把 reque

15、st 对象、respone 对象作为参数传过去 service()方法会根据客户端请求的 Http 方法调用不同的 HttpServlet 的方法(doGet(),doPost(),.); Servlet 使用 response 对象把处理完的结果响应到客户端。 service()方法结束后,线程要么撤销,要么返回容器的线程池; request 对象、 response对象都被 gc 回收。 4.使用 Servlet 来发送用户输入的信息 1)开发用户登录的应用 2)如何使用 Form 表单来提交数据 (1)action: 表单提交给服务器的哪个资源处理 “login“ 为在 web.xml

16、中配置的 url-pattern 或者是 jsp、 html 文件等。 (2)Get vs. Post 方法的比较 (使用 Http Monitor) GET-通过 URL 提交表单信息,由于受到 URL 长度的限制 ,只能传递大约 1024(1K)字节。 通过 http monitor 工具截获请求信息 (下面仅写出请求行,请求首部略 ): GET /welcome/login.html?username=zhangsanq=0.5 . Host: 127.0.0.1 . /从请求行以下到这行,都是请求首部 username=zhangsan charset=utf-8“); (2)获取数据

17、过程中,处理中文输入 乱码 (3 种方法 ): 方法一:设置字符编码来解决 post 方法提交表单中文乱码问题。 request.setCharacterEncoding(“gbk“); response.setContentType(“text/html;charset=utf-8“); 必须在第一个 request.getParameter(“name“); 之前执行上面的语句。 方法二:重新生成指定编码的字符串 String name = new String(request.getParamete(“name“).getBytes(“iso-8859-1“); 方法三:修改服务器的编码

18、设置 解决 get 方法提交表单中文乱码问题 例如: Tomcat,通过修改 %TOMCAT%/conf/server.xml 加入 URIEncoding=“utf-8“ (3)静态 html 页面的中文化问题 6.请求路径 请求路径是把请求导向到一个 servlet 来响应服务。它是由几个重要的部分来组成的。 通过 HttpRequest 对象,暴露了如下信息 (对照应用的目录结构 ): 1)上下文路径 (Context Path) 该路径的前缀是和 ServletContext 相关的。 如果 Context 就是 Web 服务器的 URL 命名空间的缺省的根上下文时,那么上下文路径将会

19、是一个空的字符串。 如果上下文并不是服务器的命名空间的根,则上下文路径就以“ /”开始,但不能以“ /”结束。 2)Servlet 路径 (Servlet Path) 该路径就是直接与激活该请求的相应映射,它也是以“ /”开头。 但要注意的是,如果指定的请求是与“ /”模式相匹配,则此时 Servlet 路径就是一个空字符串。 3)路径信息 (PathInfo) 请求路径中除了上下文路径和 Servlet 路径以外的部分。 当没有额外的路径时路径信息就是空的 (null),或者它会以“ /”开始的字符串。 在 HttpServletRequest 接口中定义如下的方法来访问请求路径的相应信息:

20、 getContextPath(); getServletPath(); getPathInfo(); 值得注意的是,请求 URI 和路径的各部分之间的 URL 编码的不同之外,下面的等式恒成立: requestURI = contextPath + servletPath + pathInfo Day2 1.配置开发环境 如何利用 IDE开发 (构建 )一个 web project 部署 web project 到 Tomcat 结果是把 WebRoot 下的内容打成包,发布到 webapps 中 2.在集成环境开发过程中的注意事项 如果修改了 Java 文件 (修改了方法签名除外 ),无需

21、重启,也无需重部署 如果修改了 html文件,无需重启,但需要重部署 修改了 web.xml,系统会自动重部署 3.Servlet 的生命周期 生 命周期有哪几个过程 (4个 )? 每个过程都对应有特殊的生命周期方法 装载 /其实是调用 GenericServlet的 init(config) /这里的 config只是方法内部的变量。如果其它方法中需调用,还得: this.config=config;给成员变量的 config 赋值 B.其他地方 (包括在 init()方法中 ),可以使用 Servlet API 本身的方法 this.getServletConfig(); /任何方法中都可

22、以调用,包括 init(ServletConfig config)方法 注:这也是为什么把这个知识点放在这里的原因 4)如何获取 ServletContext A.config.getServletContext();/前提是 config 在之前已获取 B.Servlet API 提供了 this.getServletContext();/没有 config 也可以用 5)注意:不能在 Servlet 中使用 this.getServletConfig 或者 this.getServletContext()来初始化成员变量 因为创建成员变量优先于构造方法和 init 方法;而 config

23、和 context 只有调用了 init 方法之后才初始化 6)利用 ServletContext.log()来写日志 如: this.log(“String“+(new Date(); 7)例子 使用 ServletContext 来获取 参数 使用 SerlvetConfig 来获取 Servlet 的 5.产生动态内容的另一个方面:根据业务逻辑进行请求传递 (页面跳转 ) RequestDispatcher(请求分发器 ) forward(request, response)/跳转到其他资源 include(request, response)/包含其他资源 如何获取 RequestDi

24、spatcher request.getRequestDispatcher(page) servletcontext.getRequestDispatcher(page); 两者之间的区别? (后面会详细讲述 ) 6.网上书店 (打折优惠 ) SerlvetConfig 来获取 Servlet 的 ServletContext 来获取 参数 RequestDispatcher 进行页面包含 Day3 访 问资源, Servlet 如何与数据库构建应用系统 1.两种访问 DB的方法 1)直接连接 DB,通过 JDBC API 2)配置 Tomcat的连接池 server.xml配置 web.xm

25、l:应用引用资源 init():通过 JNDI API 来获取 DB Connection 2 种方法都需要在 Servlet 的 init()方法中,把 DB Connection 注入到 Servlet 中 2、用 Tomcat 的 jndi服务获取数据源 第一步:为 Tomcat 配置连 接池: 修改 tomcat/conf/server.xml 在 节点中加入 Resource 配置 /Web 应用的根 第二步:在应用中配置资源引用 (此步骤可以省略 ) 修改 web.xml jdbc/tarena /资源引用名 javax.sql.DataSource /资源的类型 Containe

26、r /Application Shareable /Unshareable 第三步:在 Servlet 的 init 方法中通过 JNDI 接口来获取 DataSource Context ctx=new InitialContext(); DataSource ds=(DataSource)ctx.lookup(“java:comp/env/jdbc/tarena“); Connection con=ds.getConnection(); 3.如何构建一个 Web 应用系统 (Servlet + JDBC + DB) 分层设计的思想:表示层 (view) + Dao 层 Servlet 层的设计: 废弃“为每个请求提供一个 Servlet”的做法,引入 Action 接口与参数控制 Dao 模式 工厂模式 :DaoFactory day4 会话管理

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 复习参考

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。