WEB应用目录结构
一:servlet是sun公司提供的一门用于开发动态web资源的技术
二:可以通过继承javax.servlet.GenericServlet或者javax.servlet.servlet.http.HttpServlet,这两个是默认的实现类,前者是后者的父类,在HttpServlet中只需要修改doGet,doPost等方法,而在GenericServlet中需要复写service,init,destroy等。
三:一个servlet可以映射到多个URL地址上,在Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:一种格式是“*.扩展名”,另一种格式是以正斜杠(/)开头并以“/*”结尾。/*的优先级要高。
四:如果需要在web应用启动时就加载某个servlet,需要用<load-on-startup>配置,里面的值越小,越先加载,这个配置主要用于系统的初始化。
五:如果某个servlet映射到/上,匹配不到的请求都会调用这个缺省的servlet。客户端所有的请求都会去找servlet,如果没有找到,则调用系统缺省的servlet,缺省servlet在整个web应用中如果没有找到,返回错误信息。
六:子类复写父类方法不能抛出比父类更多的异常。
七:servlet有线程安全问题,可以使用 synchronized(this)将共享访问共享变量的代码括起来。或者实现SingleThreadModel接口。这个接口解决方法是为每个请求产生多个servlet对象。
八:ServletConfig对象是用来封装传给servlet配置信息的对象,通过init传给servlet,可以在servlet中定义ServletCinfig变量保存该对象,然后再doxx中使用。
九:由于HttpServlet中已经有了ServletConfig变量config用来存储配置信息,可以直接使用getServletConfig()方法得到这个对象。
十:ServletConfig对象主要用于
1获得字符集编码
2获得数据库连接信息
3获得配置文件
十一:ServletContext代表整个web应用,可以通过ServletConfig.getServletContext得到context,应用场景:
1:多个Servlet通过ServletContext对象实现数据共享。
2:获取WEB应用的初始化参数,比如数据库连接信息。
3:实现Servlet的转发。
ServletContext context = this.getServletContext();
context.setAttribute("data", data);
RequestDispatcher rd = context.getRequestDispatcher("/view.jsp");
rd.forward(request, response);
4:利用ServletContext对象读取资源文件。
•得到文件路径:
•读取资源文件的三种方式
传统方式:BufferedReader bf = new BuffereReader(new FileReader(“路径”));
这种方式的路径是相对于tomcat的bin目录的。
使用getServletContext().getResourceAsStream(路径)去读资源文件,这个路径是相对于web应用的根目录。
使用类装载器加载资源文件,本类.class.getClassLoader().getResourceAsStream(路径),这个路径是class目录。不适合装载大的文件。
•.properties文件(属性文件)
十二:读取资源文件注意事项
如果文件在类目录下并且不是很大,适合用类装载器去读,如果文件较大而且不在类目录下,就应该使用servletContext去读。
十三:servlet中有三个容器,servletContext,session和request。