付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 课程回顾Http 协议:http 协议: 对浏览器客户端和服务器端之间数据传输的格式规范。http 请求:浏览器-服务器端格式:请求行(请求方式(GET/T) 请求资源(URI) http 协议版本(http1.1)请求头(键值对形式存在。 host、user-agent、referer)一个空行实体内容(T 提交的参数)HttpServletRequest 对象: 请求对象。获取请求信息。请求行:request.getMethod()request.getRequestURI/getRequestURL()request.getProtocol();请求头: request.getHea
2、der(name)request.getHeaderNames()实体内容: request.getInputStream()获取参数数据:(GET 或T)request.getParameter(name)一个值的参数 request.getParameterValues(name); 多个值的参数 request.getParameterNames()所有参数3)http 响应: 服务器-浏览器端格式:响应行(http 协议版本 状态码 描述)常用的状态码: 200302404500响应头( location(结合 302 状态码完成请求重定向功能)、refresh(定时刷新)、conte
3、nt-type、content-disiition(以一个空行实体内容方式打开)HttpServletResponse 对象: 响应对象。设置响应信息。响应行: response.setSus();响应头: response.setHeader(name,value)实体内容:(PrWriter) response.getWriter().writer(); 字符内容(OutputStream)response.getOutputStream().writer();字节内容作业:程序功能:添加联系人修改联系人删除联系人查询所有联系人要求:console 控制数据保存在 xml今天的目标: se
4、rvlet 编程第一天: 入门 第二天: http 协议第三天:如何写 servlet 程序Servlet 学习的大纲:servlet 概念及相关接口简介servet 执行过程servlet 路径缺省 servletservlet 生命周期(重点)Servlet 自动加载Servlet 线程安全servletConfig 对象Servlet 相关接口详解ServletContext 对象-应用-理解(重点)-知识点1 如何开发一个 Servlet1.1 步骤:1)编写 java 类,继承 HttpServlet 类2)重新 doGet 和 dot 方法Servlet 程序交给 tomcat 服
5、务器运行!servlet 程序的 class 码拷贝到 WEB-INF/classes 目录在 web.xml 文件中进行配置Servletgz.a_servlet.ServletServlet/问题:次 URL:前提: tomcat 服务器启动时,首先加载 webapps 中的每个 web 应用的 web.xml 配置文件。http:/: http 协议localhost: 到本地的 hosts 文件中查找是否存在该对应的 IP 地址8080:/day10/找到 tomcat 服务器在 tomcat 的webapps 目录下找 day10 的目录资源名称。1)在 day10 的 web.xm
6、l 中查找是否有匹配的 url-pattern 的内容(/)2)如果找到匹配的 url-pattern,则使用当前 servlet-name 的名称到 web.xml 文件中查询是否相同名称的 servlet 配置3)如果找到,则取出对应的 servlet 配置信息中的 servlet-class 内容:字符串:gz.a_servlet.Servlet通过反射:a)构造 b)然后调用Servlet 的对象Servlet 里面的方法2 Servlet 的路径浏览器输入url-pattern/精确匹配/demo1模糊匹配任意路径任意路径任意路径.do/*/*.后缀名*.do*.action*.ht
7、ml(伪静态)注意:1)url-pattern 要么以 / 开头,要么以*开头。例如,是路径路径。不能同时使用两种模糊匹配,例如 /*.do 是当有输入的 URL 有多个 servlet 同时被匹配的情况下:Servlet/精确匹配优先。(长的最像优先被匹配)以后缀名结尾的模糊 url-pattern 优先级最低!3 servlet 缺省路径servlet 的缺省路径(/)是在 tomcat 服务器内置的一个路径。该路径对应的是一个 DefaultServlet(缺省 Servlet)。这个缺省的 Servlet 的作用是用于web 应用的静态资源文件。问题: URL 输入如何文件?1)到当前
8、 day10 应用下的 web.xml 文件查找是否有匹配的 url-pattern。 2)如果没有匹配的 url-pattern,则交给 tomcat 的内置的 DefaultServlet 处理3)DefaultServlet 程序到 day10 应用的根目录下查找是存在一个名称为 index.html 的静态文件。4)如果找到该文件,则该文件内容,返回给浏览器。5)如果找不到该文件,则返回 404 错误页面。结论: 先找动态资源,再找静态资源。4 Sevlet 的生命周期(重点)4.1 引入Servlet 的生命周期: servlet 类对象什么时候创建,什么时候调用什么方法,什么时候销
9、毁。以前的对象: new Student(); stu.study();stu=null;Servlet 程序的生命周期由 tomcat 服务器控制的!4.2 Servlet 重要的四个生命周期方法构造方法: 创建 servlet 对象的时候调用。默认情况下,第一次servlet 的时候创建 servlet 对象只调用 1 次。证明 servlet 对象在 tomcat 是单实例的。init 方法: 创建完 servlet 对象的时候调用。只调用 1 次。service 方法: 每次发出请求时调用。调用 n 次。destroy 方法: 销毁 servlet 对象的时候调用。停止服务器或者重新部
10、署 web 应用时销毁 servlet 对象。只调用 1 次。4.3 伪代码演示 servlet 的生命周期Tomtcat代码运行:1)通过找到到 servlet-class 的内容,字符串: gz.a_servlet.Servlet2)通过反射构造Servlet 对象得到字节码对象Class clazz = class.forName(gz.调用无参数的构造方法来构造对象Object obj = clazz.newInstance(); 3)创建 ServletConfig 对象,通过反射调用 init 方法3.1 得到方法对象.a_servlet.Servlet);1.servlet 的构
11、造方法被调用Method m = clazz.getDeclareMethod(init,ServletConfig.class);3.2 调用方法m.invoke(obj,config);-2.servlet 的 init 方法被调用创建 request,response 对象,通过反射调用 service 方法得到方法对象Methodmm=clazz.getDeclareMethod(service,HttpServletReq s);4.2 调用方法m.invoke(obj,request,response);lass,HttpServletResponse.clas-3.servlet
12、 的 service 方法被调用当 tomcat 服务器停止或 web 应用重新部署,通过反射调用 destroy 方法得到方法对象Method m = clazz.getDeclareMethod(destroy,null);调用方法m.invoke(obj,null);-4.servlet 的 destroy 方法被调用4.4 用时序图来演示 servlet 的生命周期改变 servlet 创建对象的时机: 提前到加载 web 应用的时候!在 servlet 的配置信息中,加上一个即可!7 有参的 init 方法和无参的 init 方法8 Servlet 的多线程并发问题注意: servl
13、et 对象在 tomcat 服务器是单实例多线程的。因为 servlet 是多线程的,所以当多个 servlet 的线程同时线程安全问题。了 servlet 的共享数据,如成员变量,可能会解决办法:把使用到共享数据的代码块进行同步(使用 synchronized 关键字进行同步)建议在 servlet 类中尽量不要使用成员变量。如果确实要使用成员,必须同步。而且尽量缩小同步代码块的范围。(哪里使用到了成员变量,就同步哪里!),以避免因为同步而导致并发效率降低。Servlet 学习:HttpServletRequest请求对象:获取请求信息HttpServletResponse 响应对象: 设置
14、响应对象ServletConfig 对象servlet 配置对象ServletContext 对象; servlet 的上下文对象9 ServletConfig 对象9.1 作用ServletConfig 对象: 主要是用于加载 servlet 的初始化参数。在一个 web 应用可以存在多个 ServletConfig对象(一个 Servlet 对应一个 ServletConfig 对象)LifeDemogz.c_life.LifeDemo1 注意: 整数值越大,创建优先级越低!9.2 对象创建和得到创建时机: 在创建完 servlet 对象之后,在调用 init 方法之前创建。得到对象: 直
15、接从有参数的 init 方法中得到!9.3 servlet 的初始化参数配置注意: servlet 的参数只能由当前的这个 sevlet 获取!ServletConfig 的 API:java.lang.String getInitParameter(java.lang.String name)根据参数名获取参数值java.util.Enumeration getInitParameterNames()获取所有参数得到 servlet 上下文对象得到 servlet 的名称ServletContext getServletContext()java.lang.String getServlet
16、Name()10 ServletContext 对象10.1 引入ServletContext 对象 ,叫做 Servlet 的上下文对象。表示一个当前的 web 应用环境。一个 web 应用中只有一个 ServletContext 对象。10.2 对象创建和得到创建时机:加载 web 应用时创建 ServletContext 对象。得到对象: 从 ServletConfig 对象的 getServletContext 方法得到设计:创建 ServletConfig 对象ConfigDemogz.f_config.ConfigDemopathe:/b.txtpublic void init(
17、ServletConfig config,ServletContext context )多了一个参数得到 ServletConfig 对象得到 ServletContext 对象;Sun 公司设计1)创建 ServletContext 对象 ServletContextcontext = new ServletContext()2)创建 ServletConfig 对象ServetConfig config = new ServletConfig();config.setServletContxt(context);classServletConfigServletContext conte
18、xt;public ServletContext getServletContxt() return contxt;public void init( ServletConfig config )得到 ServletConfig 对象从 ServletConfig 对象中得到 ServletContext 对象SerlvetContext context = config.getServletContext();10.1 ServletContext 对象的API(作用)java.lang.String getContextPath()-得到当前 web 应用的路径java.lang.Stri
19、ng getInitParameter(java.lang.String name)-得到 web 应用的初始化参数java.util.Enumeration getInitParameterNames()void setribute(java.lang.String name, java.lang.Object object) -域对象有关的方法java.lang.Object getribute(java.lang.String name)void removeAttribute(java.lang.String name)RequestDispatcher getRequestDispa
20、tcher(java.lang.String path)-转发(类似于重定向)-得到 web 应用的资源文件java.lang.String getRealPath(java.lang.String path)java.io.InputStream getResourceAsStream(java.lang.String path)10.3 得到 web 应用路径java.lang.String getContextPath()用在请求重定向的资源名称中10.4 得到 web 应用的初始化参数(全局)java.lang.String getInitParameter(java.lang.Str
21、ing name)-得到 web 应用的初始化参数java.util.Enumeration getInitParameterNames()web 应用参数可以让当前 web 应用的所有 servlet 获取!10.5 域对象有关的方法域对象:作用是用于保存数据,获取数据。可以在不同的动态资源之间共享数据。案例:Servlet1name=ericServlet2response.sendRedirect(/Servlet2?name=eric)String request.getParameter(name);保存到域对象中Student从域对象获取方案 1: 可以通过传递参数的形式,共享数据。局限:只能传递字符串类型。方案 2: 可以使用域对象共享数据,好处:可以共享任何类型的数据!ServletContext 就是一个域对象!保存数据:void setribute(java.lang.String name, java.lang.Object object)获取数据: java.lang.Object getribute(java.lang.String name)删除数据: void removeAttribute(java
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某纺织厂消防安全准则
- 2026年江西农发集团所属企业社会招聘1人笔试模拟试题及答案解析
- 厦门大学嘉庚学院2026-2027学年人才招聘笔试参考题库及答案解析
- 2026年河南省平顶山市公务员人员招聘笔试参考试题与答案详解
- 2026年昆明市西山区招聘社区专职工作人员(33人)考试模拟试题及答案解析
- 2026年哈尔滨市道外区公务员人员招聘笔试参考题库与答案详解
- 2026广州市从化区卫生健康局所属事业单位第二次公开招聘事业编制工作人员13人考试备考试题及答案解析
- 2026重庆市万州区溪口乡养老协管员非全日制公益性岗位招聘4人笔试参考题库及答案解析
- 2026年鞍山市立山区公务员人员招聘考试备考试题与答案详解
- 2026年浙江省衢州市公务员人员招聘考试试题与答案详解
- 2026中国邮政联合校园招聘笔试参考题库(含答案解析)
- (一模)嘉兴市2026-2027学年第一学期高三教学质量检测语文试卷(含答案)
- 2026中国洗衣干衣行业市场现状需求分析投资布局发展策略研究文献
- 2027年湖北交通投资集团有限公司秋季校园招聘131人笔试备考题库及答案解析
- 2026山东青岛水务集团有限公司招聘笔试历年参考题库附带答案详解
- T∕CCEAS008-2026 建设工程造价咨询成果文件质量标准
- 凉山2025年四川凉山州雷波重点国有林保护局招聘27人笔试历年参考题库附带答案详解
- 药品追溯系统培训课件
- 山东省菏泽市2025-2026学年高二上学期期中联考试题 物理(A)含答案
- 防触电安全课件幼儿园
- 天津市和平区汇文中学2026届九年级化学第一学期期中学业质量监测试题含解析
评论
0/150
提交评论