Servlet
Servlet是一个运行在服务器端的Java小程序,通过HTTP协议用于接收来自客户端请求,并发出响应.
servlet方法:
public void service(ServletRequest req,ServletResponse res)throws ServletException,java.io.IOException;
ServletRequest req:代表着请求对象,该对象中有HTTP协议的请求部分的所有内容。它的实现类由服务器提供的,封装数据也是服务器来做的。
ServletResponse res:代表着响应对象,该对象中由我们写数据(HTTP协议的响应部分)进去。它的实现类也是由服务器提供的。
service:由服务器调用,每次请求都会调用一次。服务器采用的是多线程机制
Servlet对象的生命周期
诞生:用户第一次访问时,由容器创建他的实例。
活着:一旦创建就驻留内存(单例)。每次用户的访问,容器都会调用sevice方法发出响应(多线程)
死亡:应用被卸载或者Tomcat关闭了
Servlet的映射
web.xml
<servlet>
<servlet-name>
<servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>
<url-pattern>
</servlet-mapping>
ServletContext
代表着当前应用。每个应用只有一个ServletContext对象的实例,由容器提供。
通过调用方法ServletConfig.getServletContext();获取实例;
ServletContext的生命周期
诞生:应用被加载时就由容器创建好
活着:应用被加载就一直活着
死亡:应用被卸载或服务器关闭
读取ServletContext的三种方式:
ServletContext.getRealPath("/开头")
ResourceBundle:只能读取*.properties的文件
类加载器
HttpServletRequest对象的生命周期
诞生:请求来了
死亡:响应结束
HttpServletResponse方法示例
通过设置响应头告知客户端编码方式:
response.setHeader(“Content-type”, “text/html;charset=UTF-8”);//告知浏览器数据类型及编码
response.setContentType("text/html;charset=UTF-8");//告知浏览器数据类型及浏览器使用的编码
用OutputStream(字节流)发送数据:
response.getOutputStream().write(“中国”.getBytes());//以默认编码发送数据
请求重定向:客户端行为,
response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保持,地址栏的URL地址会改变
请求转发:服务器行为,
request.getRequsetDispatcher().forward(requset,response);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变。