JavaWeb核心-Servlet(二)

路径问题

相对路径: 相对于地址栏的路径,找资源;
不用写虚拟目录,简单的找到资源;
不稳定;
绝对路径: 永远从代码写出来的路径查找;
很稳定,一定有效;
需要写虚拟目录,如果web工程的虚拟目录经常变化,需要我们经常改动代码;(可以在jsp页面中,使用EL表达式动态获取虚拟目录的名称)

servlet

servlet家族体系介绍(了解)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lVpKGI0s-1631111786741)(day25-课堂笔记-servlet.assets/image-20210908094030869.png)]

HttpServlet(记住名字)

概述

是属于Servlet下面专门处理http请求的实现类,我们通常都会继承这个类;

实现方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HxwmQpCo-1631111786743)(day25-课堂笔记-servlet.assets/image-20210908095645271.png)]

生命周期(听懂)

从servlet对象创建,到servlet对象销毁整个过程就是servlet的生命周期;

对应方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NJ27vLuR-1631111786745)(day25-课堂笔记-servlet.assets/image-20210908102231608.png)]

线程安全问题(听懂)

发生的原因

因为servlet对象是单例的;所以当我们在servlet中使用成员变量的时候,如果多个线程同时给这个成员变量赋值,那么就有可能会出现线程安全问题;

解决办法

  1. 尽量避免使用成员变量,改用局部变量即可;
  2. 使用锁;(肯定不会用,因为多线程情况下,效率极低)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ty8CXGC1-1631111786750)(day25-课堂笔记-servlet.assets/image-20210908105312782.png)]

servlet的映射路径配置(能根据实际情况配置相应路径)

一共有3种配置方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TY9gFunK-1631111786752)(day25-课堂笔记-servlet.assets/image-20210908112032570.png)]

注意事项

  • 如果多种方式,都匹配到了访问路径,那么服务器会优先选择优先级最高的servlet执行;
  • 同种配置方式,不能重复映射;(不能冲突),总结一句话:一个servlet可以映射多个路径,但是不能多个servlet映射同一个路径;

修改servlet创建时机(听懂)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JIUSVzQU-1631111786753)(day25-课堂笔记-servlet.assets/image-20210908115257216.png)]

服务器默认的servlet(了解)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GPOoJpch-1631111786754)(day25-课堂笔记-servlet.assets/image-20210908115712031.png)]

servletConfig(了解)

概述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-llvovvg9-1631111786755)(day25-课堂笔记-servlet.assets/image-20210908141103116.png)]

ServletConfig的配置方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EttWLQli-1631111786757)(day25-课堂笔记-servlet.assets/image-20210908142059204.png)]

ServletConfig的常用方法

获取ServletConfig对象的方式

通过重写servlet的init方法,init方法的形参就是servletConfig类型,将来服务器创建servlet对象的时候,会自动将ServletConfig对象创建出来并传递给servlet对象;

接口中的方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vNR4B4hA-1631111786758)(day25-课堂笔记-servlet.assets/image-20210908143353727.png)]

ServletContext

概述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-duRd3usv-1631111786760)(day25-课堂笔记-servlet.assets/image-20210908144731613.png)]

作用

  1. ServletContext可以为所有的servlet创建对象的时候,提供初始化的配置参数;
  2. ServletContext可以作为map性质容器使用,可以供所有的servlet自主的存取数据;
  3. ServletContext对象还可以获取服务器上面的指定资源的绝对路径;

作为为servlet提供配置参数使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nim2XHS2-1631111786761)(day25-课堂笔记-servlet.assets/image-20210908151454968.png)]

常用方法(重点练习 getRealPath)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z6A0iElt-1631111786761)(day25-课堂笔记-servlet.assets/image-20210908153059192.png)]

获取路径的方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yCJoG7qM-1631111786762)(day25-课堂笔记-servlet.assets/image-20210908153939208.png)]

参考代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4E9errXK-1631111786763)(day25-课堂笔记-servlet.assets/image-20210908155428176.png)]

总结(记住)

  1. 如果是WEB目录下,必须使用ServletContext的getRealPath方法,传递实际路径即可;
  2. 如果是src下,使用类加载器调用getResource方法,传递文件名即可;
  3. 如果是包下,使用类的字节码文件对象调用getResource方法,传递文件名即可;

注意:

​ getResource方法的返回值是URL对象,所以如果需要获取字符串路径,还需要再调用getPath方法即可;

把ServletContext当成容器操作的方法(重点,需要掌握)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CIV8AMZf-1631111786764)(day25-课堂笔记-servlet.assets/image-20210908161820149.png)]

注解开发servlet(常用)

概述

通过给我们编写的servlet添加一个注解,指定servlet的urlpattern即可;
使用这个webSerlvet("urlpattern")注解之后,可以不用在web.xml文件中配置servlet了;

webservlet注解中的属性介绍

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pDARIGAI-1631111786765)(day25-课堂笔记-servlet.assets/image-20210908163653331.png)]

综合案例(好好练习)

效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xmE44gus-1631111786765)(day25-课堂笔记-servlet.assets/image-20210908164350193.png)]

注意事项

  1. 表单的提交方式必须是get,否则中文乱码;
  2. 表单中的每个input标签,必须有name属性,否则表单提交的时候,将忽略这个表单项;
  3. 从浏览器获取提交给servlet的数据,使用的是 request对象中的getParameter(“表单中input标签的name值”);
  4. 给浏览器响应数据的时候,暂时不要用中文;
  5. 往txt文件中写学生信息的时候,要续写;(建议,路径使用ServletContext动态获取服务器WEB-INF的绝对路径);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值