1. HTTP Servlet基础知识
1) Servlet是一个以Java技术为基础的服务器端程序组件。用来处理Web客户端发送的请求,并作出响应。
2) Servlet没有main方法,也不能独立执行,必须运行在Servlet容器中。
3) Servlet的特性:多线程处理客户端请求,效率高。跨平台。
4) Servlet基本运行方式:
客户端发送一个HTTP请求给Web服务器。当Web服务器接收到一个指向Servlet的请求时,服务器会把请求转交给Servlet容器,Servlet容器实例化该Servlet,并向Servlet提供请求对象(HttpServletRequest)和响应对象(HttpServletResponse),当容器启动一个线程来调用该Servlet的请求处理方法(doGet()或doPost()),处理结果会送回给Web服务器,再由Web服务器传回给客户端。
2. 开发第一个Servlet程序
1) 编写Servlet类:继承自HttpServlet,重写doGet()和doPost()方法。在doGet()和doPost()方法中编写处理请求和返回响应的代码。
2) 在web.xml中注册该Servlet类:
<servlet>
<servlet-name>Servlet实例名</servlet-name>
<servlet-class>Servlet类的全限定名</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet实例名</servlet-name>
<url-pattern>要映射的URL模式</url-pattern>
</servlet-mapping>
3)客户访问:http://服务器IP:端口号/ContextPath/对应的URL
3. Servlet的原理:开发人员只需要针对Servlet的规范编程。
Servlet是Sun公司定义一套规范(API)。由Servlet容器厂商提供具体的实现。
4. Servlet的生命周期:
1)三大时刻:
创建和初始化 init()、
提供服务 service()、
销毁 destroy()
5. Servlet的API
1)interface Servlet: init() service() destroy()
↑
abstract GenericServlet
↑
abstract HttpServlet
↑
自定义的Servlet: 重写doGet()和doPost()
2) interface ServletRequest 请求
↑
interface HttpServletRequest
3) interface ServletResponse 响应
↑
interface HttpServletResponse
6. HttpServletRequest中的常用方法
1) void setCharacterEncoding("字符集"); //设置请求消息体中数据的编码方式。
要在获取请求数据之前使用。
只对消息体中的数据进行编码(Post请求数据)。
不会对跟在URL后面的查询串编码(Get请求数据)。
2) 获取请求中的参数信息
String getParameter("参数名"); //获取指定参数的值
String[] getParameterValues("参数名"); //获取指定参数的值数组
Enumeration getParameterNames(); //获取请求中的所有参数名称的枚举
Map getParameterMap(); //获取请求中的参数名和值数组对的一个Map
3) 获取请求行的信息
String getContextPath(); //获取应用上下文路径
String getRequestURI(); //获取请求行中的资源名
String getServletPath(); //获取Servlet映射的路径
4) 获取网络信息
String getRemoteAddr(); //获取发出请求的客户机IP地址
String getRemotePort(); //获取发出请求的客户机端口号
String getRequestURL(); //获取请求的完整路径
5) 获取请求头信息
String getHeader("字段名");
Enumeration getHeaders("字段名");
Enumeration getHeaderNames();
6) 获取请求分派器
RequestDispatcher getRequestDispatcher(String path);
7. HttpServletResponse中的常用方法
1) void setContentType("内容类型;charset=字符集"); //设置响应内容类型和编码格式
内容类型(MIME类型):text/html、img/gif、img/jpeg
2) PrintWriter getWriter(); //获取向客户端输出数据的字符输出流
3) ServletOutputStream getOutputStream(); //字节输出流
4) void addHeader(String name, String value); //向响应消息头中添加字段信息
5) void addCookie(Cookie coo); //
6) String encodeURL(String url); //
7) void sendError(int enc, String msg); //向客户发送错误信息
8) void sendRedirect(String url); //重定向