《servlet课堂笔记.pdf》由会员分享,可在线阅读,更多相关《servlet课堂笔记.pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、Servlet 1. 是什么:servlet 是一个小应用程序(处理网络请求,是一个java类)2. 作用: 处理从客户端发送的请求及服务端的响应。3. 开发步骤:a) 写一个类 ServletDemo1,继承 javax.servlet.GenericServlet类,实现 service方法b) 打开 web.xml 文件,做如何配置c) 部署到服务器上d) 打开浏览器,通过http:/localhost:8080/day08_00_servlet/abc访问. 4. Servlet 的执行调用过程 (清楚) 5. servlet 的生命周期 (牢记) public void init
2、(ServletConfig) ; 初始化方法public service(ServletRequest,ServletResponse) ; 服务方法public destroy() ; 销毁方法servlet 的创建方法:两种默认情况下 ,servlet对象在第一次请求的时候调用构造函数创建,创建之后自动调用带参的init 方法, 然后调用 service方法.destroy方法在停止服务器或者停止应用的时候调用。整个过程中,init方法和 destroy 方法只会调用一次,而service方法会反复调用。demo/servlet-nanocn*itcaataervlet*ServletD
3、emol!ServletDemo1derao=newServletDemoljaSJ-roapping的作用是定义一映射关系,就是访问的方式1/abogrvlgtogfnol.dassEeb.xrd|davOSJ_ltetO;5:5执行货咖痛:华,发进敗到可以通过配置 web.xml 文件来改变创建servlet 的时机 .配置如下此时在服务器启动的时候就创建对象并进行初始化了.此Servlet 对 象 在 服 务 器 停 止 或 者 应 用 停 止 时 才 死 亡 .(必须从 2 开始, 因为 1 的话已经在默认的web.xml 中的 default 中已经引用了)6. url 配置(掌握)
4、 两种:(以/开始, /代表的是 web 程序的根目录,可以是 /abc/tt.ff 但是/*. 后缀名是绝对不允许的, *.abc 是可以的,*代表的是任意东东)配置优先级:精确匹配 以/开头的匹配 以*开头的匹配如果配置成 /(仅有有一个 /,那就是默认的 servlet,就是配置所有找不到的 URL的 servlet) 那么就是一个缺省的servlet, 此 Servlet处理所有找不到匹配路径的url. 一个servlet 可以配置多个url-pattern 7. servlet 的创建问题 (掌握) 创建一个 servlet 有 3 中方式 : servlet-naiBOdeano/
5、servlet-.,icaai:.serv.anK定义启动的取序(il取自然教i定义了此标签那么;在服务語启动的时候就创建了-fl/load-on-startupsjarvletDemoliuri-pateerrjitfflEXUrI=JtfJJi,嚙壷方式有两幹i./开头./代表了应用程序目录,必领有.不鹿是/*.0这种GES,如果以此开头+后面不要加任何卮缀-开头.此时必須加卮缀名.前面不能加/!对于如下的一些映射关系:_Servlet1铁射到/she/*Servlet2映射到AServlet3映射到/abc_Eervlet_当请求m为VxzX/yyy/a.d0”时.V*,和S.do匹配.
6、哪个servlet响应ServlB|调用Servlet2*1) 采用实现 servlet 接口, (不推荐)2) 采用继承 GenericServlet类( 不推荐 ) 3) 采用继承 HttpServlet(推荐) (我们通常是继承HttpServlet,分发的概念给 doget 或者 dopost 方法,就不用写 servlet方法了。 )8. serlvet 的线程安全 (明白) 明确: Servlet的设计是一个 单实例 多线程。线程安全要求将变量创建成一个局部变量,而不要创建成实例变量. 解决方法:实现接口implementssingleThreadModel 就变成了多实例了的,但
7、是服务器受不了。 最终就是不创建属性 (实例)变量了,创建局部变量。二、servletConfig 1. 作用:就是拿取 servlet 的相关配置 . 2. 如何获取 ServletConfig对象. a:: 通过 init方法获取b: 通过 servlet实例的 getServletConfig()方法获取,注意不要写init带参的函数。3. 拿取配置参数: (掌握) a. 拿取单个配置参数Servlet 代码:b. 拿取所有的参数 : ServletDemQlcn.icasu,servleuconfig,ServlecDeraoK/servlet-classinaii)ie3SHr:/革
8、取单个参蔌Stringr.ajne=cor.fig.geclr.itParameter(nnameTI;Syaterr.*o:t*pnntln(rair.ei;servlet 代码:ServletConfig与 ServletContext中,web.xml 不相同,其中 ServletConfig的配置信息是在 配置信息 name 张无忌 中间,而ServletContex 的配置信息是在 配置信息 name 阳阳 的后面。每次配置好了之后要重启服务器。三、ServletContext ( 非常重要 ) (学习精髓:先拿到对象,在使用对象。 )1. 每个 web 应用都有一个唯一的servl
9、etContext 对象(应用程序下面) . 2. 在每个应用加载的时候,服务器就会创建servletContext 对象。关闭服务器时,此对象死亡。3. ServletContext对象是一个域对象 (领域) 4. 获得 servletContext 的方式ScxvlctDemo1cn.tcastsczrvletconfigr.S&x-vletDem.c1nane-.-pararr.-na.ir-epar:amvalue/paramp*ram-namege25-c/DGram-valueb.eightpaz:am-valiiO180/拿到所有时参数ErJ-jmera,tionwhile(en
10、u.asMcrellemenus()fenj*nextElement();-coTifg.getlnitFaranietertJair.ea();enuSystem.-out.println(r.ame+:n+config.getlnitFaramete:(na:ne)jr.aine/演不获取aervletConuex的方式1_采用servlecConfig对象获得香用的gedervletContext(1方法*3request*geSeaaion()geServletContext*GantliorAdministrator2.代码分别是 : ServletContext sc = getS
11、ervletConfig.getServletContext(); ServletContext sc1 = getServletContext(); ServletContext sc2 =request.getSession().getServletContext(); 5. 应用1. url 的写法注意:a)客户端跳转 :(由浏览器发出的请求 ) 一定需要在地址前加应用的名称b)服务端跳转 : (由服务端发出的请求) 不需要在地址前加应用的名称2. 应用1) 实现多个 servlet数据共享 ,SerletContext 是一个容器对象 (即域对象,所谓域对象是指对象的底层有一个map对
12、象)2) 获取全局配置参数配置参数:在 后面 名字 键值对 3) 请求转发,只有一个请求。地址栏是不会变的/L拿取servletContext对豪ServletContextgetServletContext0jsc/2.存储数据setAttribute(name令孤冲):System,out.prirrtlW#储数搶完;sc.级書_隸涵getServletContext();ServletContextsc2.拿取数据=(String)sc.getAttribute(name);StringSystem,out.printIn(name);/l.到全局对氟=getServletContext
13、():ServletContentsc/2.拿取单个配置参数gatInitParameter(naine);Stringname=System,out,printIn(name),b._./*取所為的配置夢教getlnitParameterNamesC);Enumerationwhile(enu.hasfloreEleStringkey=enu.nextElement():System,out.printIn(key+sc.getlnitParameteenu=sc*:mentsO)像 reques 对象中存储数据。通过全局对象拿到请求转发器转发请求。请求转发和响应(把内容转发过去)请求包含(
14、把转发器的转过来)Response 请求重定向。是两个请求,地址栏发生变化。Response.setStatus(302); 4) 获取资源文件三种方式优缺点 : a): 采用 servletContext 对象获得 . 优点: 任意文件,任意路径都可获得缺点: 必须在 web 环境下步骤: 1.拿到资源文件的绝对路径2.构建输入流对象b): 采用 resourceBundle获得。路径可以用 .或者/都可以表示。优点: 非 web 环境下,不能拿到web 文件下的资源缺点: 只能获取 properties 文件c): 采用类加载器获得。其中默认路径是从src 下面寻找。优点: 任意路径 ,任
15、意文件缺点:代码麻烦获取元类:类加载器就是加载类Tomcat安装的路径不能放在带有中文或者空格的路径下面,否则运行程序的时候,会报fileNoFound 等错误。关联与椒谈羌关icrvl?!KonligvoidimltSfervletConfig)ivoidervicei(Srvbtfi.qLj-eitlServbbftespnnse)oiddesoyQ+gctServlctCgnfigO关ft实现依赖ServlelRequest-jt5IMelRes-CHin-seUizt p他说相关nterfaHtlp&erwftelHtlp&ervletresponseHttpEH=类URLEncode
16、rjamlafK.ObjectLj&VCLactBURLEaca-derpublicc-lUFLEncndcrcitcnteOb.iectHTML格式编钨的实用工具类:该类包含了将StTins转換为icotierodedWIME格式的静态方法=有关HTML格式编码的更多愔.&-请麩阅Hm魁,对Stride萆码时,使闬以下拽则:字 母 数 字 字 符 到、到#z*和TcT到保 持 不 耷.特殊字符空格字符转換力一个加号、所有其他字拧都是不安全的,因此首光使用一些_码机制将它们转换为一个或多个字节。然后每个丰节用一个包含3个字符的字符自表示r其中为这字节的两位十六进制表示形式:推荐的编钨机制是UT
17、F-8.但是,出干兼窨性考虑,如果未指定一种编码,则使用柑应平台的馱认编码*7和保持不变:类URLRncoderjy3i.lana.Objectjava,net.UEL&JieQ-derpublicextendslIRl.ncndRT;ObiectHTML格式編码的实用工具类,该类包含了将String转换为applicaticm/j-Hw-fcirnrlencodedMIME格式的静态方法。有关HTML格 式 编 码 的 更 多 倌 请 參 阅HTHL靈,对Strine编码时,使闬以下規则:字 母 数 字 字 符 到、到#Z和_0到 保 持 不 变。特殊字符空格字符T转换为一个加号、*珩有其fe字符都是不安全的,因此首先使用一些煽码机制将它们转換为一个或多个字节。然后每个字节用一个包含3个字符 的 字 符 孝 表 示,其 中A_V为该字节的两位十六进(W表示形式:推荐的编码机制是UTF-8.但是,出干兼窨性考虑,如果未指定一种编码,则徬用相应平台的K认编码、,和保持不交。
限制150内