1、servlet生命周期
1、网站中所有的servlet接口的实现类的实例对象,只能由http服务器负责创建。开发人员不能手动创建servlet接口实现类的实例对象。
2、在默认情况下,http服务器接收到当前servlet接口实现类第一次请求时,会自动创建这个servlet接口实现类的实例对象。
3、在手动配置情况下,要求http服务器在启动的时候自动创建某个servlet接口实现类的实例对象
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.bjpowernode.controller.LoginServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
4、在http服务器运行期间,一个servlet接口实现类只能被创建一个实现类对象。
5、在http服务器关闭时刻,会将所有的servlet实现类对象进行销毁。
2、HttpServletRespones接口
一:介绍
1、HttpServletRespones接口来自于Servlet规范中,在tomcat中存在于servlet-api.jar中。
2、HttpServletRespones接口实现类由Http服务器负责提供
3、HttpServletRespones接口负责将doGet/doPost方法执行结果写入到【响应体】交给游览器。
4、开发人员习惯于将HttpServletRespones接口修饰的对象称为【响应对象】
二:主要功能
1、将执行结果以二进制的形式写入到【响应体】
2、设置响应头[content-type]属性值,从而控制游览器使用对应编译器将响应体二进制数据编译为[文字,图片,视频,命令]
3、设置响应头中【location】属性,将一个请求地址赋值给location,从而控制游览器向指定服务器发送请求。
三:注意点
1、out.writer方法在将结果写入到响应体的时候,如果结果是一个数字,那么会将该数字对应的ASCII码写入到响应体中。 比如写入数字97,那么游览器展示的是 a
2、在实际开发中,我们都是使用out.print()方法,该方法不会将数字转换成ASCII码。会将结果原样输出。
3、游览器根据响应包中的响应头里面的content-type属性的值,来解析相应体中的二进制数据。在默认的情况下content-type属性的值默认为 "text",此时游览器会采用【文本编译器】对响应体中的二进制进行编译。只会将响应体里面的二进制,以文本的形式进行输出展示,不会解析html标签的命令。
解决办法:一定要在拿到输出流之前,通过响应对象对响应头中的content-type属性进行一次重新赋值用于指定游览器采用正确的编译器。content-type="text/html"
respones.setContentType("text/html");
4、响应头中的charset属性值默认等于IOS-8859-1,那么在不做修改的情况下。游览器会使用IOS-8859-1的字符编码对响应体中的二进制中文进行解码操作,但是中文解码需要UTF-8所以这时候就会出现乱码的情况。解决办法:respones.setContentType("text/html;charset=UTF-8");
5、重定向:通过服务器端控制游览器的发送请求。
respones.sendRedirect("http://www.baidu.com");//通过响应对象,将地址赋值给响应头中的location属性。
游览器接收到响应包之后,发现相应头中存在location属性,自动通过地址栏向location指定的网站发送请求。
本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com