2022年jsp&servlet应用开发 .pdf
Jsp & Servlet 应用开发 . 1 一、 JSP技术简介 . 1 1、 Java EE 概述 . 1 2、什么是 JSP . 2 3、 hello World . 2 4、 JSP运行原理 . 3 二、 开发 jsp 应用 web 程序的准备 . 3 1、 准备工作 . 3 三、 JSP 的基本语法 . 4 四、 jsp 的内置对象 . 7 Jsp内置对象 . 7 2、 response . 8 4、 pageContext . 9 5、 Session . 10 6、 Application . 11 7、 Page . 11 8、 Config. 12 9、 Exception . 12 Servlet . 12 一、认识 servlet . 12 1.servlet 相关 . 12 2.helloworld 程序 . 13 3. Servlet 和 jsp 的关系 . 13 4. JSP与 Servlet 之间的主要差异 . 13 5. Servlet 的生命周期 . 13 6.doget 和 dopost . 14 7. 重定向与请求转发. 14 Jsp & Servlet 应用开发一、JSP 技术简介1、Java EE 概述1.JavaEE 是一种企业应用的软件架构2.Sun 公司开发 JavaEE(以前叫 J2EE) ,试图构建一个新的架构来解决互联网应用:性能:对用户的请求作出响应易用性:不同用户应该以不同的形式访问访问不同的内容名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - - - - 安全性:对用户访问进行验证,防止对数据进行未授权访问可用性:提供全天候的可用性,且很少停机可扩充性:在不需要人工干预的情况下支持负载变化3. javaEE 一般常用的技术有EJB,JDBC,SERVLET ,JSP,JNDI 等2、什么是 JSP 1、JSP(JavaServer Pages) 是由 Sun 公司倡导、许多公司参与一起建立的一种动态网页技术标准2、JSP是在网页HTML 文件中插入Java 程序段和 JSP标记,从而形成JSP文件 (*.jsp) 3、hello World hello world名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - - - - - 4、JSP 运行原理1、 在一个 JSP文件第一次被请求时,JSP引擎先把该JSP文件转换成一个Java 源文件 ,在转换时如果有语法错误,过程将中断。2、 如果转换成功,JSP引擎调用Java虚拟机的javac 程序把该Java源文件编译成相应的class文件 ,该 class文件也就是一个Servlet 程序。3、然后创建一个该Servlet 的实例 ,提供服务相应用户的请求。二、开发 jsp 应用 web 程序的准备1、准备工作1、了解 jsp 的运行原理2、安装与配置JDK 3、安装 JSP服务器,比如Tomcat 4、开发环境MyEclipse 5、数据库(如果需要的话)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 15 页 - - - - - - - - - 三、 JSP 的基本语法1、JSP文件的结构、指令部分 声明部分 代码部分 Html 部分等 html标记注释部分 输出部分 2、JSP的脚本元素隐藏注释 不想让用户看到注释,则是用该隐藏注释声明 不论定义方法还是变量,都应该是用该声明方式脚本段 一般的 Java 代码可以写在这里面脚本段内不能定义方法表达式 用于输出 Java 数据3、JSP指令元素JSP 有三个指令元素page include taglib 这些指令元素是针对JSP引擎的 ,并不会产生任何看得见的输出指令元素包含在里,两个主要的指令是page 与 include,taglib 在使用标签库名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 15 页 - - - - - - - - - 编程的时候才使用Page指令:page指令用于定义JSP文件中的全局属性page指令的属性属性的含义language=“java”指定 JSP用什么语言来编译JSP页面 ,目前只能使用 Java import= “java.util.* ”定义该 JSP网页是用到的Java API session=“true”定义该 JSP网页是否可以是用session对象isThreadSafe=“true”定义该 JSP网页能否处理超过一个以上请求errorPage=“URL ”定义发生错误时,网页被重定位到哪个URL contentType=“text/html ”定义 MIME 类型isErrorPage=“ ture”定义该 JSP网页是否为处理异常错误的网页Info 定义该 JSP网页的相关信息Include 指令include 指令用于在JSP页面中包含另外一个文件的内容 include 指令只有一个属性:file 。include 指令将会在JSP编译时插入被包含文件的内容,被包含的文件内容常常是代码片段。include 包含过程是静态的.也就是静态包含taglib 指令taglib 指令是能够让用户使用自定义新的标签taglib 指令只有在使用标签库编程时才会用到4、JSP动作元素JSP 2.0规范中定义了20 多个动作元素,介绍 6 个常用的动作元素 是用来实例化JavaBean的。所谓 JavaBean,就是一个Java类(属性私有化 ,提供公共方法来操作私有化属性) 的具体语法如下 id 可以看成是指向对象的变量。如果该变量已存在,则使用已存在的变量,如果不存在则先创建再使用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 15 页 - - - - - - - - - scope指定作用域范围。 默认为 page。 如果在作用域内找不到指定的对象,则创建它 ,作用域范围有以下四种page 页面范围request 请求范围session 会话范围application 服务器范围 name 属性对应 的 id, 指明要给哪个javaBean 的属性设置值property 指明给哪一个属性赋值当 property= “* ”,时表示给所有属性赋值,在 javaBean 中的属性名必须和请求参数名一致 ,如此才能一一匹配property 和 param 属性一起使用 ,property 指明 javaBean 的属性名 ,param 指明请求中的参数名。如果属性名和参数名相同,那么只需要指明property 就行了property 和 value 属性一起使用 ,这种方式使用指定的值来给javaBean 的属性赋值,value 的值可以是表达式或字符串需要注意的是 :不能同时使用param 和 value 属性 用于获取并输出javaBean 中的属性值name对应 中的 id 属性property 指明要输出哪个属性值用于包含文件 其中page指明要包含进来的文件的相对路径flush 属性决定是否清空缓冲区,默认为 false 这种包含方式为动态包含静态包含和动态包含的区别静态包含不能给页面传递参数,动态包含则可以静态包含包含的路径只能是常量,动态包含可以是变量静态包含是先包含后处理,动态包含是先处理后包含动态包含有所有静态包含的功能 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 15 页 - - - - - - - - - 用于将客户端的请求从一个jsp 页面转发到另一个jsp 页面 或者 page指明要跳转的路径标签表示向一个动态文件发送一个或多个参数. 标签用来提供key/value 的值 ,可以与 、 等标签一起搭配使用其中name 属性指明参数的名字Value 属性指明参数的值四、 jsp 的内置对象Jsp内置对象所谓 JSP内置对象 ,是指不需要声明而直接可以在JSP网页中使用的对象实际上九大内置对象是由JSP引擎实例化的requset对象response对象out 对象pageContext 对象session对象application 对象page对象config 对象exception 对象1、Requestrequest对象包含了来自客户端的请求信息,如请求的来源、 标头、Cookies 及请求相关的参数值等名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 15 页 - - - - - - - - - 2、response response对象代表的是对客户端的响应,也就是说可以用过response对象来组织发送到客户端的数据名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 15 页 - - - - - - - - - 3、outOut对象代表了向客户端发送数据的对象,与 response对象不同 ,通过 out 对象发送的内容将是浏览器需要显示的内容,是文本级的 ,可以通过out 对象直接向客户端写一个由程序动态生成的 HTML 文件其中 print() 和 println() 是 out 对象最常用的两个方法print() 方法是把数据输入到客户端的缓冲区println() 方法除了把数据输入到客户端,还在内容后面添加一个换行符.但这换行符在浏览器中会被忽略4、pageContext pageContext 对象可直译为”页面上下文”对象。代表的就是当前页面运行的一些属性。所有内置对象都可以从pageContext 中取得名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 15 页 - - - - - - - - - Scope参数是 4 个常数,分别代表4 个范围: PAGE_SCOPE、REQUEST_SCOPE 、SESSION_SCOPE、APPLICA TION_SCOPE 5、Session 该对象是由服务器端自动创建的,用于保存每个用户的信息,以便跟踪每个用户的操作状态。session对象内部使用Map 类保存数据 ,因此保存数据的格式是”键/值” ,session中的值可以是复杂的对象类型,而不仅限于字符串session对象在需要在不同JPS页面中记录用户信息的情况下使用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 15 页 - - - - - - - - - 6、Application application 对象保存了一个应用系统中公有的数据,一旦创建了application 对象 ,除非服务器关闭 ,否则 application 对象将一直保存,并为所有客户共享与 session不同的是 ,所有客户端的application 对象都是同一个,即所有客户端共享这个内置的 application 对象7、Page page代表了正在运行JSP页面产生的对象,更准确的说 ,它代表 JSP被编译后的Servlet page对象只有在当前JSP页面范围之内使用才是合法的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 15 页 - - - - - - - - - 在实际应用中,page对象很少使用8、Config config 对象提供一些配置信息,config 对象很被少用到9、Exception exception 对象是 java.lang.Throwable 类的一个实例,该对象存储了JSP 文件运行时所产生的异常信息 ,此对象不能在一般的JSP 文件中直接使用,如果要使用exception 对象 ,必须在page指令中设定 以下代码指定当页面发生异常时重定向的页面 Servlet 一、认识 servlet 1.servlet 相关Servlet 是 1997 年由 Sun 和其他几个厂商为了将Java 的浏览器端的Applet 技术扩展到Web 服务器端而提出的一种技术一个 Servlet 实质上是一个符合Servlet API 规范的 Java类,它在 Web 服务器上接受并处理客户请求 ,然后将处理结果发送给客户端浏览器在程序中 ,只要是继承了HttpServlet 类的类都是Servlet 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 15 页 - - - - - - - - - 2.helloworld程序3. Servlet 和 jsp 的关系JSP 转译后的 .java 文件与 Servlet 的处理方式一样Servlet 是 JSP 技术的基础4. JSP 与 Servlet 之间的主要差异JSP提供了一套简单的标签,和 HTML 融合得比较好,即使不了解Servlet 的用户也可以通过 JSP做出动态网页来如果要开发的Web应用有很复杂的控制逻辑需要实现,这时使用 Servlet 则可以非常清晰和方便地封装这些控制逻辑5. Servlet 的生命周期1. Servlet作为一种在 Servlet 容器中运行的组件,必然有一个从创建到删除的过程,这个过程通常被称为Servlet 的生命周期2. Servlet 的生命周期包括加载实例化初始化处理客户请求卸载3.这个生命周期由javax.servlet.Servlet 接口的 init() 、service()和 destroy()方法所定义4.Servlet 具体生命周期Servlet 容器装载Servlet 类并实例化一个Servlet 对象名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 15 页 - - - - - - - - - Servlet 容器调用该实例对象的init() 方法进行初始化如果 Servlet 容器收到对该Servlet 的请求 ,则调用此实例对象的service()方法处理请求并返回响应结果Servlet 容器在卸载该Servlet 实例前调用它的destroy()方法6.doget 和 dopost doGet 方法用来处理表单提交方式为Get 的请求doPost 方法用来处理表单提交方式为Post 的请求为了能处理用户的请求,因此在实现代码的时候doGet 函数和doPost 函数的函数体是一模一样的,解决方法就是将实现请求的代码重用,一般在doGet 中调用doPost 或者在doPost 中调用 doGet 7. 重定向与请求转发重定向response.sendRedirect(request.getContextPath()+/system/login.jsp); 请求转发request.getRequestDispatcher(/system/login.jsp).forward(request, response); 区别? 不要忘了整理名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 15 页 - - - - - - - - - 过滤器一、过滤器Servlet 过滤器是一种Web 组件 ,它们拦截请求和响应,以便查看、提取或以某种方式操作客户端和服务器之间交换的数据所有的过滤器都必须实现javax.servlet.Filter接口 ,该接口定义了init() 、doFilter() 和destroy()三个方法和 Servlet 一样 ,过滤器也是Web 应用的一个组件,因此过滤器也需要在Web 应用的配置文件 web.xml 文件中通过配置进行部署,从上面的代码可以看出配置过滤器的格式和Servlet的非常相似过滤器的配置包括俩部分filter 元素filter-mapping 元素可以通过 filter-mapping 将过滤器映射到一个或多个Servlet 或 JSP文件 ,也可以映射到任意特征的 URL 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 15 页 - - - - - - - - -