




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Servlet 基础学习 一、WEB 应用的发展 1.规律 由单机程序向网络程序发展 由 CS 程序向 BS 程序发展 2.CS 和 BS 的区别 CS Client Server 客户端服务程序,客户端由程序员开发,用户需要安装 BS Browser Server 浏览器服务程序,不需要单独开发及安装 二、 Servlet 介绍 1.服务器如何给浏览器返回网页? 1)返回静态网页 百度百科、新闻等 内容不变,任何人看都一样 服务器保存的一个 HTML,访问时直接返回它 2)返回动态网页 微博、淘宝 每个人看的内容有差别 服务器保存一个组件,用它来拼一个动态网页 在 Java 项目中,这个组件就是 Servlet 组件:就是满足规范的对象 2.Servlet 具备的特征 Servlet 是存储在服务器上的 Servlet 满足 sun 的规范 它可以拼动态资源(网页、图片等) 可以处理 HTTP 协议 3.什么事 Servlet 是 sun 推出的用来在服务器端处理 HTTP 协议的组件 三、服务器 1.名称 Java 服务器 WEB 服务器 Java WEB 服务器 Servlet 容器 2.本质 是一个软件:能够运行 Java 项目的软件 和浏览器相对应、平级 3.举例 Tomcat JBoss WebLogic WebSphere 四、如何使用 tomcat 1.单独使用 1)配置 JAVA_HOME tomcat 依赖于 Java 2)下载及安装 在 apache 官网下载 直接解压缩(释放)即可,这是绿色免安装软件 3)启动 tomcat Linux:打开/tomcat/bin 目录,输入./startup.sh window:打开 /tomcat/bin 目录,双击 startup.bat 给目录加权限:chmod +x *sh 4)访问 tomcat 打开浏览器,输入 http:/localhost:8080 5)关闭 tomcat Linux:打开/tomcat/bin 目录,输入./shutdown.sh windows:打开/tomcat/bin 目录,双击 shutdown.bat 2.用 Eclipse 管理 tomcat(开发时) 配置失败需要重来: window-preference-server-runtime 选择 tomcat 点击 remove Eclipse 左侧点击 Servers 项目将其删除 五、Servlet 开发步骤 1.创建 WEB 项目 WEB 项目有标准的 WEB 目录: webapp/WEB-INF/web.xml 2.导入 jar 包 1)用 maven 搜 javaee 在搜索结果中选择 javaee-api.jar 2)使用 tomcat 内置的 jar 包 右键项目-properties-targeted runtimes-勾选 tomcat-apply 3.开发 Servlet 继承于 HttpServlet 间接实现了 Servlet 接口(sun 的规范) 4.配置 Servlet 在 web.xml 中加以配置 5.部署项目 在 Servers 下点击 tomcat 右键点击 Add and Remove 弹出框中将项目从左侧移动到右侧 启动 tomcat 部署:就是拷贝 6.访问 Servlet http:/localhost:8080/servlet1/ts 六、代码执行过程及错误 补充 一、端口占用错误 1.出现问题的情况 报错:Address already in user,JVM_BIND:8080 2.原因及解决方案 1)tomcat 启动了 2 次,造成端口冲突 打开/tomcat/bin 目录,执行 shutdown 命令,强制关闭它 2)其他软件占用了此端口(Oracle) 修改 tomcat 的端口 打开 tomcat 配置文件 server.xml 在 65 行修改 port=“8080“,建议改为 8088、8089 等 注意:关闭 tomcat 时修改,然后重新启动 在 Servers 项目下可以找到 server.xml 配置文件 一、HTTP 协议 1.什么是 HTTP 协议 就是一个规范(w3c) 规定了:浏览器和服务器如何通信及数据格式 2.如何通信 建立连接 发送请求 接收响应 关闭连接 3.数据格式 1)请求数据(浏览器向服务器发送的数据) 请求行:请求的基本信息 消息头:请求数据的描述信息 实体内容:请求的业务数据 2)响应数据(服务器向浏览器发送的数据) 状态行:响应的基本信息 消息头:响应数据的描述信息 实体内容:响应的业务数据 4.对开发的要求 1)不需要管的地方 通信的过程已经由浏览器和服务器实现了 请求数据的组装由浏览器实现了 响应数据的组装由服务器实现了 2)需要处理的地方 请求的业务数据由开发者提供 响应的业务数据由开发者提供 使用 request 处理请求数据,使用 response 处理响应数据 二、注册案例 三、Servlet 运行原理 四、请求方式 1.什么是请求方式 浏览器向服务器发送数据的方式 包括很多种方式,需要掌握的是 GET 和 POST 2.GET 和 POST 方式的区别 1)GET 采用路径传参,参数在传递过程中可见(地址栏) 隐私性差 传参能力有限,只能传少量参数 所有的请求默认都是 GET 请求 2)POST 采用实体内容传参,参数在传递过程中不可见 隐私性好 实体内容专门用来传参,大小不受限制 在 form 上加 method=“post“ 3.如何选择请求方式 一般查询时使用 GET 请求,因为查询条件一般比较少 一般保存时使用 POST 请求,因为保存的数据一般较多 五、乱码解决方案 六、案例 1.查询员工 2.增加员工 补充 1.什么是 JavaBean 满足如下规范的类: 有 package 有默认构造器 实现序列化接口 有 get/set 方法 一、重定向 1.重定向在增加员工中的应用 response.sendRedirect(String url); 2.重定向的作用及原理 在重定向的过程中,影响浏览器做出动作的关键点即响应中的状态码及 Location 这个消息头。302 状态就像一道命令一样,使得浏览器做出新的一次 请求,而请求的地址会从头信息中查找。由于这个新的请求动作是由浏览器发 出的,所以浏览器的地址栏上的地址会变成 Location 消息头中的地址。 二、路径 1.路径是什么 2.如何获取路径 项目名:req.getContextPath() Servlet 路径:req.getServletPath() 绝对路径:req.getRequestURI() 完整路径:req.getRequestURL() 3.URI(Uniform Resource Identifier)和 URL(Uniform Resource Locator)的区别 1)狭义的理解(Java 项目) URI(统一资源标识符)是绝对路径,而 URL 是完整路径 URL(全球资源定位器 )包含了 URI 2)广义的理解(Web 项目) * URI 是资源的名字 URL 是资源的真名 URI 包含了 URL 真名只有一个,名字可以有多个 4.Servlet 访问路径的配置方案 1)精确匹配(/hello) 只有这一个路径可以访问此 Servlet 此 Servlet 只能处理一个请求 2)通配符(/*) 所有的路径都可以访问此 Servlet 此 Servlet 能处理所有请求 3)后缀(*.abc) 所有以 abc 为后缀的路径都可以访问此 Servlet 此 Serlvet 能处理多个请求 4)用 1 个 Servlet 处理多个请求的方案 5)通配符和后缀的典型应用场景 三、Servlet 生命周期 Servlet 容器如何创建 Servlet 对象、如何为 Servlet 对象分配、准备资源、 如何调用对应的方法来处理请求以及如何销毁 Servlet 对象的整个过程即 Servlet 的生命周期。 1.生命周期相关方法的调用顺序 #阶段一、实例化 someServlet test/SomeServlet 1 someServlet /* 配置文件中的 load-on-startup 节点用于设置该 Servlet 的创建时机。 当其中 的值大于等于 0 时,表示容器在启动时就会创建实例 小于 0 时或没有指定时, 代表容器在该 Servlet 被请求时再执行创建 正数的值越小,优先级越高,应用 启动时就越先被创建。 #阶段二、初始化 在初始化阶段,init()方法会被调用。这个方法在 javax.servlet.Servlet 接口中定义。其中,方法以一个 ServletConfig 类型的对象作为参数。 ServletConfig 对象由 Servlet 引擎负责创建,从中可以读取到事先在 web.xml 文件中通过节点配置的多个 name-value 名值对。ServletConfig 对象还可以让 Servlet 接受一个 ServletContext 对象。 一般情况下,init 方法不需要编写, 因 GenericServlet 已经提供了 init 方法的实现,并且提供了 getServletConfig 方法来获得 ServletConfig 对象。 注:init 方法只被执行 一次。 #阶段三、就绪 Servlet 被初始化以后就处于能够响应请求的就绪状态。每个对 Servlet 的请 求由一个 ServletRequest 对象代表,Servlet 给客户端的响应由一个 ServletResponse 对象代表。当客户端有一个请求时,容器就会将请求与响应 对象转给 Servlet,以参数的形式传给 service 方法。service 方法由 javax.servlet.Servlet 定义,由具体的 Servlet 实现。 #阶段四、销毁 Servlet 容器在销毁 Servlet 对象时会调用 destroy 方法来释放资源。通常情 况下 Servlet 容器停止或者重新启动都会引起销毁 Servlet 对象的动作,但除 此之外,Servlet 容器也有自身管理 Servlet 对象的准则,整个生命周期并不 需要人为进行干预。 2.config 和 context 的联系和区别 3.ServletConfig 4.ServletContext 一、context 的特殊用法 1.使用场景 之前使用 config 和 context 读取的都是 web.xml 中配置的常量 有时候我们需要存取的可能是变量 context 支持存取变量,给多个 Servlet 共用 2.案例 给软件做一个统计流量(访问量 )的功能 流量是一个变量,无论访问哪个 Servlet,流量+1 二、线程安全问题 1.什么时候会出现线程安全问题 多人同时修改同一份数据时有此问题 局部变量存储在栈里,每个线程有自己的栈帧,没有问题 成员变量存储在堆里,所有线程共享这个数据,可能有问题 多个人同时修改成员变量 2.如何解决线程安全问题 加锁 三、HttpServlet 介绍(了解) sun 这样设计是为了让开发者有更多选择的空间 制定的这种规范在实际使用中发现,并不会扩展为 HTTP 协议之外,所以有了过度 设计的缺陷,也为在编写 HTTP 协议的 Web 应用时添加了一些不必要的操作。 四、JSP JSP(Java Server Page)是 Sun 公司制定的一种服务器端动态页面技术的组件 规范,以“.jsp”为后缀的文件中既包含 HTML 静态标记用于表现页面,也包含 特殊的代码,用于生成动态内容。 JSP 作为简化 Servlet 开发的一种技术,实 质上最终依然要转变为 Servlet 才可能运行,只不过这个转变过程由 Servlet 容器来完成。所以遵循 JSP 的编写规范才能使得 JSP 转变为需要的 Servlet。 JSP 页面中的 Java 代码 #JSP 表达式(方便输出) 这种形式的 Java 代码在转译成 Servlet 时,会成为 service()方法中使用 out.print 语句的输出。 out.print(3+5); out.print(add(); out.print(xx.getName(); out.print(xx.getName()+“abc”); #JSP 小脚本(完成相对较长的逻辑运算) table allUser = (List)request.getAttribute(“users“); for(User u : allUser) % public void service() out.write(“”); List allUser = (List)request.getAttribute(“users“); for(User u : allUser) out.write(“ ”); out.print(u.getId(); out.write(“”); out.print(u.getName(); out.write(“”); out.write(“”); #JSP 声明(添加属性或方法) public class XXX_JSP extends JSPBase public void fun() / 方法体 public void service( ) #JSP 指令 #page 指令 #导包 #设置 response.setContentType()方法的参数值 #设置容器读取该文件时的解码方法 #include 指令 JSP 运行原理 隐含(内置)对象 什么是隐含对象 就是在 JSP 上可以直接使用的对象 这些对象是在 service 方法一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论