您的位置:首页 > 其它

Servlet基础

2017-09-10 23:14 176 查看


什么是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[/b] MyServlet
implements 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是项目路径
test1是servlet的访问路径

 

 

方法二:继承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协议的serlvet,sun提供了一个继承自GenericServlet的抽象类HttpServlet,用于创建适合Web站点的HTTP
Servlet。

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

 

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

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: