Java基础增强
可变参数:
Servlet生命周期:
servlet对象不是web服务器启动的时候创建,而是第一次访问的时候创建,一旦创建后就会存在服务器内存中,直到服务器停掉后才会调用destroy方法摧毁servlet对象,总结:servlet对象在第一次访问创建好,就服务于所有的请求,不管有多少人请求服务器,访问的都是同一个servlet
多个线程操作共享的资源要注意多线程问题。
web开发中的常用对象:
servletConfig对象:用于封装servlet的配置信息
在实际的开发中,有一些东西不适合在servlet程序中写死,这类数据就可以通过
配置方式配给servlet,例如:
数据库的链接地址。
ServletContext方法的应用:
由于一个web应用中的所有servlet共享通一个servletContext对象,所以多个servlet通过servletContext对象实现数据共享。
servletContext对象通常也被称之为context域对象。和.Net中的Application对象一样是整个应用程序的全局对象。
web开发中还有另外3个域对象:request、session、page
ServletContext对象的生命周期是在web服务器启动的时候创建,在服务器关闭的时候销毁,换句话说就是web服务器中有多少个web应用就会有多少个servletContext对象。
Java中的转发和重定向
转发:客户机发请求,被servlet处理后定向到指定的页面。(客户机只需发一次请求)
重定向:客户机发两次请求,一次是请求servlet,二次是servlet告诉浏览器去请求指定的页面。(客户机发两次请求)
转发在开发中使用的非常的多。
如:客户机请求一个servlet,然后servlet处理请求后产生客户机想看的数据,在servlet里面一般是不适合做输出的,因为我们的数据在输出给浏览器端的时候是需要美化的,美化的话一定是要经过html的排版和css的修饰,让html来套servlet处理请求后产生的数据。
如果是在servlet中把数据美化了,是很难的。这样就大量的使用的转发的技术,是servlet处理后产生的数据转发给jsp来输出。
servlet处理完的数据,不能保存在context域中,通过context域传数据,因为servletContext对象是全局的对象,而应该是通过request域传递servlet处理的数据给jsp页面。
软件开发中的配置文件有两种:
- Properties 文件 2. xml 文件
Properties 文件是存一些没有关系的数据;xml文件是存一些有层级联系的数据
传统的方式FileInputStream中的参数路径是相对路径,相对路径是相对的是谁执行该代码,是Java虚拟机执行该代码,因此就是相对虚拟机的程序的目录
上面的方式在什么时候使用呢?
例如:下载的时候。客户机需要下载文件,就需要读取文件的文件名,这个时候就需要这种方法去读配置文件
开发中一般是在servlet中调用数据访问层中的代码,那在数据访问层中需要读取配置文件中的数据库连接,这样就不能使用servlet的servletContext对象去读了,当让有人说是在servlet中将servletContext对象通过参数传给数据访问层中的方法,如果是这样的话就servlet层就侵入数据访问层了,这样就耦合性比较大,不符合软件设计的思想。
就只能通类装载器去读去了配置信息了。
在DAL类中有增删改查等的方法,如果每个方法当中都是读取一次配置文件,就没有意义了,配置文件中的数据库连接只需要读取一次,所以就将读取数据库连接的代码写在静态代码块中去。
上面的方法通过类装载器读取文件成流数据,这样是有问题的,类加载器只读取一次数据,就保存在内存中了,这样如果改了配置文件信息后,是不能读取到更改后的数据,就需要通过类装载器只读取文件的路径,然后通过传统的方法读取配置文件,就可以读取到更改后的数据了。
在servlet中用outputStream输出中文

















浙公网安备 33010602011771号