⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servlet_jd0801a.txt~

📁 详细讲述Servlet
💻 TXT~
📖 第 1 页 / 共 2 页
字号:
王正平jackwangzp@briup.com	第一章  Servlet基本1、基本概念  1) 互联网: 是连接全球计算机资源的一个网络,             是基于TCP/IP协议的。  2) 万维网(www):是互联网提供的一种服务,  它是基于HTTP协议的。通常我们所说的Web就是  万维网,现在Web的版本是Web2.0。  W3C   3) TCP/IP是一个协议族:     包含了应用层(HTTP FTP TELNET POP3)           传输层(FTP UDP)	   网络层(IP)2、开发架构   1) C/S      C --> Client      S --> 数据库服务器   2) B/S      B --> Browser      S --> 服务器            (运行了一个开发好的Web应用)3、CGI(Common GateWay Interface)    称为公共网关接口,事实上是运行在服务器端的一段应用程序,CGI也是开发Web应用的一门技术,开发语言可以有C C++ Perl VB等。   优点: 可以被程序员很容易地接受   缺点: 移植性不好         (*)客户端产生的一个请求,服务器端要   产生一个进程去处理,系统消耗非常大。4、Servlet    Servlet是SUN推出的一门开发Web应用的技术,目前最新的版本是Servlet2.5。简单的说,Servlet事实上就是一个Java类。   优点: 1) 处理客户端请求时,服务器端分配   一个线程去处理,系统消耗小,适合大量   的客户端并发访问。         2) 采用java语言编写,具有java语言的	 一切优势。   缺点: 动态生成html不方便5、Web Server     或者称为应用服务器   1) 一个软件,专门用来部署用户开发好的      Web应用(软件系统)。   2) 中间件     客户端  --> 中间件 --> Web应用   例如:   Apache(美国的软件基金会): Tomcat(开源)   IBM: WebSphere(商用)   BEA: Weblogic(商用)6、开发一个Servlet的步骤   1) 定义一个类继承HttpServlet(方式一)   2) 在web.xml中描述这个Servlet      <servlet>          <servlet-name>...</servlet-name>	  <servlet-class>...</servlet-class>      </servlet>      <servlet-mapping>          <servlet-name>...</servlet-name>	  <url-pattern>...</url-pattern>      </servlet-mapping>      注意:         a) <servlet>和<servlet-mapping>中      的子元素<servlet-name>要对应起来        b) <servlet-class>用来指定定义的	Servlet的全限命名(包名+类名)	c) <url-pattern>用来指定定位	Servlet的URL,要跟地址栏中访问	Servlet的URL对应起来。7、定义Servlet的三种方式   1) 继承HttpServlet(推荐使用)   2) 继承GenericServlet   3) 实现Servlet接口   注: 把HttpServlet中的doXXX方法、       GenericServlet中的service()方法、       Servlet接口中的service()方法       统称为service(服务)方法。 8、容器(Container)     是Web Server中的一个重要组成部分,管理着部署在Web Server上的所有Web应用和Servlet或jsp这些Web组件(component)的生命周期。   组件: 由一些API编写的程序,这些程序可以   被重复调用,去执行相关的任务。   容器分为Web容器(管理Servlet、Jsp组件)   和EJB容器(管理EJB组件)两种。     Servlet容器、Jsp容器--> Web容器   Tomcat: 只有Web容器,没有EJB容器   WebSphere、Weblogic: Web容器+EJB容器   容器是运行在WebServer中一个重要的线程   在Tomcat中容器的名字叫Catalina。9、Servlet处理请求的流程    1) 客户端发起一个请求如:http://localhost:8080 -->定位WebServer/servlet_jd0801a -->定位Web应用/basic/first --> 定位Servlet(FirstServlet)    2) 当Web Server接受到请求后,将请求交给    容器来处理,容器会根据web.xml中的    Servlet描述去查找对应的Servlet。    3) 若查找不到,服务器端返回404(访问的    资源不存在)代码返回到客户端。    4) 若找到,容器将要访问的Servlet装载进虚拟    机并且实例化。    5) 容器去调用该Servlet的service方法去    处理客户端的请求,并分配一个线程去    执行。    注意:第一次访问要装载并实例化Servlet,    第二次直接调用其service方法。10、Tomcat的目录结构   1) bin: 存放了一些启动或者停止Tomcat的           可执行文件	   startup.bat(window)	   startup.sh(unix linux)	   -->启动Tomcat	   shutdown.bat(window)	   shutdown.sh(unix linux)	   -->停止tomcat   2) common: 存放了一些Tomcat和Web应用可以      共享的类和jar文件   3) conf: 存放了一些Tomcat的重要配置文件         如server.xml tomcat-users.xml等。   4) logs: 用于记录Tomcat和Web应用输出的            日志信息   5) server: 存放一些只有Tomcat可以使用的   类和jar文件,以及Tomcat自带的Web应用。   6) share: 存放一些Web应用可以使用的    类或者jar文件。   7) temp: 存放一些临时文件的目录   8) webapps(*): 用来存放用户开发好的Web应用(多个)   9) work:存放一些和jsp有关的类和class文件11、部署到Web Server(webapps)上Web应用    的目录结构 Web应用的名字--WEB-INF---classes               |-html     |	       |-jsp      |--lib	       |-js       |--web.xml	       |-image               |-cssclasses: 放置一些Web应用中的java类编译后的字节码文件lib: 放置一些Web应用要用到的第三方的jar文件(如classes12.jar hibernate3.jar)web.xml: 描述Servlet的配置文件12、ServletContext(接口)    代表了Web应用的上下文,一个Web应用中只有一个独一无二的ServletContext。13、规范   j2ee(Java EE)是一种规范,在j2ee中SUN制订13种技术规范(如: jdbc servlet jsp等),SUN也为Servlet制订了一套规范(包含了API)。   遵守规范分为两个部分:   1) 用户开发Web应用要遵守这些规范   2) 产品供应商(如Apache提供的Tomcat)也要   遵守这些规范。		第二章 表单处理1、在Servlet中获得提交表单中信息的方法   1) String value = 	request.getParameter(name);      功能: a) 获得提交表单中的字段信息              name --> 	       和表单中的字段名字对应            b) 获得URL中?后面的参数值	      name -->	        和?后面的参数名对应   2) String[] array =         request.getParameterValues(name);      功能: 获得同一个字段名字下的多个值            ,封装到一个数组中。	    通常用于checkbox中   3) Enumeration e =        request.getParameterNames();       功能: 获得提交表单中所有字段的名字,             封装到一个枚举类型中。   4) String queryString =         request.getQueryString();      功能: 获得URL中?后面的字符串2、http request的格式     分为请求头(Http协议的头部)和     请求体(Http协议的体部)     注: http response也分为头部和体部3、表单的提交方式    1) GET        浏览器将提交表单中的字段信息放置在	请求头中,不适合大数据量的传输,	适合根据关键字作查询。    2) POST         浏览器将提交表单中的字段信息放置在	请求体中,适合大数据量的传输,如:	向服务器端上传文件等。            注意: a) 在地址栏中直接输入URL按回车,            是按GET方式提交	    b) 在表单中指定method为POST,按	    POST方式提交,指定为GET按GET	    方式提交。method不指定默认按	    GET方式提交。4、中文乱码的解决   1) 提交表单中的中文乱码       a) POST提交方式            在Servlet中获得表单字段信息之前	调用request.setCharacterEncoding				("UTF-8");       b) GET提交方式	    在Tomcat安装目录conf中的	 server.xml中配置:	 <Service>	    <Connector URIEncoding="UTF-8">         </Service>    2) response中的中文乱码         在Servlet中获得输出流之前调用    response.setCharacterEncoding("UTF-8");5、获得请求体中的信息  1) BufferReader br = 	request.getReader();	-->返回一个字符流  2) ServletInputStream is = 	reqeuest.getInputStream();	--> 返回一个字节流	第三章  Servlet的生命周期1、装载并实例化Servlet(在整个生命周期中Servlet实例只有一个)     分为两种装载方式:     a) 延迟装载(默认方式)         当客户端发起一个请求第一次去访问Servlet时,容器会将Servlet装载进虚拟机并实例化,第二次以后去访问Servlet就不会去装载并实例化。     b) 预先装载        当Web Server启动,容器在装载Web应用的时候会将Servlet装载进虚拟机并实例化。这种方式必须在web.xml中配置:     <servlet>	<load-on-startup>		number	</load-on-startup>     </servlet>     number<0: 采用延迟装载     number>=0: 采用预先装载               number越小越先被装载	       number越大越晚被装载	       number=0最晚被装载     注: 若不配置默认采用延迟装载2、init方法的调用      当Servlet被装载并实例化后,容器会调用 init方法对Servlet进行初始化,只有在init 方法调用成功后,Servlet才处于service状态, 能够处理客户端的请求。    注意: 1) 在整个Servlet的生命周期中init方法    仅被调用一次	  2) 用户在自定义的Servlet中可以覆盖有参或无参的init方法,但是若覆盖有参init方法,最好去显示调用super.init(config),对变量config进行赋值初始化。而覆盖无参init可以不调用,推荐覆盖无参init,为了使用方便。	  3) 用户定义的Servlet中可以不去覆盖init方法,覆盖只是为了使用方便(如:获得配置web.xml中的初始化参数)    (*)init方法的调用次序: 见init.ppt3、service方法的调用    当Servlet被装载实例化并初始化后,客户端发起请求,容器就会调用service方法对请求进行处理。   注意: service方法在生命周期中被调用多次,   这跟请求的次数有关。4、Servlet实例的销毁     当容器要销毁Servlet实例时,会先去调用 destroy(),在此方法中可以作下列工作:     1) 恢复一些初始化的变量     2) 关闭流资源     3) 控制所有运行在Servlet中的线程在Servlet实例被销毁之前能正常运行结束     4) 记录日志信息   注意: 1) destroy()在生命周期中仅被调用	    一次	 2) 用户定义的Servlet中可以不覆盖	    destroy()5、service方法中多线程并发访问安全的解决     1)在Servlet中不要设置实例变量或者静态 变量,而在service方法中设置局部变量。     2) 若设置了实例变量或者静态变量,最好 使用关键字synchronized进行加锁,但是这样 会使系统的并发访问性能下降。	   第四章 资源访问1、JNDI(Java命名目录接口)    JNDI属于j2ee的规范之一,它提供了一些标准的API,通过这些API我们可以获得配置的数据源。2、通过JNDI获得数据源的方式3、获得请求分发器RequestDispatcher的方式    1) RequestDispatcher dispatcher =           request.getRequestDispatcher(url);	url --> 指定要跳转的服务器端资源的	        URL(如:Servlet Jsp Html等)	url可以为	a) 绝对路径: 如"/form/show"	             "/"代表了contextPath		     ("/servlet_jd0801a")	b) 相对路径: 如"show"    2) ServletContext scx = 	super.getServletContext();    RequestDispatcher dispatcher =           scx.getRequestDispatcher(url);     url --> 只能是绝对路径     ServletContext --> Web应用的上下文4、服务器内部跳转      功能: 在服务器内部从一个Servlet跳转      到服务器端的另外一个资源      (Servlet Jsp Html)。    1) forward方式        dispatcher.forward(request,response);    2) include方式	dispatcher.include(request,response);      两种跳转的区别:      forward: 会将response体部中的信息清空      include: 将写到输出流中的信息包含进      response中,不会将response体部信息      清空。5、request(属于HttpServletRequest类型)    1) 使用范围       从客户端的一次请求到response之前是   存在的,但是response之后就不存在了。    2) 使用语法      a) 往request中存放信息        request.setAttribute(key,value);	key --> String类型	value --> Object类型      b) 从request中获取信息        Object o = 	   requeste.getAttribute(key);      c) 删除request中的信息         request.removeAttribute(key);6、服务器外部跳转(重定向)     1) 使用方式       response.sendRedirect(url);       url可以为       a) 绝对路径:           如: request.getContextPath()+		"/resource/dispatch2"	     "/servlet_jd0801a	      /resource/dispatch2"       b) 相对路径:          如: "dispatch2"     2) 功能        从一个Servlet重定向到服务器端的另外一个资源(Servlet Jsp Html)     3) 注意点        客户端发起了两次请求	第五章 Servlet中状态的持久化1、Http协议的特点    1) 基于Http协议的http request和服务器 端采用一次性的连接,这样客户端不必关心 服务器端系统的升级和维护,要获得信息只要 发起一次请求即可。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -