Servlet小结
一、Servlet的init()和构造方法仅仅调用一次,仅仅会在第一次请求时候被调用一次,或者当Servlet配置为启动时候最早加载则会在启动时候调用,配置方法是:<load-on-startup>0</load-on-startup>
二、因为Servlet只会调用构造方法一次,所以Servlet是单例的,在Servlet容器中,一个Servlet类只有一个Servlet实例存在。
三、Servlet处理请求是方式是多线程的,也就是说,一个请求会开启一个独立线程来处理。所以,在Servlet的处理方法应该注意线程安全。
四、Servlet能够配置参数,在Servlet类里能够读取参数。
<
init-param
>
<
param-name
>n1
</
param-name
>
<
param-value
>v1
</
param-value
>
</
init-param
>
<
init-param
>
<
param-name
>n2
</
param-name
>
<
param-value
>v2
</
param-value
>
</
init-param
>
ServletConfig cfg = getServletConfig();
String p1 = cfg.getInitParameter(
"n1");
String p2 = cfg.getInitParameter(
"n2");
五、Servlet有输出流,输出流分两种,一种是字节流,一种是字符流,也能够获取输入流,好比上传文件时候就有输入流,输入流的只能是字节流。
ServletOutputStream os = response.getOutputStream();
PrintWriter out = response.getWriter();
ServletInputStream is = request.getInputStream();
六、一个Servlet的配置对象ServletConfig对象只有一个,配置的参数也只读一次,在调用init()时候读取Servlet配置,并构建ServletConfig对象。
七、ServletConfig对象只能在Servlet中访问,不能被JSP访问。ServletContext对象能够被JSP访问。
八、一个Servlet有且只有一个ServletConfig对象,一个Web应用有且仅有一个ServletContext对象,ServletContext对象在JSP中经过application内置对象来访问。
九、ServletContext也可也配置本身参数,在web.xml中配置,在任何JSP或Servlet中均能获取到。
<
context-param
>
<
param-name
>cn1
</
param-name
>
<
param-value
>cv1
</
param-value
>
</
context-param
>
<
context-param
>
<
param-name
>cn2
</
param-name
>
<
param-value
>cv2
</
param-value
>
</
context-param
>
ServletContext ctx= getServletContext();
String c1 = ctx.getInitParameter(
"cn1");
String c2 = ctx.getInitParameter(
"cn2");