1:为什么需要Servlert?
:在jsp技术出现之前,如果想动态成HTML页面,那就只有在服务器端运行Java程序,并生成HTML格式的内容。Servlet就是运行在服务前端的Java程序。
1-1:JSP开发Web程序流程图
1—2:Servlet开发Web流程图
2:什么是Servlet?
:浏览器发送一个HTTP请求,HTTP请求由Web容器分配给特定的Servlet进行处理,Servlet的本质是一个Java对象,这个对象拥有一系列的方法来处理HTTP请求。常见的方法有doGet(),doPost()等。Web容器中包含了多个Servlet,特定的HTTP请求该由哪一个Servlet来处理是由Web容器中的web.xml来决定的。
Servlet是一个符合特定规范的Java程序,是一个基于Java技术的web组件,运行在服务器端,由Servlet容器所管理用于生成动态的内容,Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写的一个Java类,它主要用于处理客户端请求并做出响应,
3:Servletr容器?
:Servlet容器也叫作Servlet引擎,是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,管理和运行Servlet/jsp的容器也称为Web容器,
4:Servlet与JSP的关系?
:1.JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表达。
2.JSP编译后是"类servlet"。
3.Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且 完全 从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组 成一个扩展 名 为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
JSP在运行时会被Web容器翻译成一个Servlet.
5:Servlet接口常用的方法:
方法名称 | 功能描述 |
public void init(ServletConfig config) | 由servlet容器调用,用于完成Servlet对象在处理客户请求前的初始化工作。 |
public void service(ServletRequest request, ServletResponse response) | 由servlet容器调用,用于处理客户端的请求 |
public void destroy() | 由servlet容器调用,释放Servlet对象所使用的资源 |
public ServletConfig getServletConfig() | 返回ServletConfig对象,该对象包含此senvlet的初始化和启动参数。返回的ServletConfig对象是传递给init( )方法的对象 |
public String getServletInfo() | 返回有关servlet的信息,如作者、版本和版权。返回的字符串是纯文本,而不是任何种类的标记(如HTML、XML等) |
6:抽象类GenericServlet的常用方法
方法名称 | 功能描述 |
public void init(ServletConfig config) | 调用Servlet接口中的init()方法。此方法还有一个无参的重载方法,其功能与此方法相同 |
public String getInitParameter(Stringname) | 返回名称为name的初始化参数的值 |
public ServletContextgetServletContext() | 返回ServletContext对象的引用 |
7:抽象类HttpServlet:
抽象类HttpServlet继承自GenericServlet类,具有与GenericServlet类似的方法和对象,支持HTTP的post()和get()方法,并提供了与HTTP相关的实现。
HttpServlet能够根据客户发出的HTTP请求,进行相关的处理,并得到相应的结果,然后此结果被自动封装到HttpServletRequest对象中。
HTTPServlet的常用方法:
方法名称 | 功能描述 |
public void service(ServletRequest request, ServletResponse response) | 调用GenericServlet类中service()方法的实现 |
public void service(HttpServletRequest request, HttpServletResponse response) | 接收HTTP请求,并将它们分发给此类中定义的doXxx方号 |
protected void doXXX(HttpServletRequest request, HttpServletResponse response) | |根据请求方式的不同,分别调用相应的处理方法,如doGet(),doPost()等 |
HttpServlet的service(HttpServletRequest request, HttpServletResponse )相当于一个分发器,可以根据请求方法的类型,调用相应的doXXX()方法,所以在编写Servlet时只需要根据应用的需求,重新写doGet()或者doPost()方法即可。
HttpServlet类是一个抽象类,如果需要编写Servlet就需要继承HttpServlet类,从中需要响应到客户端的数据封装到HttpServletResponse对象中,
8:ServletConfig接口;
servlet容器使用ServletConfig对象在Servlet初始化期间向其传递配置信息,一个Servlet只有一个servletConfig对象,
ServletConfig的常用方法:
方法名称 | 功能描述 | |
public void getInitParameter(String name) | 获取web.xml中设置的以name命名的初始化参数值 | |
public ServletContext getServletContext() | 返回Servlet的上下文对象的引用 | |
9:ServletContext对象的常用方法:
方法名称 | 功能描述 |
public String getInitParameter(String name) | 获取名称为name的系统范围内的初始化参数,系统范围内的初始化处参数可以在部署描述符中使用<context-param>元素定义 |
public void setAttribute(String name,Object object) | 设置名称为name的属性 |
public Object getAttribute(String name) | 获取名称为name的属性 |
public String getRealpath(String path) | 返回参数所代表目录的真实路径 |
public void log(String messge) | 记录一般日志 |
10:ServletRequestrian接口的常用方法
方法名称 | 功能描述 |
public Object getAttribute(String name) | 获取名称为name的属性值 |
public void setAttibute(String name,Object object) | 在请求中保存名称为name的属性 |
public void removeAttribute(String name) | 清除请求中名字为name的属性 |
11:httpServletRequest接口常用方法:
方法名称 | 功能描述 |
public String getContextPath() | 返回请求URL中表示请求上下文的路径,上下文路径时请求URL的开始部分 |
public Cookie[] getCookies() | 返回客户端在此次请求中发送的所有cookie对象 |
public HttpSession getsession() | 返回和此次请求相关联的session,如果没有给客户端分配session,则会创建一个新的session |
public String getMethod() | 返回此次请求所使用的HTTP方法的名字,如GET,POST |
12:ServletResponse接口常用方法:
方法名称 | 功能描述 |
public PrintWrite getWriter() | 返回PrintWrite对象,用于向客户端发送文本 |
public String getCharacteEncoding() | 返回在响应发送的正文所使用的字符编码集 |
public void setCharacterEncoding() | 设置发送到客户端的响应市委字符编码 |
public void setContentType(String type) | 设置发送到客户端响应的内容类型,此时响应的状态属于尚未提交 |
13:httpServletResponse接口:
方法 名称 | 功能描述 |
public void addCookie(Cookie cookie) | 增加一个cookie到响应中,这个方法可多次调用,设置多个cookie |
public void addHeader(String name,String value) | 将一个名称为name,值为value的响应报头添加到响应中 |
public void sendRedirect(String location) | 发送一个临时的的重定向响应到客户端,以便客户端访问新的URL |
public void encodeURL(String url) | 使用session ID对用于重定向的URL进行编码 |
14:Servlet的生命周期