Servlet——初识Servlet

来源:互联网 发布:淘宝售假申诉包成功 编辑:程序博客网 时间:2024/05/16 01:29
servlet介绍

为什么会出现servlet

需求:请用你现有的java技术,开发一个动态网页,比如可以让用户留言,其他人可以回复。

显然现有的普通的java技术很难实现这样一些和用户交互的功能。Sun公司就开发了servlet技术供程序员使用。

●什么是servlet

Servlet技术是在java EE出现之前就存在了,在开发动态网页中,得到广泛应用,直到现在的java EE项目中也是非常重要的,同时jsp也是在servlet的基础上发展起来的。因此,掌握好servlet太重要了。

Servletjava服务器端小程序)是用java编写的服务器程序,它的特点:

  1. 他是由服务器端(tomcat)调用和执行的。

  2. 他是用java语言编写的。

  3. 他是按照Servlet规范开发的。

  4. 功能强大,可以完成几乎所有的网站功能。

  5. 是学习jsp的基础。

servlet/jsp开发工具

普通的文本编辑器:notepaduedit32editplus

集成开发工具jcreator,jbuilder,eclipse,netbean

运行环境:

      浏览器:绝大部分浏览器

      Web服务器:TomcatBea weblogicIbm websphereResinJBoss

      数据库:sql server2000sybase,mysql,access,oracle ,db2

Tomcatservlet在网络中的位置

      Tomcat是一个免费的开源Servlet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由ApacheSun和其他一些公司及个人共同开发而成。



Servlet的快速入门案例


开发Servlet的三种方法:


a.实现servlet接口


b.继承GenericServlet


c.继承HttpServlet


重点是第一种和第三种,真正的开发一般采用第三种,但第一种更能体现Servlet的生命周期。


      需求如下:请使用实现Servlet接口的方法,来开发一个Servlet,要求该Servlet能够显示一句话:HelloWorld,同时显示当前时间(体现动态效果)。


      步骤如下:

  1. 建立一个Web应用myWeb

  2. myWeb下建立WEB-INF/web.xml文件(可以从ROOT/WEB-INF拷贝)

  3. myWeb下建立classes目录和lib目录,我们的Servlet就要在classes目录下开发。

  4. 开发myFirstServlet.java

package com.gavin.servlet;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;public class myFirstServlet implements Servlet{//该函数用于初始化servlet,即把该servlet装载到内存中//该函数只会被调用一次public void init(ServletConfig config)          throws ServletException{        }//该函数得到ServletConfig对象public ServletConfig getServletConfig(){return null;}//该函数是服务函数,我们的业务逻辑代码就是写在这里的//对于浏览器的每次请求,该函数每次都会被调用public void service(ServletRequest req,                    ServletResponse res)             throws ServletException,                    java.io.IOException{        //在控制台输出        System.out.println("Hello,World "+new java.util.Date());         //在浏览器输出        res.getWriter().println("Hello,World "+new java.util.Date().toLocaleString());          }        //该函数得到servlet的配置信息    public java.lang.String getServletInfo(){    return null;    }        //销毁该servlet,从内存中清除,该函数和init函数是配对的    //该函数也只会被调用一次    public void destroy(){        }}

5.根据servlet的规范,我们还需要部署Servlet

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"  version="3.1"  metadata-complete="true"><!--根据Servlet规范,需要将Servlet部署到web.xml文件--><!--没开发一个Servlet,都要在web.xml中部署--><servlet><!--servlet-name,指定servlet名称,可以自己定义并不一定和Servlet的类名一致,但习惯上一致-->    <servlet-name>myFirstServlet</servlet-name>    <!--servlet-class要指明该servlet放在哪个包下的,形式如下:包.类-->    <servlet-class>com.gavin.servlet.myFirstServlet</servlet-class>  </servlet>  <!--servlet-mapping是servlet的映射-->  <servlet-mapping>  <!--这里要和上面的servlet-name一致,这样才能匹配上-->    <servlet-name>myFirstServlet</servlet-name>    <!--url-pattern这里就是将来访问该servlet的资源名称,可以自定义-->    <!--默认命名规范就是该servlet的名字,前面的斜杠绝对不能丢-->      <url-pattern>/myFirstServlet</url-pattern>  </servlet-mapping></web-app>

6.测试


在浏览器中输入http:localhost:8080/myWeb/ myFirstServlet回车

运行效果:

 

7.分析一下手工配置web.xml时可能出现的错误


①servlet-name前后映射不一致


servlet-class后面有.java或者.class后缀,会报500错误


③在浏览器中输入url时资源名称与web.xml中配置的url-pattern不一致,会报404错误


【补充知识点1:如果使用javac去编译一个java文件,则需要带命令参数:


      javac–d . java文件


【补充知识点2:如何不重启tomcat,就指定去reload一个web应用?方法:进入到tomcatmanager界面,在之中找到自己的web应用,并点击reload即可。



1 0