1.servlet是什么?
是运行在web服务器或应用服务器上的程序,是作为来自web浏览器或其他的http客户端的请求和http服务器上的数据库或应用程序之间的中间层
2.能做什么?
获取表单的信息数据,动态的创建网页,接收请求,响应数据
3.servlet的优点:
1.性能好
2.servlet运行在服务器上(在服务器的内存地址空间上执行),没必要再创建一个单独的进程或响应客户端的请求
3.独立于平台的,因为servlet使用JAVA写的
4.服务器上的JAVA安全管理器,会执行一系列的指令限制来保护服务器上的计算机资源
4.servlet的架构图
第一个到达服务器的 HTTP 请求被委派到 Servlet 容器。Servlet 容器在调用 service() 方法之前加载 Servlet。
然后 Servlet 容器处理由多个线程产生的。多个请求,每个线程执行一个单一的 Servlet 实例的service() 方法。
5.Servlet的生命周期
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
Servlet 通过调用 init () 方法进行初始化。
Servlet 调用 service() 方法来处理客户端的请求。在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。
GET 请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHOD 的 HTML 表单,它由 doGet() 方法处理
POST 请求来自于一个特别指定了 METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。
Servlet 通过调用 destroy() 方法终止(结束)。
最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
6.Servlet的请求流程
7.servlet四个方法:
String getServletName(): 获取<servlet-name>的文本内容.
ServletContext getServletContext():获取当前Servlet的上下文对象,当前应用对象.
String getInitParameter(String paranName):根据指定的初始化参数名称获取对应的初始化参数值.
Enumeration<String> getInitParameterNames():获取所有的初始化参数的名字.
8.HttpServletRequest常用方法:
ServletRequest接口:表示Servlet的请求对象,包含了处理请求的方法.
HttpServletRequest接口:是ServletRequest接口的子接口,支持Http的请求处理.
HTTP请求:包含三部分(请求行,请求头,请求实体).
HttpServletRequest中就提供了获取HTTP请求信息的所有的方法.
常用方法:
1、String getMethod():返回请求方式:如GET/POST
2、String getContextPath():返回请求URL所属Web应用的路径。路径以"/"开头
3、String getRequestURI():返回请求行中的资源名字部分:如/test/index.html
4、StringBuffer getRequestURL():返回浏览器地址栏信息
5、String getRemoteAddr():返回发出请求的客户机的IP地址
6、String getHeader(String name):根据指定的请求头名称获取对应的请求头的值.
获取请求参数(重要)
String getParameter(String name):返回指定名字参数的值。
String[] getParameterValues(String name):返回指定名字参数的多个参数值。
Enumeration<String> getParameterNames():返回所有参数名的Enumeration对象。
Map<String,String[]> getParameterMap():返回所有的参数和值所组成的Map对象。
ServletResponse接口:处理一般的响应操作,包含处理响应操作的方法.
HttpServletResponse接口:处理HTPP的响应操作,包含了处理HTTP响应的方法.HttpServletResponse是ServletResponse的子接口.
9.HttpServletResponse常用方法:
获取输出流对象:
获取字节输出流: OutputStream out = resp.getOutputStream();(文件下载使用)
获取字符输出流: PrintWriter out = resp.getWriter();
注意: resp.getWriter()和resp.getOutputStream(),只能调用一个方法,否则报错.
设置响应时的编码:必须在获取输出流之前设置.
response.setCharacterEncoding("UTF-8");
设置响应输出的MIME类型:
response.setContentType("text/html");
上述两行代码可以合体,同时设置响应的MIME类型和编码:
response.setContentType("text/html;charset=utf-8");