Servlet.

Slides:



Advertisements
Similar presentations
Power point 制作 耿祥义 张跃平 配合 例子源代码一起使用. 第 4 章 内 置 对 象 有些成员变量不用声明就可以在 JSP 页 面的脚本( Java 程序片和 Java 表达式) 中使用,这就是所谓的内置对象。 内置对象有: resquest 、 response 、 session.
Advertisements

第 4 章 配合 例子源代码一起使用 Power point 制作:耿祥义 张跃平 普通高等教育 “ 十一五 ” 国家级规划教材 JSP 内置对象.
第 4 章 JSP 内置对象 本章主要内容:  内置对象的概念  内置对象的作用域和生命期  内置对象的作用和关系  内置对象的使用方法.
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
第 2 章 JSP 应用基础(三).  page 对象、 config 对象、 out 对象  response 对象  request 对象  session 对象  application 对象  pageContext 、 exception 对象 教学目标 :
第二章 JSP 编译指令. 课程目标  JSP 编译指令  JSP 页面的表达式  JSP 页面的注释  JSP 页面的声明  Scriptlets.
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
第五章 JSP 的内置对象 西南科技大学网络教育系列课程 动态网页设计( JSP ). 动态网页设计( JSP ) 内置对象概述 特点 request :得到客户端的信息。 (HttpServletRequest) session :保存单个用户访问时的一些信息。
Java Web 开发 授课人:张鸽. 第三讲 JSP 内置对象  JSP 有以下九种内置对象,包括:  ·request ,请求对象  ·response ,响应对象  ·pageContext ,页面上下文对象  ·session ,会话对象  ·application ,应用程序对象.
动态页面设计 长沙民政职业技术学院 ☆ WEB 应用开发精品课程. 案例导入 项目 结合 JDBC 技术和 JSP 技术,实现考生登录验证 任务 用户登陆页面与后台验证实现 。 技术要点 ( 关键字 ) 1.JSP 标签和动作应用。 2.JSP 的内置对象 request , response 3.JSP.
LOGO 第 9 章 Java Servlet 和 JSP 编程 孙焘. 重点: servlet 编程原理 1 servlet 的基础类与编程实现 2 JSP 编程原理 3 JSP 的常用语法 4.
第 7 章 配合 例子源代码一起使用 Power point 制作:耿祥义 张跃平 普通高等教育 “ 十一五 ” 国家级规划教材 JSP 与 JavaBean.
Power point 制作 耿祥义 张跃平 配合 例子源代码一起使用. 第 5 章 JSP 与 JavaBean JavaBean 是一个可重复使用的软件组件, 是遵循一定标准、用 Java 语言编写的一 个类,该类的一个实例称为一个 JavaBean ,简称 bean.
Web Maple— 云端计 算 数学学院刘海洋 胡婷婷. 需求 什么是 Web Maple ? Maple : “ 数学家的软件 ” 符号和数值计算 动态编程语言 集成编辑环境与图形输出 Web Maple :网页上的数学家 完整的 Maple 功能 云端计算 网页独特的输入输出格式.
动态网站开发 【HTTP与网络基础】 李博杰
动态Web开发技术--JSP.
第一章 JSP概述.
第五章 JSP内置对象 第4章学习了页面组成元素和使用方法。本章学习JSP内置对象的使用。使用JSP内置对象,可以方便操作页面,访问页面环境,实现页面内、页面间、页面与环境之间的通讯。 学习目标 熟悉主要内置对象的概念 理解主要内置对象的作用域和生命期 理解主要内置对象的作用和关系 熟悉主要内置对象的使用方法.
7.5 其他对象 JSP 视频教学课程.
基于JSP搭建Web应用程序.
上节课我们是讲解了request, response, session, application 等内置对象,有了它们,我们就可以编写一个完整的应用程序了。 我们来看ebank这个小应用程序的编写。
段磊 王慧锋 TEL: 数据库系统原理课程设计 实验环节1 段磊 王慧锋 TEL:
张孝祥IT课堂 -深入体验Java Web开发内幕
MVC Servlet与MVC设计模式.
J2EE Struts 和Spring 的区别.
全球資訊網(WWW)簡介.
在PHP和MYSQL中实现完美的中文显示
J2EE与中间件技术 ——Lab.
Lab312.
移动开发的灵便迭代之道 黄凯.
Hello World 體驗實作第一個JSP程式.
第9章 过滤器和监听器技术 过滤器(Filter)和监听器(Listener)是两种特殊的Servlet技术。过滤器可以对用户的请求信息和响应信息进行过滤,常被用于权限检查和参数编码统一设置等。监听器可以用来对Web应用进行监听和控制的,增强Web应用的事件处理能力。 本章主要介绍过滤器和监听器的编程接口、基本结构、信息配置、部署和运行,最后通过案例说明过滤器和监听器的典型应用。
JSP程式設計 基本概論 歐陽芳泉 Fang-Chuan Ou Yang
软件设计模式与体系结构课程设计 周 宇 College of Information Science and Technology
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
数据库操作示例 import java.sql.*; //导入java.sql包 public class JDBCDemo {
Hadoop I/O By ShiChaojie.
专题4:JSP脚本和指令.
JSP自定义标签技术的分析与应用 ----Custom Tag 的分析与应用
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
第二讲 搭建Java Web开发环境 主讲人:孙娜
SVN服务器的搭建(Windows) 柳峰
辅导课程六.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
第一讲 J2EE基础 博和利初级培训 —开发技能.
第11章 Android客户端与服务器交互.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
任务1-3 使用Dreamweaver创建ASP网页
第一章 JSP概述 study-thinking-action.
SOA – Experiment 2: Query Classification Web Service
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
JSP程序设计 第9章 Servlet简介.
第十二章 过滤器.
Java Server Faces 参考书籍 Java Server Faces 核心编程.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
Python 环境搭建 基于Anaconda和VSCode.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
HTML表单 JSP借由标签所构成的表单区块中,取得用户在其中特定字段输入的数据內容 。 JSP 动态网页新技术.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第21章 Spring 的MVC框架 Spring不但一个很好的集成框剪,它还提供了构建Web应用程序的全功能MVC模块。Spring 的MVC框架非常强大并不逊色于其他专业的Web框架,如Struts、WebWork。但在国内Spring MVC应用的并不是特别多,原因可能是Struts太深入人心的缘故吧。
第5章 表达式语言.
第4章 JSP动态网页设计基础 教学目标 教学重点 教学过程 2019年10月21日.
第四章 jsp语法 4.1 jsp页面的基本结构 一个jsp页面可由五种元素组合而成: 普通的html标记符
JUDDI安装手册.
Presentation transcript:

Servlet

背景知识 常用的Web服务器 IIS Apache Tomcat 通常的动态网页技术 CGI (Common GateWay Interface) API常用的有(NSAPI,ISAPI) ASP(Active Server Page) PHP(Personal Home Page) JSP/Servlet (Java Server Page) LAMP

tomcat启动与停止 startup shutdown catalina start catalina stop catalina debug 调试错误的时候 run exit help 设置环境变量JAVA_HOME shutdown.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 顶层类元素: 位于整个配置文件的顶层, <Server>; 连接器类元素[Connectors ]: 客户和服务(容器类元素)间的通讯接口。接受客户请求,返回响应结果;<Connector> 容器类元素[Containers]: 处理客户请求并且生成响应结果,包含3个:<Engine> <Host> <Context> 嵌套类元素[Nested Components]: 可以加入到容器中的元素,包括:<logger> <Valve><Realm>等 一个<Server>包含一个或多个<Service>,一个<Service>包含唯一一个< Engine>和一个或多个<Connector>,多个 <Connector>共享一个<Engine>;一个<Engine>包含多个<Host>,每个 <Host>定义一个虚拟主机,包含一个或多个web应用<Context>; <Context>元素是代表一个在虚拟主机上运行的Web应用。 Please note that for tomcat 5.x, unlike tomcat 4.x, it is NOT recommended to place <Context> elements directly in the server.xml file. Instead, put them in the META-INF/context.xml directory of your WAR file or the conf directory as described above.

什么是MIME Multipurpos Internet Mail Extension 指明白传送内容的格式 最早用于邮件附件

server.xml的层次结构 <Server port="8005" shutdown="SHUTDOWN" debug="0"> <Service name="Tomcat-Standalone"> <Connector className="HttpConnector" port="80" /> <Engine name="Standalone" defaultHost="localhost" debug="0"> <Logger className="FileLogger" prefix="catalina_log." /> <Realm className="MemoryRealm" /> <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true"> <Valve className="AccessLogValve" directory="logs" /> <Logger className="FileLogger" refix="localhost_log." /> <Context path="" docBase="ROOT" /> <Context path="/manager" docBase="manager" privileged="true"/> <Context path="/myapp" docBase="t" debug="0" reloadable="true"/> </Host> </Engine> </Service> </Server>

HTTP协议基础 HTTP(Hypertext Transfer Protocol, 超文本传输协议) HTTP是以明文方式发送数据的 用于从WWW服务器传输超文本到本地浏览器的传输协议。 HTTP协议是以TCP/IP为基础的高层协议。 现在广泛使用的版本HTTP/1.1 "100" : Continue "101" : witching Protocols "200" : OK "201" : Created "202" : Accepted "203" : Non-Authoritative Information "204" : No Content "205" : Reset Content "206" : Partial Content "300" : Multiple Choices "301" : Moved Permanently "302" : Found "303" : See Other "304" : Not Modified "305" : Use Proxy "307" : Temporary Redirect "400" : Bad Request "401" : Unauthorized "402" : Payment Required "403" : Forbidden "404" : Not Found "405" : Method Not Allowed "406" : Not Acceptable "407" : Proxy Authentication Required "408" : Request Time-out "409" : Conflict "410" : Gone "411" : Length Required "412" : Precondition Failed "413" : Request Entity Too Large "414" : Request-URI Too Large "415" : Unsupported Media Type "416" : Requested range not satisfiable "417" : Expectation Failed "500" : Internal Server Error "501" : Not Implemented "502" : Bad Gateway "503" : Service Unavailable "504" : Gateway Time-out "505" : HTTP Version not supported GET     请求获取Request-URI所标识的资源 POST    在Request-URI所标识的资源后附加新的数据 HEAD    请求获取由Request-URI所标识的资源的响应消息报头 PUT     请求服务器存储一个资源,并用Request-URI作为其标识 DELETE  请求服务器删除Request-URI所标识的资源 TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断 CONNECT 保留将来使用 OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

HTTP协议基础 GET /latest.html HTTP/1.1 Host: www.foo.com Content-Type: text/html … {空行} POST /servlet/serv HTTP/1.1 Host: www.foo.com Content-Type: application/x-www-form-urlencoded Content-Length: 32 username=billgates&password=hehe HTTP/1.1 200 OK Date: Fri,31 Dec 2003 10:23:34 GMT Content-Type: text/html Content-length: 280 <html> …… </html>

Web Application的概念 Web Application Name WEB-INF META-INF web.xml 该web app的配置文件 lib 该web app用到的库文件 classes 存放编译好的servlet META-INF 存放该web app的上下文信息,符合J2EE标准 Web Application可以直接放在webapp下面 也可以通过配置文件指定到其他目录 <host>里面 <Context path=“/虚拟路径名“ docBase=”目录位置" debug="0" reloadable="true"/>

Tomcat的目录结构 bin/ 二进制可执行文件和脚本 catalina start stop catalina debug run exit common/ Catalina本身和web应用可加载的类目录 conf/ 配置文件目录 logs/ 日志目录 server/ 服务器所需的类库目录 shared/ Web App共享的类库 webapps/ Web应用所存放的目录applications work/ Tomcat的工作目录(存放jsp产生的class文件) temp/ 存放临时产生的文件

Servlet简介 Servlet是服务器小应用程序 用来完成B/S架构下,客户端请求的响应处理 平台独立,性能优良,能以线程方式运行 Servlet API为Servlet提供了统一的编程接口 Servlet一般在容器中运行 常见的Servlet容器 Tomcat (其下载、安装和运行请参考视频文件) Jetty / Resin

Servlet示例 HelloWorldServlet.java 在web.xml的配置 <servlet> <servlet-name>HelloWorldServlet</servlet-name> <servlet-class>HelloWorldServlet</servlet-class> </servlet> <servlet-mapping> <url-pattern>/HelloWorldServlet</url-pattern> </servlet-mapping> web app根路径(url) 必须/开头

web.xml /aaa -> hello ->servlet class -> web-inf/classes - > doGetl http://xxx/test/aaa

创建Servlet XXX extends HttpServlet Override doGet doPost copy to WEB-INF/classes web.xml <servlet><servlet-name><servlet-class></servlet> <servlet-mapping><url-pattern> / restart server

Servlet的生命周期 生命全过程: 加载 ClassLoader 实例化 new 初始化 init(ServletConfig) 处理请求 service doGet doPost 退出服务 destroy() 只有一个对象 API中的过程: init()//只执行一次, 第一次初始化的时候 public void init(ServletConfig config) throws ServletException service() public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException destroy()//webapp 退出的时候 public void destroy() TestLifeCycleServlet.java

init init(servletconfig config) this.config = config init(); 重写必须得super.init(config) 不然不能使用this.getServletConfig 当然也就不能用getInitParameter(); 我们只需要重写init();

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请求处理技术 要点: public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException,IOException 读取指定的参数:ThreeParams.html/ThreeParams.java 读取所有的参数:ShowParameters.java/ShowParametersForm.html 获取表单信息 通过HttpServletRequest的getParameter()方法来获得客户端传递过来的数据 getParameter()方法返回一个字符串类型的值 getParameterNames()返回Enumeration类型的值,getParameterValues()返回一个字符串数组 ShowParameters.java ThreeParams.java 不要通过本地文件访问

HTTP的状态处理 HTTP是无状态 有状态:Server知道Client以前在我这儿做过什么事儿

Web上保持状态的手段: cookie session application persistence Http协议的无连接性要求出现一种保存C/S间状态的机制 Cookie:保存到客户端的一个文本文件,与特定客户相关 Cookie以“名-值”对的形式保存数据 创建Cookie:new Cookie(name,value) 可以使用Cookie 的setXXX方法来设定一些相应的值 setName(String name)/getName() setValue(String value)/getValue() setMaxAge(int age)/getMaxAge() 利用HttpServletResponse的addCookie(Cookie)方法将它设置到客户端 利用HttpServletRequest的getCookies()方法来读取客户端的所有Cookie,返回一个Cookie数组 设置Cookie SetCookies.java 读取Cookie ShowCookies.java Web上保持状态的手段: cookie session application persistence

1:服务器可以向客户端写内容 2:只能是文本内容 3:客户端可以阻止服务器写入 4:只能拿自己webapp写入的东西 5:Cookie分为两种 属于窗口/子窗口(放在内存中的) 属于文本(有生命周期的) 6:一个servlet/jsp设置的cookies能够被 同一个路径下面或者子路径下面的 servlet/jsp读到 (路径 = URL) (路径 != 真实文件路径)

会话跟踪 Session 在某段时间一连串客户端与服务器端的“交易” 在Jsp/Servlet中,如果浏览器不支持Cookie,可以通过URL重写来实现,就是将一些 额外数据追加到表示会话的每个URL末尾,服务器在该标示符与其存储的有关的该会话的数据之间建立关联。如hello.jsp?jsessionid=1234 可以通过程序来终止一个会话。如果客户端在一定时间内没有操作,服务器会自动终止会话。 通过HttpSession来读写Session 规则 如果浏览器支持Cookie, 创建Session的时候会把SessionID保存在Cookie里 如果不支持Cookie, 必须自己编程使用URL重写的方式实现Session response.encodeURL() 转码 URL后面加入SessionId Session不象Cookie拥有路径访问的问题 同一个application下的servlet/jsp可以共享同一个session, 前提示同一个客户端窗口.

97923429349237293472 97923429349237293472

HttpServletRequest中的Session管理方法 getRequestedSessionId():返回随客户端请求到来的会话ID。可能与当前的会话ID相同,也可能不同。 getSession(boolean isNew):如果会话已经存在,则返回一个HttpSession,如果不存在并且isNew为true,则会新建一个HttpSession isRequestedSessionIdFromCookie():当前的Session ID如果是从Cookie获得,为true isRequestedSessionIdFromURL():当前Session ID如果是由URL获得,为true isRequestedSessionIdValid():如果客户端的会话ID代表的是有效会话,则返回true。否则(比如,会话过期或根本不存在),返回false HttpSession的常用方法 getAttributeNames()/getAttribute() getCreateTime() getId() getMaxInactiveInterval() invalidate() isNew() setAttribute() setMaxInactivateInterval() SessionInfoServlet.java ShowSession.java URLSession.java

Session总结 服务器的一块内存(存key-value) 和客户端窗口对应(子窗口)(独一无二) 客户端和服务器有对应的SessionID 客户端向服务器端发送SessionID的时候两种方式: cookie(内存cookie) rewriten URL 浏览器禁掉cookie,就不能使用session(使用cookie实现的session) 如果想安全的使用session(不论客户端是否禁止cookie),只能使用URL重写(大大增加编程负担),所以很多网站要求客户端打开cookie

Application 用于保存整个WebApplication的生命周期内都可以访问的数据 在API中表现为ServletContext 通过HttpServlet的getServletContext方法可以拿到 通过ServletContext的 get / setAttribute方法取得/设置相关属性 TestServletContext.java

Servlet中的请求转发 RequestDispatcher接口对象允许将请求转发到其他服务器资源 通过RequestDispatcher的forward(HttpServletRequest,HttpServletResponse)方法可以将请求转发 通过ServletContext的getRequestDispatcher(String url)方法来获得RequestDispatcher对象,并且指定转发的目标url资源 可以通过HttpServletRequest的setAttribute(String name,String value)来设置需要传递的参数,然后在代理servlet中就可以使用HttpServerRequest的getAttribute(String name)来获得对应的值

数据库处理以及在Servlet中使用Bean 广义javabean = 普通java类 狭义javabean = 符合Sun JavaBean标准的类 在Servlet中使用Bean和在通常程序中使用Bean类似 属性名称第一个字母必须小写,一般private, 比如:private productId 一般具有getters and setters 要具有一个参数为空的构造方法 但Bean不应具有GUI表现 一般是用来实现某一业务逻辑或取得特定结果 示例: 连接数据库 ShowRs.java ShowRsUseBean.java

如何掌握Servlet 创建Servlet 从HttpServlet继承 重写doGet / doPost方法 在web.xml中配置 Cookie / Session / Application的概念 请求转发 使用javabean Filter and Listener

Servlet的多线程机制 Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。 当客户端第一次请求某个Servlet时,Servlet 容器将会根据web.xml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有 多个线程在使用这个实例。 Servlet容器会自动使用线程池等技术来支持系统的运行

JSP

JSP简介 JSP---Java Server Pages 拥有servlet的特性与优点(本身就是一个servlet) 直接在HTML中内嵌JSP代码 JSP程序由JSP Engine先将它转换成Servlet代码,接着将它编译成类文件载入执行 只有当客户端第一次请求JSP时,才需要将其转换、编译 优点: 优良的性能 优于CGI,PHP,ASP 平台无关性 操作系统无关,Web服务器无关 可扩展性 tag的扩展机制,简化页面开发 HelloWorld.jsp

HW.jsp java  class http://xxx/test/HW.jsp

JSP编程—基本语法 JSP传统语法 Declaration Scriptlet Expression Comment Directives Action动作指令 内置对象 JSTL JSF

JSP编程---Declaration 基本语法: <%! %> <%! %> 说明:在此声明的变量、方法都会被保留成唯一的一份,直到JSP程序停止执行 例: <%! int i; public void setName(){… …} %> AccessCounts.jsp

Scriptlet 基本语法: <%程序代码区%> 可以放入任何的Java程序代码 例: <% for (int i=0;i<10,i++) { … … } %> 注释格式: <%--… …--%> <%//… …%> <%/*… …*/%> BGColor.jsp

表达式 基本语法: <%=… …%> =后面必须是字符串变量或者可以被转换成字符串的表达式 不需要以;结束 只有一行 例: <%=“hello world”%> <%=i+1%> <%=request.getParameter(“name”)%> Expressions.jsp

Directive Directive(编译指令)相当于在编译期间的命令 格式: <%@Directive 属性=“属性值”%> page include taglib

Directive--page 指明与JSP Container 的沟通方式 基本格式: TestDirective.jsp <%@page language=“script language”| extends=“className”| import=“importList”| buffer=“none|kb size”| --none:不缓冲,默认8k session=“true|false”| --是否可以使用session,默认true autoFlush=“true|false” --缓冲器是否自动清除,默认true isThreadSafe=“true|false”| --默认false(永远不要设成true) info=“infoText”| --任何字符 errorPage=“errorPageUrl”| isErrorPage=“true|false”| contentType=“contentTyepInfo”| pageEncoding=“gb2312” %> isThreadSafe:Login.html/userCounter.jsp 中文问题: <%@ page contentType="text/html;charset=gb2312" %> isErrorPage/errorPage: ErrorPage.jsp/TestErr.jsp TestDirective.jsp TestErr.jsp / ErrPage.jsp – 读视频

Directive--include 将指定的JSP程序或者HTML文件包含进来 格式: <%@include file=“fileURL%> JSP Engine会在JSP程序的转换时期先把file属性设定的文件包含进来,然后开始执行转换及编译的工作。(原封不动的把文件的代码copy到该位置,然后进行转换和编译,只生成一个java和class) 限制: 不能向fileURL中传递参数 不能abc.jsp?user=aaa TestBar.jsp/TitleBar.jsp

Action Action(动作指令)在运行期间的命令 常见的: jsp:useBean jsp:include jsp:forward jsp:setProperty jsp:getProperty jsp:include jsp:forward jsp:param jsp:plugin 嵌入applet

jsp:include/jsp:param 用于动态包含JSP程序或HTML文件等 除非这个指令会被执行到,否则它是不会被Tomcat等JSP Engine编译。 格式: <jsp:include page=“URLSpec” flush=“true”/> <jsp:include page=“URLSpec” flush=“true”> <jsp:param name=“ParamName” value=“paramValue”/> </jsp:include> jsp:param用来设定include文件时的参数和对应的值 例如: date.jsp/include.jsp Compute.html/Compute.jsp/divide.jsp/multiply.jsp 和编译指令include的区别 include编译指令是在JSP程序的转换时期就将file属性所指定的程序内容嵌入,然后再编译执行;而include指令在转换时期是不会被编译的,只有在客户端请求时期如果被执行到才会被动态的编译载入 Include不能带参数, 而<jsp:include>可以 动态包含的文件和被包含文件用的是同一个request对象 Flush用于设定是否将结果马上打印出来,必须为“true”,因为在JSP1.1中,false是无效的设定

jsp:forward / jsp:param 用于将一个jsp的内容传送到page所指定的JSP程序或者Servlet中处理(URL) 格式: <jsp:forward page=“urlSpec” flush=“true”/> <jsp:forward page=“urlSpec”> <jsp:param name=“paramName” value=“paramValue”/> </jsp:forward> <jsp:param>用于指定参数和其对应的值 例如: test.jsp forward.jsp / forforward.jsp forward1.jsp / forforward1.jsp(with parameters) Forward的页面和forward到的页面用的是同一个request 与此相对应的是 response.sendRedirect

<jsp:forward>与response.sendRedirect的区别 使用同一个request forward后的语句不会继续发送给客户端 速度快 服务器内部转换, 可以传参数 response.sendRedirect 是不同的request send后的语句会继续执行,除非return 速度慢 需要到客户端的往返,可以转到任何页面 可以传参数,直接写在url后面

jsp:useBean 通过jsp:useBean,可以在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的格式: <jsp:setProperty name=“beanName” property=“propertyName” |property=“*” value=“property value” |param=“paramName”/> 相当于beanName.setPropertyName(value)方法调用(setXxx()方法) jsp:getProperty的格式: <jsp:getProperty name=“beanName” property=“propertyName”/> 相当于beanName.getPropertyName()方法调用(getXxx()方法)

jsp:useBean(con.) 建立表单参数和Bean属性之间的关联 通过param指定表单元素的名称,通过perperty指定对应的Bean属性名称,由此建立这两个变量的关联 (SaleEntry.jsp/SaleEntry.java,用url传递参数) 通过*来设置所有属性和输入参数之间的关联 (SayHelloBean.html/SayHelloBean.jsp/HelloBean.java) 在建立Bean属性和表单参数之间的对应关系时,服务器会将对应的参数自动转换成和属性类型匹配的数据 初步解释编码问题

JSP内置对象 JSP的内置对象 out request response pageContext 用的很少 session application config 用的很少 exception Page用的很少

JSP编程---out Out内置对象是一个缓冲的输出流,用来给客户端返回信息。它是javax.servlet.jsp.JspWriter的一个实例 典型应用:向客户端输出内容 例:向客户端输出一个字符串“Hello World” (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(String paramName):返回客户端向服务器端传送的参数值,该参数由paramName指定 getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举类型数据(Enumeration) getParameterValues(String name):获得指定参数的所有值,由name指定 getRequestURI():获得发出请求字符串的客户端地址 getRemoteAddr():获取客户端的IP地址 getRemoteHost():获取客户端机器名称 getServerName():获取服务器的名字 getServletName():客户端所请求的脚本文件路径 getServerPort():获取服务器端的端口 对应类: javax.servlet.http.HttpServletRequest

JSP-response 表示的是返回给客户端的响应 是javax.servlethttp.HttpServletResponse接口的一个实例 经常用于设置HTTP标题,添加cookie、设置响应内容的类型和状态、发送HTTP重定向和编码URL 常用方法: addCookie(Cookie cookie):添加一个Cookie对象,用于在客户端保存特定的信息 addHeader(String name,String value):添加HTTP头信息,该Header信息将发送到客户端 containsHeader(String name):判断指定名字的HTTP文件头是否存在 sendError(int):向客户端发送错误的信息 sendRedirect(String url):重定向JSP文件 和<jsp:forward>的区别 sendRedirect通过客户端发起二次申请,不同的request对象 Jsp:forward是同一个request,在服务器内部转发 setContentType(String contentType):设置MIME类型与编码方式

JSP-Cookie Http协议的无连接性要求出现一种保存C/S间状态的机制 Cookie:保存到客户端的一个文本文件,与特定客户相关 通过getName和getValue的方式得到相应的名字和值

JSP—session & application <% @page session=“true”%>(默认)--表示session功能已经在jsp页面中启动 session常用方法: void setAttribute(String name,Object value) Object getAttribute(String name) boolean isNew() application ServletContext

Servlet和JSP的通信 从JSP调用Servlet可用<jsp:forward> 请求信息自动传递到Servlet 或者通过sendRedirect 从Servlet调用JSP使用 RequestDispatcher接口的forward(req, res)方法 请求信息需要显式传递(在req、res参数中) 例如: FromJspToServlet.jsp / ServletToJsp.java / ServletUseJsp.jsp forward可以用 ”/” 路径, 是指web app的根路径, servlet forward jsp的时候一定要用 “/”开头 jsp sendRedirect到servlet应该用相对路径,因为这里”/”指网站的根路径 servlet sendRedirect jsp也是 request.getContextPath起作用了 Note : IE缓存和不跳转的问题 html注释,注释不掉jsp

Eclipse插件结构 MyEclipse Plug In 1 接口1 ECLIPSE 接口2 Plug In 2 Plug In n 接口n …… ……