Servlet基础


Servlet简介

 

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

Servlet主要用于生成动态的内容。它可以接受和处理请求,并动态生成HTML内容对客户端进行响应

 

ServletJSP的关系

 

ServletJSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是JavaHTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

 

初始Servlet

 

i

mport  java.io.*;

import  javax.servlet.*;

import  javax.servlet.http.*;

public class HelloServletTest extends HttpServlet  {  //继承javax.servlet.http.HttpServlet类    
   public  void  doGet ( HttpServletRequest  request, HttpServletResponse  response ) throws  ServletException,  IOException  {	
sponse.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

out.println("<html>");

out.println("  <head><title>Servlet</title></head>");

out.println("  <body>");

out.println("你好,欢迎来到Servlet世界");

out.println("  </body>");

out.println("</html>");

out.close();

       }

}

 

 

 

Servlet接口

 

定义了所有Servlet需要实现的方法

方法名称

功能描述

void  init (ServletConfig  config)

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

void  service (  ServletRequest  req,ServletResponse  res)

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

void  destroy ( )

 Servlet 容器调用,释放Servlet对象所使用的资源

ServletConfig   getServletConfig ( )

返回ServletConfig 对象,该对象包含此 Servlet 的初始化和启动参数。返回的 ServletConfig 对象是传递给 init( ) 方法的对象

String  getServletInfo ( )

返回有关 Servlet 的信息,比如作者、版本和版权。返回的字符串是纯文本,而不是任何种类的标记(如 HTMLXML等)

 

GenericServlet抽象类

 

提供了ServletServletConfig接口方法的默认实现(service( )方法除外)

方法名称

功能描述

public  void  init ( ServletConfig  config )

Servlet接口中init()方法的实现,对ServletConfig实例进行了保存。此方法还有一个无参的重载方法,可用于子类中重写

public  String  getInitParameter (String  name )

返回web.xml中名称为name的初始化参数的值

public  ServletContext  getServletContext ( )

返回ServletContext对象的引用

 

 

HttpServlet抽象类

 

继承自GenericServlet

处理HTTP协议的请求和响应

方法名称

功能描述

public  void  service (  ServletRequest  req,  ServletResponse  res )

GenericServlet类中service()方法的实现,将请求分发给protected  void  service (HttpServletRequest  req,  HttpServletResponse  res )

protected  void  service ( HttpServletRequest  req,   HttpServletResponse  res )

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

protected  void  doXXX (  HttpServletRequest  req, HttpServletResponse  res )

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

 

ServletConfig接口

 

Servlet初始化过程中获取配置信息

一个Servlet只有一个ServletConfig对象

方法名称

功能描述

String  getInitParameter ( String  name ) 

获取web.xml中设置的以name命名的初始化参数值

ServletContext  getServletContext( )

返回Servlet的上下文对象引用

 

ServletContext接口

 

获取Web应用上下文,与Servlet容器进行通信

方法名称

功能描述

String  getInitParameter (String  name ) 

获取名为name的系统范围的初始化参数值,系统范围的初始化参数可在部署描述符中使用<context-param>元素定义

void  setAttribute ( String name,  Object object )

设置名称为name的属性

Object  getAttribute ( String  name )

获取名称为name的属性

String  getRealPath (String  path )

返回参数所代表目录的真实路径

void  log ( String  message )

记录一般日志信息

 

 

 

请求、响应相关接口

 

ServletRequest接口

获取客户端请求的数据

方法名称

功能描述

Object  getAttribute ( String name )

获取名称为name的属性值

void  setAttribute ( String  name,  Object  object )

在请求中保存名称为name

属性

void  removeAttribute (String  name)

清除请求中名字为name的属性

String  getCharacterEncoding ( )

返回请求体所使用的字符编码

void  setCharacterEncoding (String charset )

设置请求体的字符编码

String  getParameter ( String  name )

返回指定请求参数的值

String[ ]  getParameterValues (String  name )

返回指定请求参数的全部值

RequestDispatcher getRequestDispatcher( String  path )

返回指向指定路径的请求分发

对象

 

HttpServletRequest接口

 

除了继承ServletRequest接口中的方法,还增加了一些用于读取HTTP请求信息的方法

方法名称

功能描述

String  getContextPath( )

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

Cookie[ ]  getCookies( )

返回客户端在此次请求中发送的所有cookie对象

HttpSession  getSession( )

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

String  getMethod( )

返回此次请求所使用的HTTP方法的名字,如GETPOST

String  getHeader( String  name )

返回指定的请求头信息

 

ServletResponse接口

设置响应参数和向客户端发送响应数据

方法名称

功能描述

PrintWriter  getWriter ( )

返回PrintWriter对象,用于向客户端发送文本

String  getCharacterEncoding ( )

返回在响应中发送的正文所使用的字符编码

void  setCharacterEncoding ( String charset )

设置响应的字符编码

void  setContentType ( String  type )

设置发送到客户端的响应的内容类型,此时响应的状态属于尚未提交

 

HttpServletResponse接口

除了继承ServletResponse接口中的方法,还增加了适用于HTTP响应的新方法

方法名称

功能描述

void  addCookie ( Cookie  cookie )

增加一个cookie到响应中,这个方法可多次调用,设置多个cookie

void  addHeader ( String  name,String  value )

将一个名称为name,值为value的响应报头添加到响应中

void  sendRedirect(String  location)

发送一个临时的重定向响应到客户端,以便客户端访问新的URL

void  encodeURL ( String  url )

使用session ID对用于重定向的URL进行编码

 

Servlet的应用

 

步骤

1、创建Servlet

继承HttpServlet

重写doPost()doGet()方法

 

2、部署Servlet

编译Servlet/WEB-INF/classes目录

编辑部署描述文件web.xml

 

 <servlet>

    <servlet-name>HttpServletTest</servlet-name>

    <servlet-class>cn.store.servlet.HttpServletTest</servlet-class>

  </servlet>

  <servlet-mapping>

    <servlet-name>HttpServletTest</servlet-name>

    <url-pattern>/HttpServletTest</url-pattern>

  </servlet-mapping>

3、启动Tomcat,访问Servlet

使用Servlet实现控制器

 

 

 

  Servlet则仅充当控制器的角色,它的作用类似于调度员:所有用户的请求都 发给ServletServlet调用Model来处理用户请求,并调用JSP来呈现处理结果;或者Servlet直接调用JSP将应用的状态数据呈现给用户。

 

      Model通常由JavaBean来充当,所有的业务逻辑、数据访问逻辑都在Model中实现。

 

     控制器负责接收客户端的额请求,它既不直接对客户端输出响应,也不处理用户请求,只调用JavaBean来处理用户请求。JavaBean处理结束后,Servlet根据处理的结果,调用不同的JSP页面向浏览器呈现处理结果。

 

 

Servlet的生命周期

 

生命周期的各个阶段

 

实例化——>Servlet 容器创建 Servlet 的实例

 

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

 

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

 

销毁——>销毁实例之前调用 destroy() 方法

获取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);

}

 

 

获取Servlet上下文参数

 

读取Servlet上下文

public  class  HelloServlet  extends  HttpServlet  {

// …省略其他代码

public  void  doGet ( HttpServletRequest  request,

HttpServletResponse  response )

throws  ServletException,  IOException  {

System.out.println("处理请求时,doGet()方法被调用。");

String  initParam = getInitParameter( "initParam" );

String  contextParam =

this.getServletContext().getInitParameter( "contextParam" );//  根据参数名称进行读取  

System.out.println("Servlet初始化参数" + initParam);

System.out.println("系统初始化参数" + contextParam);

}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值