js p_web编程全部.ppt_第1页
js p_web编程全部.ppt_第2页
js p_web编程全部.ppt_第3页
js p_web编程全部.ppt_第4页
js p_web编程全部.ppt_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVAJSP WEB编程 Servlet373353263 背景知识 常用的Web服务器IIS微软的跑aspApacheTomcat免费好用的严格来说它只能叫容器不能跑包装了业务逻辑的组建如 EJBWebLogicBA收费Tongweb国产注意 目前大家对Web服务器应用服务器都混合叫了通常的动态网页技术CGI CommonGateWayInterface API常用的有 NSAPI ISAPI ASP ActiveServerPage vb脚本语言PHP PersonalHomePage 动态脚本语言的经典代表JSP Servlet JavaServerPage LAMP tomcat启动与停止 startupshutdowncatalinastartcatalinastopcatalinadebug调试错误的时候runexithelp设置环境变量JAVA HOMEshutdown bat 小心使用 tomcat目录结构 bin 存放各种平台下启动和关闭Tomcat的脚本文件 startup bat是windows下启动tomcat的文件 shutdown bat是关闭tomcat的文件 common 在common目录下的lib目录 存放Tomcat服务器和所有web应用都能访问的JAR shared 在shared目录下的lib目录 存放所有web应用能访问的 但Tomcat不能访问的JAR server 在server webapps目录中 存放Tomcat自带的两个APP admin和manager应用 来管理Tomcat web服务用的 work Tomcat把各种由jsp生成的servlet文件放在这个目录下 temp 临时活页夹 Tomcat运行时候存放临时文件用的 logs 存放Tomcat的日志文件webapps web应用的发布目录 把java开发的web站点或war文件放入这个目录下就可以通过tomcat服务器访问了 conf Tomcat的各种配置文件 最重要的是server xml Tomcat配置文件 conf server xml服务器的主配置文件conf web xml定义所有Web应用的配置 缺省的Servlet定义和MIME类型定义 conf tomcat user xml定义了tomcat用户的信息 用于权限与安全 conf server xml 顶层类元素 位于整个配置文件的顶层 连接器类元素 Connectors 客户和服务 容器类元素 间的通讯接口 接受客户请求 返回响应结果 容器类元素 Containers 处理客户请求并且生成响应结果 包含3个 嵌套类元素 NestedComponents 可以加入到容器中的元素 包括 等一个包含一个或多个 一个包含唯一一个和一个或多个 多个共享一个 一个包含多个 每个定义一个虚拟主机 包含一个或多个web应用 元素是代表一个在虚拟主机上运行的Web应用 Pleasenotethatfortomcat5 x unliketomcat4 x itisNOTrecommendedtoplaceelementsdirectlyintheserver xmlfile Instead putthemintheMETA INF context xmldirectoryofyourWARfileortheconfdirectoryasdescribedabove server xml的层次结构 HTTP协议基础 HTTP HypertextTransferProtocol 超文本传输协议 HTTP是以明文方式发送数据的用于从WWW服务器传输超文本到本地浏览器的传输协议 HTTP协议是以TCP IP为基础的高层协议 现在广泛使用的版本HTTP 1 2 WebApplication的概念j2ee规范 WebApplicationNameWEB INFweb xml该webapp的配置文件lib该webapp用到的库文件classes存放编译好的servletMETA INF存放该webapp的上下文信息 符合J2EE标准WebApplication可以直接放在webapp下面也可以通过配置文件指定到其他目录里面 Tomcat的目录结构 bin 二进制可执行文件和脚本catalinastartstopcatalinadebugrunexitcommon Catalina本身和web应用可加载的类目录conf 配置文件目录logs 日志目录server 服务器所需的类库目录shared WebApp共享的类库webapps Web应用所存放的目录applicationswork Tomcat的工作目录 存放jsp产生的class文件 temp 存放临时产生的文件 Servlet简介 Servlet是服务器小应用程序用来完成B S架构下 客户端请求的响应处理平台独立 性能优良 能以线程方式运行ServletAPI为Servlet提供了统一的编程接口Servlet一般在容器中运行常见的Servlet容器TomcatJetty Resin Servlet示例HelloWorldServlet java 需求 编写一个生成纯文本的简单的Servlet类 目的 了解Servlet的基本概念在web xml的配置 HelloWorldServletHelloWorldServletHelloWorldServlet HelloWorldServlet webapp根路径 url 必须 开头 客户端 访问 请求 request Web服务器 tomcat 得到请求的地址 Web xml servlet 请求结果 Response 请求结果 Response返回给客户端 客户端 请求request 服务器端的应用服务器 tomcat Web xml 返回给客户端 返回Response Servlet 处理业务逻辑 访问 创建Servlet XXXextendsHttpServletOverridedoGetdoPostcopytoWEB INF classesweb xml restartserver Servlet的生命周期 生命全过程 加载ClassLoader 创建servlet对象永远只有这一个60分 实例化new初始化init ServletConfig 只调用一次处理请求servicedoGetdoPost以多线程方式来处理请求线程池退出服务destroy web应用程序退出是调用该方法重新加载重启只有一个对象API中的过程 init 只执行一次 第一次初始化的时候publicvoidinit ServletConfigconfig throwsServletExceptionservice publicvoidservice ServletRequestreq ServletResponseres throwsServletException java io IOExceptiondoGet Dopost destroy webapp退出的时候publicvoiddestroy TestLifeCycleServlet java init init servletconfigconfig 看apiServletGenericServlet this config config有两个init方法 init 重写必须得super init config 不然不能使用this getServletConfig当然也就不能用getInitParameter 我们只需要重写init TestInitServlet java 客户端 Request TestLifeCycleServlet Tomcat new出一个对象Init 获得servlet配置信息获得相应的服务 GenericServlet 中的service ServletRequest再调用 HttpServletservice HttpServletRequestreq Web xml Servlet 自己的servlet HttpServlet GenericServlet Servlet编程接口 GenericServlet是所有Servlet的鼻祖用于HTTP的Servlet编程都通过继承javax servlet http HttpServlet实现请求处理方法 分别对应http协议的7种请求 1 doGet响应Get请求 常用2 doPost响应Post请求 常用3 doPut用于http1 1协议4 doDelete用于http1 1协议5 doHead仅响应Get请求的头部 6 doOptions用于http1 1协议7 doTrace用于http1 1协议实例的个数 在非分布的情况下 通常一个Servlet在服务器中有一个实例 示例 使用doGet和doPost方法处理请求 要求 编写一个带有doGet和doPost方法的Servlet目的 掌握基本的Servlet请求处理技术要点 publicvoiddoGet HttpServletRequestreq HttpServletResponseres throwsServletException IOExceptionpublicvoiddoPost HttpServletRequestreq HttpServletResponseres throwsServletException IOException读取指定的参数 ThreeParams html ThreeParams java读取所有的参数 ShowParameters java ShowParametersForm html获取表单信息通过HttpServletRequest的getParameter 方法来获得客户端传递过来的数据getParameter 方法返回一个字符串类型的值getParameterNames 返回Enumeration类型的值 getParameterValues 返回一个字符串数组 不要通过本地文件访问 ThreeParams java ShowParameters java HTTP的状态处理 HTTP是无状态有状态 Server知道Client以前在我这儿做过什么事儿 处理Cookie Http协议的无连接性要求出现一种保存C S间状态的机制Cookie 保存到客户端的一个文本文件 与特定客户相关Cookie以 名 值 对的形式保存数据创建Cookie newCookie name value 可以使用Cookie的setXXX方法来设定一些相应的值setName Stringname getName setValue Stringvalue getValue setMaxAge intage getMaxAge 利用HttpServletResponse的addCookie Cookie 方法将它设置到客户端利用HttpServletRequest的getCookies 方法来读取客户端的所有Cookie 返回一个Cookie数组设置CookieSetCookies java读取CookieShowCookies java Web上保持状态的手段 cookiesessionapplicationpersistence 应用 1 服务器可以向客户端写内容2 只能是文本内容3 客户端可以阻止服务器写入4 只能拿自己webapp写入的东西5 Cookie分为两种最大为4kb属于窗口 子窗口 放在内存中的 属于文本 有生命周期的 6 一个servlet jsp设置的cookies能够被同一个路径下面或者子路径下面的servlet jsp读到 路径 URL 路径 真实文件路径 而子路径下面设置的Cookie父路径是无法获取基于窗口的cookie 客户端 小纸条 带有信息 查找request上面是否有cookie 会话跟踪 Session在某段时间一连串客户端与服务器端的 交易 在Jsp Servlet中 如果浏览器不支持Cookie 可以通过URL重写来实现 就是将一些额外数据追加到表示会话的每个URL末尾 服务器在该标示符与其存储的有关的该会话的数据之间建立关联 如hello jsp jsessionid 1234可以通过程序来终止一个会话 如果客户端在一定时间内没有操作 服务器会自动终止会话 通过HttpSession来读写Session规则如果浏览器支持Cookie 创建Session的时候会把SessionID保存在Cookie里如果不支持Cookie 必须自己编程使用URL重写的方式实现Sessionresponse encodeURL 转码URL后面加入SessionIdSession不象Cookie拥有路径访问的问题同一个application下的servlet jsp可以共享同一个session 前提示同一个客户端窗口 97923429349237293472 97923429349237293472 HttpServletRequest中的Session管理方法 getRequestedSessionId 返回随客户端请求到来的会话ID 可能与当前的会话ID相同 也可能不同 getSession booleanisNew 如果会话已经存在 则返回一个HttpSession 如果不存在并且isNew为true 则会新建一个HttpSessionisRequestedSessionIdFromCookie 当前的SessionID如果是从Cookie获得 为trueisRequestedSessionIdFromURL 当前SessionID如果是由URL获得 为trueisRequestedSessionIdValid 如果客户端的会话ID代表的是有效会话 则返回true 否则 比如 会话过期或根本不存在 返回falseHttpSession的常用方法getAttributeNames getAttribute getCreateTime getId getMaxInactiveInterval invalidate isNew setAttribute setMaxInactivateInterval ShowSession javaSessionInfoServlet javaURLSession java 同一次请求访问同一个session对象 Session总结 服务器的一块内存 存key value 和客户端窗口对应 子窗口 独一无二 客户端和服务器有对应的SessionID客户端向服务器端发送SessionID的时候两种方式 cookie 内存cookie rewritenURL浏览器禁掉cookie 就不能使用session 使用cookie实现的session 如果想安全的使用session 不论客户端是否禁止cookie 只能使用URL重写 大大增加编程负担 所以很多网站要求客户端打开cookie Session失效时间tomcatconf下的web Xml文件中配置 Application 用于保存整个WebApplication的生命周期内都可以访问的数据在API中表现为ServletContext通过HttpServlet的getServletContext方法可以拿到通过ServletContext的get setAttribute方法取得 设置相关属性TestServletContext java 之前我们得到的session是在同一次请求中能够得到他们的值那么不是同一次请求的值怎么得到呢 Servlet中的请求转发 RequestDispatcher接口对象允许将请求转发到其他服务器资源通过RequestDispatcher的forward HttpServletRequest HttpServletResponse 方法可以将请求转发通过ServletContext的getRequestDispatcher Stringurl 方法来获得RequestDispatcher对象 并且指定转发的目标url资源可以通过HttpServletRequest的setAttribute Stringname Stringvalue 来设置需要传递的参数 然后在代理servlet中就可以使用HttpServerRequest的getAttribute Stringname 来获得对应的值 数据库处理以及在Servlet中使用Bean 广义javabean 普通java类狭义javabean 符合SunJavaBean标准的类在Servlet中使用Bean和在通常程序中使用Bean类似属性名称第一个字母必须小写 一般private 比如 privateproductId一般具有gettersandsetters要具有一个参数为空的构造方法但Bean不应具有GUI表现一般是用来实现某一业务逻辑或取得特定结果示例 连接数据库ShowRs javaShowRsUseBean java 如何掌握Servlet 创建Servlet从HttpServlet继承重写doGet doPost方法在web xml中配置servlet生命周期Cookie Session Application的概念请求转发使用javabean FilterandListener Servlet的多线程机制 Servlet体系结构是建立在Java多线程机制之上的 它的生命周期是由Web容器负责的 当客户端第一次请求某个Servlet时 Servlet容器将会根据web xml配置文件实例化这个Servlet类 当有新的客户端请求该Servlet时 一般不会再实例化该Servlet类 也就是有多个线程在使用这个实例 Servlet容器会自动使用线程池等技术来支持系统的运行 JSP JSP简介 JSP JavaServerPages拥有servlet的特性与优点 本身就是一个servletwebserver帮我们把它转化成servlet 直接在HTML中内嵌JSP代码JSP程序由JSPEngine先将它转换成Servlet代码 接着将它编译成类文件载入执行只有当客户端第一次请求JSP时 才需要将其转换 编译优点 优良的性能优于CGI PHP ASP平台无关性操作系统无关 Web服务器无关可扩展性tag的扩展机制 简化页面开发 HelloWorld jsp http xxx test HW jsp HW jsp java class JSP编程 基本语法 JSP传统语法DeclarationScriptlet Java的代码块 ExpressionCommentDirectivesAction动作指令内置对象JSTLJSF Expressions jsp JSP编程 Declaration 声明 基本语法 说明 在此声明的变量 方法都会被保留成唯一的一份 直到JSP程序停止执行例 AccessCounts jspAccessCountsAwt jsp Scriptlet 基本语法 可以放入任何的Java程序代码例 注释格式 BGColor jsp 表达式 基本语法 等于是变量 后面必须是字符串变量或者可以被转换成字符串的表达式不需要以 结束只有一行例 Expressions jsp Directive Directive 编译指令 相当于在编译期间的命令把JSP转化成servlet时候的命令格式 常见的Directive pageincludetaglib Directive page 指明与JSPContainer的沟通方式基本格式 TestDirective jsp TestErr jsp ErrPage jsp Directive include 将指定的JSP程序或者HTML文件包含进来格式 静态包含编译期的指令JSPEngine会在JSP程序的转换时期先把file属性设定的文件包含进来 然后开始执行转换及编译的工作 原封不动的把文件的代码copy到该位置 然后进行转换和编译 只生成一个java和class 限制 不能向fileURL中传递参数不能abc jsp user aaa编译期间传参数没有意义包含页面和被包含页面访问的是同一个servlet对象包含页面和被包含页面不能定义不同的字符集编码不要写多个headbody等唯一标签两个页面访问的是同一个request对象 TestBar jsp TitleBar jsp Action Action 动作指令 在运行期间的命令常见的 jsp useBeanjsp setPropertyjsp getPropertyjsp include编译出两个JSPservlet 和静态包含的区别 两个页面均可取参数访问的不是同一个对像但是被包含页面可以取得包含页面的参数可以传参数 因此被包含页面取到的参数比包含页面的要多因此访问的不是同一个request对象 只有当被包含的页面指令被执行时候才使被动态包含的页面生成servletjsp forwardjsp paramjsp plugin嵌入applet include include jspdate jspCompute htmlCompute jspdivide jspmultiply jsp jsp include jsp param 用于动态包含JSP程序或HTML文件等除非这个指令会被执行到 否则它是不会被Tomcat等JSPEngine编译 格式 jsp param用来设定include文件时的参数和对应的值例如 date jsp include jspCompute html Compute jsp divide jsp multiply jsp和编译指令include的区别include编译指令是在JSP程序的转换时期就将file属性所指定的程序内容嵌入 然后再编译执行 而jsp include指令在转换时期是不会被编译的 只有在客户端请求时期如果被执行到才会被动态的编译载入Include不能带参数 而可以动态包含的文件和被包含文件用的是同一个request对象 jsp forward jsp param 用于将一个jsp的内容传送到page所指定的JSP程序或者Servlet中处理 URL 格式 用于指定参数和其对应的值例如 test jspforward jsp forforward jspforward1 jsp forforward1 jsp withparameters Forward的页面和forward到的页面用的是同一个request与此相对应的是response sendRedirect testredirect 重新去访问redirect页面 Redirect页面 与response sendRedirect的区别 使用同一个requestforward后的语句不会继续发送给客户端速度快服务器内部转换 可以传参数response sendRedirect是不同的request send后的语句会继续执行 除非return速度慢需要到客户端的往返 可以转到任何页面可以传参数 直接写在url后面 Javabean javabean如果说按照sun公司的规范我们平常说的bean是指广义的bean就是一个Java的普通的类 对于属性来说都是private不要给其他类直接访问 属性的首字母必须小写 提供设置属性和获取属性方法getset方法 一般都有一个空的构造方法 jsp useBean 通过jsp useBean 可以在JSP中使用定义好的BeanBean的基本要素 必须要有一个不带参数的构造器 在JSP元素创建Bean时会调用空构造器Bean类应该没有任何公共实例变量 也就是说 不允许直接访问实例变量 变量名称首字母必需小写通过getter setter方法来读 写变量的值 并且将对应的变量首字母改成大写基本用法 test jsp CounterBean java不要使用裸体类 规范要求 jsp useBean con jsp useBean各项参数含义 id 对象实例名称scope Bean作用的范围 默认为page 对整个jsp页面有效class Bean类名称 全名 type Bean实例类型 可以是本类 或其父类 或实现的接口 默认为本类Scope各项参数的意义 page 仅涵盖使用JavaBean的页面 PageBean jsp CounterBean java 只有在本页面才能取到值request 有效范围仅限于使用JavaBean的请求 RequestBean jsp RequestBean2 jsp CounterBean java session 有效范围在用户整个连接过程中 整个会话阶段均有效 SessionBean jsp Session2 jsp CounterBean java application 有效范围涵盖整个应用程序 也就是对整个网站均有效 Application jsp Application2 jsp CounterBean java jsp useBean con jsp setProperty的格式 相当于beanName setPropertyName value 方法调用 setXxx 方法 jsp getProperty的格式 相当于beanName getPropertyName 方法调用 getXxx 方法 jsp useBean con 建立表单参数和Bean属性之间的关联通过param指定表单元素的名称 通过perperty指定对应的Bean属性名称 由此建立这两个变量的关联 SaleEntry jsp SaleEntry java 用url传递参数 通过 来设置所有属性和输入参数之间的关联 SayHelloBean html SayHelloBean jsp HelloBean java 在建立Bean属性和表单参数之间的对应关系时 服务器会将对应的参数自动转换成和属性类型匹配的数据初步解释编码问题 JSP内置对象 JSP的内置对象outrequestresponsepageContext 用的很少sessionapplicationconfig 用的很少exceptionPage 用的很少 JSP编程 out Out内置对象是一个缓冲的输出流 用来给客户端返回信息 它是javax servlet jsp JspWriter的一个实例典型应用 向客户端输出内容例 向客户端输出一个字符串 HelloWorld HelloWorld jsp JSP out 常用方法 println 向客户端输出各种类型数据newLine 输出一个换行符close 关闭输出流flush 输出缓冲区里的数据clearBuffer 清除缓冲区里的数据 同时把数据输出到客户端clear 清除缓冲区里的数据 但不把数据输出到客户端getBufferSize 返回缓冲区的大小 JSP编程 request request内置对象表示的是调用JSP页面的请求 通常 request对象是javax servlet http HttpServletRequest接口的一个实例典型应用 通过request getParameter paramName 可以获得Form提交过来的参数值 JSP request 可以用此对象取得请求的Header 信息 如浏览器版本 语言和编码等 请求的方式 get post 请求的参数名称 参数值 客户端的主机名称等常用方法 getMethod 返回客户端向服务器端传送数据的方法getParameter StringparamName 返回客户端向服务器端传送的参数值 该参数由paramName指定getParameterNames 获得客户端传送给服务器端的所有参数的名字 结果是一个枚举类型数据 Enumeration getParameterValues Stringname 获得指定参数的所有值 由name指定getRequestURI 获得发出请求字符串的客户端地址getRemoteAddr 获取客户端的IP地址getRemoteHost 获取客户端机器名称getS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论