Servlet基础

来源:互联网 发布:java 棋牌类游戏开发 编辑:程序博客网 时间:2024/05/29 20:00


什么是servlet

很多初步学习java web开发的学习者会疑惑,是先有servlet,还是先有jsp?究竟什么是servlet?在这里可以十分负责的告诉大家,先有servlet,为什么这么说呢?相信Java web开发学习者在接触jsp时都已经明白了jsp的运行过程是:

Jsp>翻译成java文件(servlet)à编译成class文件 然后运行

所以可以确切的肯定servlet其实就是jsp的前身

那究竟什么是servlet呢?一个Servlet其实可以看作是一个部署在服务器上的小程序,一个servlet就是一个Java类,并且可以通过“发出指令——响应请求”的模式来访问这个程序。

     

 

 

 

 

创建servlet的方法

Servlet主要类、接口的结构如下图所示:

 

可以看出Servlet的创建共有三个方法:

 

方法一:实现servlet接口

 

第一步,创建一个Java web项目编写一个普通的Java类,并实现servlet接口

第二步,修改service方法(service方法中可以向浏览器输出信息)

代码如下:

public class MyServletimplements Servlet{

 

@Override

public void destroy() {

// TODO Auto-generated method stub

}

 

@Override

public ServletConfig getServletConfig() {

// TODO Auto-generated method stub

return null;

}

 

@Override

public String getServletInfo() {

// TODO Auto-generated method stub

return null;

}

 

@Override

public void init(ServletConfig config)throws ServletException {

// TODO Auto-generated method stub

}

 

@Override

public void service(ServletRequest req, ServletResponse res)

throws ServletException, IOException {

// TODO Auto-generated method stub

PrintWriter out=res.getWriter();

out.print("This is my first Servlet");

}

 

}

Servlet接口定义的五个方法,功能如下:

1.init(),初始化servlet对象,完成一些初始化工作。

它是由servlet容器控制的,该方法只能被调用一次,初始化过程如下:

 

2.service(),接受客户端请求对象,执行业务操作,利用响应对象响应客户端请求。

3.destroy(),当容器监测到一个servlet从服务中被移除时,容器调用该方法,释放资源。

4.getServletConfig()ServletConfig是容器向servlet传递参数的载体。

5.getServletInfo(),获取servlet相关信息。

 

第三步,在web.xml中配置servlet信息

<servlet>

    <servlet-name>test1</servlet-name>      <!-- 同一个servlet配置信息servlet-name中的的名字要保持一致 -->

    <servlet-class>test.MyServlet</servlet-class>   <!--servlet的实际路径  -->

  </servlet>

  <servlet-mapping>

     <servlet-name>test1</servlet-name>

     <url-pattern>/test1</url-pattern>              <!--servlet的实际访问路径  路径前的“ / ”不要省略,不然要报错-->

  </servlet-mapping>

 

第四步,将项目部署到服务器中并访问http://http://localhost:8080/test/test1   

注:test是项目路径 test1servlet的访问路径

 

 

方法二:继承GenericServlet

 

第一步,创建一个Java web项目编写一个普通的Java类,并继承GenericServlet类

第二步,修改service方法(service方法中可以向浏览器输出信息)

代码如下:

public class MyServlet extends GenericServlet{

 

@Override

public void service(ServletRequest req, ServletResponse res)

throws ServletException, IOException {

// TODO Auto-generated method stub

PrintWriter out=res.getWriter();

out.print("This is my first Servlet");

}

}

GenericServlet抽象类

为了简化serlvet的编写,在javax.servlet包中提供了一个抽象类GenericServlet,它给出了除service()方法以外的简单实现。

GenericServlet定义了一个通用的,不依赖具体协议的Servlet,它实现了Servlet接口和ServletConfig接口。

 

第三步,配置web.xml,部署项目并访问

 

 

方法三:继承HttpServlet抽象类

 

第一步,创建一个Java web项目编写一个普通的Java类,并继承HttpServlet类

第二步,修改service方法(service方法中可以向浏览器输出信息)

代码如下:

public class MyServlet extends HttpServlet{

 

@Override

public void service(HttpServletRequest arg0, HttpServletResponse arg1)

     throws ServletException, IOException {

// TODO Auto-generated method stub

PrintWriter out=res.getWriter();

out.print("This is my first Servlet");

}

}

HttpServlet抽象类

HttpServlet主要是应用于HTTP协议的请求和响应,为了快速开发HTTP协议的serlvetsun提供了一个继承自GenericServlet的抽象类HttpServlet,用于创建适合Web站点的HTTP Servlet

HttpServlet一个私有service方法。它实现了Servlet接口的service方法,将ServletResponse对象和ServletRequest对象转化成httpServletResponse对象和HttpservletRequest对象,然后再调用私有方法service。它根据request获取Http method(getpost)的名称,根据http method调用不同的方法执行操作。

 

第三步,配置web.xml,部署项目并访问

 

 

 

 

原创粉丝点击