Servlet基础

什么是Servlet:

Servlet是在服务器端运行的Java程序,可以接收客户端请求并作出响应。

Servlet可以动态生成HTML内容对客户端进行响应。(客户端请求服务器,服务器运行Java代码生成HTML代码,响应给客户端。)

Servlet与JSP存在什么联系:

它们都是请求和响应给客户端。

不同点:

JSP是要先翻译.Java文件,在编译.class文件,后执行给服务器,在运行效率上要慢。

Servlet是在服务器运行Java代码生成HTML代码,响应给客户端。比JSP要快。

Servlet体系结构

HttpServlet继承GenericServlet类,实现Servlet接口和SservletConfing接口。

Servlet实现方法:

void init (ServletConfig config)

由 Servlet 容器调用,用于完成Servlet对象在处理客户请求前的初始化工作。

void  service (ServletRequest  req,ServletResponse  res)

由 Servlet 容器调用,用来处理客户端的请求。

void destroy()     由 Servlet 容器调用,释放Servlet对象所使用的资源。

HttpServlet抽象类(处理HTTP协议的请求和响应):

public void service(ServletRequest req,ServletResponse res)

对GenericServlet类中service()方法的实现

protected void service(HttoServletRequest req,HttpServletResponse res)

接收HTTP 请求,并将它们分发给此类中定义的 doXXX( ) 方法。

protaected void doXXX(HttpServletRequest req,HttpServletResponse   res)

根据请求方式的不同分别调用的相应处理方法,如doGet()、doPost()等

HttpServletRequest接口:

 String  getContextPath( )

返回请求URI中表示请求上下文的路径,上下文路径是请求URI的开始部分。

Cookie[ ]  getCookies( )   返回客户端在此次请求中发送的所有cookie对象。

HttpSession getSession( )

返回和此次请求相关联的session,如果没有给客户端分配session,则创建一个新的session。

String getMethod( )

返回此次请求所使用的HTTP方法的名字,如GET、POST。

String getHeader( String name)   返回指定的请求头信息。

 Servlet的生命周期

实例化:Servlet容器创建Servlet的实例

初始化:该容器调用init( ServletConfig )方法

服务:如果请求Servlet,则容器调用service()方法

销毁:销毁实例之前调用destoy()方法

获取Servlet初始化参数

   Servlet初始化参数配置:

<web-app>
   <servlet>
       <servlet-name>HelloServlet</servlet-name>
       <servlet-class>demo.servlet.HelloServlet</servlet-class>
       <init-param>
            <param-name>initParam</param-name>
            <param-value>Hello Servlet</param-value>
        </init-param>
   </servlet>
   <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/HelloServlet</url-pattern>
    </servlet-mapping>
</web-app>

   获取初始化参数:

public void doGet ( HttpServletRequest  request, 
                          HttpServletResponse  response )
                      throws  ServletException,  IOException  {
        System.out.println("处理请求时,doGet()方法被调用。");
        String initParam = getInitParameter( "initParam" );
        System.out.println(initParam);
}
原文地址:https://www.cnblogs.com/zhrehe-11/p/13722471.html