tomcat javaweb开发基础(8)servlet程序设计(1)

主要复习一下老师讲的:

 Servlet API
servlet程序的开发及部署

一:首先认识一下servlet

applet :java的小程序的意思
   servlet: 服务器端小程序
   servlet是使用java实现的CGI(通用网关接口),但是不同
            CGI: 多进程的处理方式
            Servlet:多线程的方式
Servlet是sun公司最早推出的实现动态web的程序,但是其代码本身开发困难,而且不易显示,因为所有的html代码必须通过out.println()一行行的输出,之后sun公司为了解决这样的问题,吸收了ASP程序的特点。
(2)Servlet API
Sun的Servlet规范提供了一个标准的、平台独立的框架用来实现在Servlet和Servlet容器之间的通信。该框架是由一组Java接口和类组成的,它们统称为Servlet API。
Servlet API的组成:
javax.servlet
定义了14个接口和11个类。开发独立于协议的服务器小程序的接口和类。 
javax.servlet.http
定义了8个接口和7个类。这些接口和类定义了开发采用HTTP协议通信的Servlet。
(2.1)
javax.servlet包
1. Servlet接口
Servlet API中的核心接口,每个Servlet必须直接或间接实现该接口。
该接口定义了如下5个方法。
public void init(ServletConfig config)
public void service(ServletRequest request, 
                                ServletResponse response) 
                  throws ServletException, IOException
public void destroy()
public ServletConfig getServletConfig()
public String getServletInfo()
2. ServleConfig接口
ServletConfig接口为用户提供了有关Servlet配置信息。Servlet配置包括Servlet名称、Servlet环境(context)对象、Servlet初始化参数名和参数等。
3. GenericServlet类
GenericServlet是一个抽象类,它实现了Servlet接口和ServletConfig接口,它又是HttpServlet类的超类.
4. ServleRequest接口
ServletRequest接口是独立于任何协议的请求对象。它定义了获取客户请求信息的方法。
5. ServleResponse接口
ServletResponse接口是独立于任何协议的响应对象。它定义了向客户发送适当响应的方法。
(2.2)
javax.servlet.http包
HttpServlet 抽象类
实现针对HTTP协议的Servlet,它扩展了GenericServlet类
与其他接口和类的层次关系如图2.1所示。
javax.servlet.http包
1. HttpServlet类
增加了一个新的service()方法,格式如下:
protected void service (HttpServletRequest,
                  HttpServletResponse)
      throws ServletException, IOException;
该方法是Servlet向客户请求提供服务的一个方法。
编写Servlet可以覆盖该方法。
 
2. HttpServletRequest接口   
该接口扩展了ServletRequest接口;
提供了关于HTTP请求对象的视图;
定义了从请求对象中获取如HTTP请求头、cookies信息的方法。
3. HttpServletResponse接口
该接口扩展了ServletResponse接口;
提供了针对HTTP的发送响应的方式;
定义了为响应设置如HTTP响应头、设置cookies信息的方法;
该方法是Servlet向客户请求提供服务的一个方法。
二:servlet的开发
7.3.1 开发要求:
  1.所有的Servlet程序必须放在WEB目录中执行,依靠web容器执行。
  2.Servlet本身是一个类,本身不需要由主方法调用执行。
  3.Servlet必须保存在WEB-INF/classes目录之中。
  4.一个类必须继承HttpServlet,那么此类才称为一个Servlet程序。
第一个servlet程序
执行页面打印:“Hello World”
 d:/webdemo/WEB-INF/classes 建立 HelloServlet.java
 
之后在自定义的Servlet类中覆写HttpServlet里的doGet()方法,此方法定义如下:
protected void doGet( HttpServletRequest  req, HttpServletResponse  resp) throws ServletException , IOException
 
 
 
package org.lxh.servlet ;
import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;
public class HelloServlet extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse resp)
              throws ServletException,java.io.IOException{
PrintWriter out = null ;
 out = resp.getWriter() ;
 out.println("<html>") ;
 out.println("<head><title>hello</title></head>") ;
 out.println("<body>") ;
 out.println("<h1><font color=\"red\">");
 out.println("HELLO WORLD!") ;
 out.println("</font></h1>") ;
 out.println("</body>") ;
 out.println("</html>") ;
 out.close() ;
 }
};
 
 
找不到上面六个类包的原因:
Java分为三个分支:
           java se
           java me
           java  ee:  在java se的基础上发展起来,类似java se的一个子类,但是现在运行的环境是java se,所以不能够识别servlet API,                      import javax.servlet.* ;
            import javax.servlet.http.* ;
那怎么办呢?
Tomcat执行流程:     *.jsp-à*.java-à*.class-à然后再运行
 
Tomcat安装目录\common\lib\servlet-api.jar
   1. set classpath=Tomcat安装目录\common\lib\servlet-api.jar
    2. 把此包拷入到: %JAVA_HOME%\jre\lib\ext包下
 一个servlet程序编译完成,不能像普通java程序一样直接执行,因为一个sevlet程序本身不是通过直接使用主方法调用的,必须放在WEB容器中执行,
    所以想让一个servlet程序可以正常使用,则必须在web.xml中进行配置
 配置web.xml
 <servlet> 
    <servlet-name>hello</servlet-name>
    <servlet-class>org.lxh.servlet.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/first</url-pattern>
   </servlet-mapping>
 

可以配置多个<servlet-mapping>

<servlet>
       <servlet-name>hello</servlet-name>
        <servlet-class>org.lxh.servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
       <servlet-name>hello</servlet-name>
        <url-pattern>/first</url-pattern>
   </servlet-mapping>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
       <url-pattern>/first/*</url-pattern>
   </servlet-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值