Servlet基础
Posted 喜东东
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet基础相关的知识,希望对你有一定的参考价值。
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的生命周期
以上是关于Servlet基础的主要内容,如果未能解决你的问题,请参考以下文章