路径问题
相对路径: 相对于地址栏的路径,找资源;
不用写虚拟目录,简单的找到资源;
不稳定;
绝对路径: 永远从代码写出来的路径查找;
很稳定,一定有效;
需要写虚拟目录,如果web工程的虚拟目录经常变化,需要我们经常改动代码;(可以在jsp页面中,使用EL表达式动态获取虚拟目录的名称)
servlet
servlet家族体系介绍(了解)
HttpServlet(记住名字)
概述
是属于Servlet下面专门处理http请求的实现类,我们通常都会继承这个类;
实现方式
生命周期(听懂)
从servlet对象创建,到servlet对象销毁整个过程就是servlet的生命周期;
对应方法
线程安全问题(听懂)
发生的原因
因为servlet对象是单例的;所以当我们在servlet中使用成员变量的时候,如果多个线程同时给这个成员变量赋值,那么就有可能会出现线程安全问题;
解决办法
- 尽量避免使用成员变量,改用局部变量即可;
- 使用锁;(肯定不会用,因为多线程情况下,效率极低)
servlet的映射路径配置(能根据实际情况配置相应路径)
一共有3种配置方式
注意事项
- 如果多种方式,都匹配到了访问路径,那么服务器会优先选择优先级最高的servlet执行;
- 同种配置方式,不能重复映射;(不能冲突),总结一句话:一个servlet可以映射多个路径,但是不能多个servlet映射同一个路径;
修改servlet创建时机(听懂)
服务器默认的servlet(了解)
servletConfig(了解)
概述
ServletConfig的配置方式
ServletConfig的常用方法
获取ServletConfig对象的方式
通过重写servlet的init方法,init方法的形参就是servletConfig类型,将来服务器创建servlet对象的时候,会自动将ServletConfig对象创建出来并传递给servlet对象;
接口中的方法
ServletContext
概述
作用
- ServletContext可以为所有的servlet创建对象的时候,提供初始化的配置参数;
- ServletContext可以作为map性质容器使用,可以供所有的servlet自主的存取数据;
- ServletContext对象还可以获取服务器上面的指定资源的绝对路径;
作为为servlet提供配置参数使用
常用方法(重点练习 getRealPath)
获取路径的方式
参考代码
总结(记住)
- 如果是WEB目录下,必须使用ServletContext的getRealPath方法,传递实际路径即可;
- 如果是src下,使用类加载器调用getResource方法,传递文件名即可;
- 如果是包下,使用类的字节码文件对象调用getResource方法,传递文件名即可;
注意:
getResource方法的返回值是URL对象,所以如果需要获取字符串路径,还需要再调用getPath方法即可;
把ServletContext当成容器操作的方法(重点,需要掌握)
注解开发servlet(常用)
概述
通过给我们编写的servlet添加一个注解,指定servlet的urlpattern即可;
使用这个webSerlvet("urlpattern")注解之后,可以不用在web.xml文件中配置servlet了;
webservlet注解中的属性介绍
综合案例(好好练习)
效果
注意事项
- 表单的提交方式必须是get,否则中文乱码;
- 表单中的每个input标签,必须有name属性,否则表单提交的时候,将忽略这个表单项;
- 从浏览器获取提交给servlet的数据,使用的是 request对象中的getParameter(“表单中input标签的name值”);
- 给浏览器响应数据的时候,暂时不要用中文;
- 往txt文件中写学生信息的时候,要续写;(建议,路径使用ServletContext动态获取服务器WEB-INF的绝对路径);