Java基础增强

clip_image001

clip_image002

可变参数:

clip_image003

Servlet生命周期:

servlet对象不是web服务器启动的时候创建,而是第一次访问的时候创建,一旦创建后就会存在服务器内存中,直到服务器停掉后才会调用destroy方法摧毁servlet对象,总结:servlet对象在第一次访问创建好,就服务于所有的请求,不管有多少人请求服务器,访问的都是同一个servlet

clip_image004

多个线程操作共享的资源要注意多线程问题。

web开发中的常用对象:

clip_image005

servletConfig对象:用于封装servlet的配置信息

在实际的开发中,有一些东西不适合在servlet程序中写死,这类数据就可以通过

配置方式配给servlet,例如:

数据库的链接地址。

clip_image006

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页面。

软件开发中的配置文件有两种:

  1. Properties 文件 2. xml 文件

Properties 文件是存一些没有关系的数据;xml文件是存一些有层级联系的数据

clip_image007

传统的方式FileInputStream中的参数路径是相对路径,相对路径是相对的是谁执行该代码,是Java虚拟机执行该代码,因此就是相对虚拟机的程序的目录

clip_image008

clip_image009

上面的方式在什么时候使用呢?

例如:下载的时候。客户机需要下载文件,就需要读取文件的文件名,这个时候就需要这种方法去读配置文件

开发中一般是在servlet中调用数据访问层中的代码,那在数据访问层中需要读取配置文件中的数据库连接,这样就不能使用servlet的servletContext对象去读了,当让有人说是在servlet中将servletContext对象通过参数传给数据访问层中的方法,如果是这样的话就servlet层就侵入数据访问层了,这样就耦合性比较大,不符合软件设计的思想。

就只能通类装载器去读去了配置信息了。

clip_image010

clip_image011

在DAL类中有增删改查等的方法,如果每个方法当中都是读取一次配置文件,就没有意义了,配置文件中的数据库连接只需要读取一次,所以就将读取数据库连接的代码写在静态代码块中去。

上面的方法通过类装载器读取文件成流数据,这样是有问题的,类加载器只读取一次数据,就保存在内存中了,这样如果改了配置文件信息后,是不能读取到更改后的数据,就需要通过类装载器只读取文件的路径,然后通过传统的方法读取配置文件,就可以读取到更改后的数据了。

clip_image012

在servlet中用outputStream输出中文

clip_image013

clip_image014

clip_image015

clip_image016

posted @ 2014-01-21 11:24  weifb  阅读(139)  评论(0)    收藏  举报