ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:120.89KB ,
资源ID:9343773      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9343773.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java servlet学习总结.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java servlet学习总结.docx

1、java servlet学习总结javaweb学习总结(五)Servlet开发(一)javaweb学习总结(五)Servlet开发(一)一、Servlet简介Servlet是sun公司提供的一门用于开发动态web资源的技术。Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:1、编写一个Java类,实现servlet接口。2、把开发好的Java类部署到web服务器中。按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet二、Servlet的运行过程Ser

2、vlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第步,否则,执行第步。装载并创建该Servlet的一个实例对象。 调用Servlet实例对象的init()方法。创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调

3、用Servlet的destroy()方法。 三、Servlet调用图四、在Eclipse中开发Servlet在eclipse中新建一个web project工程,eclipse会自动创建下图所示目录结构:4.1、Servlet接口实现类Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet、HttpServlet。HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。

4、HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法。4.2、通过Eclipse创建和编写Servlet选中gacl.servlet.study包,右键NewServlet,如下图所示:这样,我们就通过Eclipse帮我们创建好一个名字为ServletDemo1的Servlet,创建好的ServletDemo01里面

5、会有如下代码: 1 package gacl.servlet.study; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse;10 11 public class S

6、ervletDemo1 extends HttpServlet 12 13 /*14 * The doGet method of the servlet. 15 *16 * This method is called when a form has its tag value method equals to get.17 * 18 * param request the request send by the client to the server19 * param response the response send by the server to the client20 * th

7、rows ServletException if an error occurred21 * throws IOException if an error occurred22 */23 public void doGet(HttpServletRequest request, HttpServletResponse response)24 throws ServletException, IOException 25 26 response.setContentType(text/html);27 PrintWriter out = response.getWriter();28 out.p

8、rintln();29 out.println();30 out.println( A Servlet);31 out.println( );32 out.print( This is );33 out.print(this.getClass();34 out.println(, using the GET method);35 out.println( );36 out.println();37 out.flush();38 out.close();39 40 41 /*42 * The doPost method of the servlet. 43 *44 * This method i

9、s called when a form has its tag value method equals to post.45 * 46 * param request the request send by the client to the server47 * param response the response send by the server to the client48 * throws ServletException if an error occurred49 * throws IOException if an error occurred50 */51 publi

10、c void doPost(HttpServletRequest request, HttpServletResponse response)52 throws ServletException, IOException 53 54 response.setContentType(text/html);55 PrintWriter out = response.getWriter();56 out.println();57 out.println();58 out.println( A Servlet);59 out.println( );60 out.print( This is );61

11、out.print(this.getClass();62 out.println(, using the POST method);63 out.println( );64 out.println();65 out.flush();66 out.close();67 68 69 这些代码都是Eclipse自动生成的,而web.xml文件中也多了和两对标签,这两对标签是配置ServletDemo1的,如下图所示:然后我们就可以通过浏览器访问ServletDemo1这个Servlet,如下图所示:五、Servlet开发注意细节5.1、Servlet访问URL映射配置由于客户端是通过URL地址访问w

12、eb服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用元素和元素完成。元素用于注册Servlet,它包含有两个主要的子元素:和,分别用于设置Servlet的注册名称和Servlet的完整类名。 一个元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:和,分别用于指定Servlet的注册名称和Servlet的对外访问路径。例如:1 2 ServletDemo13 gacl.servlet.study.ServletDemo14 5 6 7 ServletDemo18 /servlet/

13、ServletDemo19 同一个Servlet可以被映射到多个URL上,即多个元素的子元素的设置值可以是同一个Servlet的注册名。 例如: 1 2 ServletDemo1 3 gacl.servlet.study.ServletDemo1 4 5 6 7 ServletDemo1 8 /servlet/ServletDemo1 9 10 11 ServletDemo112 /1.htm13 14 15 ServletDemo116 /2.jsp17 18 19 ServletDemo120 /3.php21 22 23 ServletDemo124 /4.ASPX25 通过上面的配置,

14、当我们想访问名称是ServletDemo1的Servlet,可以使用如下的几个地址去访问:http:/localhost:8080/JavaWeb_Servlet_Study_20140531/servlet/ServletDemo1http:/localhost:8080/JavaWeb_Servlet_Study_20140531/1.htmhttp:/localhost:8080/JavaWeb_Servlet_Study_20140531/2.jsphttp:/localhost:8080/JavaWeb_Servlet_Study_20140531/3.phphttp:/localh

15、ost:8080/JavaWeb_Servlet_Study_20140531/4.ASPXServletDemo1被映射到了多个URL上。5.2、Servlet访问URL使用*通配符映射在Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:一种格式是*.扩展名,另一种格式是以正斜杠(/)开头并以/*结尾。例如:1 2 ServletDemo13 gacl.servlet.study.ServletDemo14 5 6 7 ServletDemo18 /*可以匹配任意的字符,所以此时可以用任意的URL去访问ServletDemo1这个Servlet,如下图所示:对于如下

16、的一些映射关系:Servlet1 映射到 /abc/* Servlet2 映射到 /* Servlet3 映射到 /abc Servlet4 映射到 *.do 问题:当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应 Servlet引擎将调用Servlet1。当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应 Servlet引擎将调用Servlet3。当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪个servlet响应 Servlet引擎将调用Servlet1。当请求URL为

17、“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应 Servlet引擎将调用Servlet2。当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应 Servlet引擎将调用Servlet2。匹配的原则就是谁长得更像就找谁5.3、Servlet与普通Java类的区别Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建

18、,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。 如果在元素中配置了一个元素,那么W

19、EB应用程序在启动时,就会装载并创建Servlet的实例对象、以及调用Servlet实例对象的init()方法。 举例: invoker org.apache.catalina.servlets.InvokerServlet 1 用途:为web应用写一个InitServlet,这个servlet配置为启动时装载,为整个web应用创建必要的数据库表和数据。5.4、缺省Servlet如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet。 凡是在web.xml文件中找不到匹配的元素的URL,它们的访问请求都将交给缺省Servlet

20、处理,也就是说,缺省Servlet用于处理所有其他Servlet都不处理的访问请求。 例如: 1 2 ServletDemo2 3 gacl.servlet.study.ServletDemo2 4 1 5 6 7 8 9 ServletDemo210 /11 当访问不存在的Servlet时,就使用配置的默认Servlet进行处理,如下图所示:在confweb.xml文件中,注册了一个名称为org.apache.catalina.servlets.DefaultServlet的Servlet,并将这个Servlet设置为了缺省Servlet。 1 2 default 3 org.apache.

21、catalina.servlets.DefaultServlet 4 5 debug 6 0 7 8 9 listings10 false11 12 113 14 15 16 17 default18 /19 当访问Tomcat服务器中的某个静态HTML文件和图片时,实际上是在访问这个缺省Servlet。5.5、Servlet的线程安全问题当多个客户端并发访问同一个Servlet时,web服务器会为每一个客户端的访问请求创建一个线程,并在这个线程上调用Servlet的service方法,因此service方法内如果访问了同一个资源的话,就有可能引发线程安全问题。例如下面的代码:不存在线程安全问

22、题的代码: 1 package gacl.servlet.study; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 10 public class ServletDemo3 extends HttpServlet

23、11 12 13 public void doGet(HttpServletRequest request, HttpServletResponse response)14 throws ServletException, IOException 15 16 /*17 * 当多线程并发访问这个方法里面的代码时,会存在线程安全问题吗18 * i变量被多个线程并发访问,但是没有线程安全问题,因为i是doGet方法里面的局部变量,19 * 当有多个线程并发访问doGet方法时,每一个线程里面都有自己的i变量,20 * 各个线程操作的都是自己的i变量,所以不存在线程安全问题21 * 多线程并发访问某一个方法的时候,如果在方法内部定义了一些资源(变量,集合等)22 * 那么每一个线程都有这些东西,所以就不存在线程安全问题了23 */24 int i=1;25 i+;26 response.getWriter().write(i);27 28

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1