#Servlet(1)扩展web服务器功能,安装Tomcat,使用Eclipse来开发一个servlet,Servlet是如何运行的,常见的错误

本文深入讲解Servlet的概念,包括其作为组件规范的作用、如何利用Servlet扩展Web服务器功能,以及Servlet的开发流程。通过实例演示,读者将学会编写和部署Servlet,处理HTTP请求,实现动态网页生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sun公司制订的一种用来扩展web服务器功能组件规范

## (1)扩展web服务器功能

    web服务器(比如apache、iis,nginx等)只能够处理静态资源的请求
    (也就是说,需要事先将html文件准备好),不能够处理动态资源的请求
    (需要进行计算,比如访问数据库,生成动态页面)。所以,需要扩展
    web服务器的功能。

    早期,使用CGI程序来扩展。
        (了解):
            CGI(Common Gateway Interface通用网关接口)程序,指的
        是使用perl,c/c++,python,java这些语言开发的的,符合CGI
        接口规范的程序。CGI开发比较繁琐、并且可移植性差、性能也不是
        很好,现在用得很少了。

    可以使用Servlet来扩展web服务器的功能。也就说,当web服务器收到
    请求,如果需要进行计算,会调用Servlet来处理。

## (2)组件规范

    a.什么是组件?
        符合一定规范、实现部分功能、并且需要部署到相应的容器当中
    才能运行的软件模块。
        Servlet就是一个符合Servlet规范的组件。
    b.什么是容器?
        符合一定规范、提供组件运行环境的程序。
        Servlet需要部署到Servlet容器当中才能运行,比如
        Tomcat就是一个符合Servlet规范的容器。    
        注:
            Tomcat也就是一个简单的web服务器。

# 2.如何写一个Servlet?


step1. 写一个java类,实现Servlet接口或者继承HttpServlet。

    注: 一般选择继承HttpServlet类。

step2. 编译。

step3. 打包。

    即创建一个具有如下结构的文件夹:
    appname (应用名)  
        WEB-INF
            classes (放.class文件)
            lib (放.jar文件,该文件夹可选)
            web.xml (描述servlet)

step4.部署。

    将step3创建好的整个文件夹拷贝到servlet容器上指定的某个
    位置。
    注:
        也可以将step3创建好的文件夹使用jar命令压缩成一个
    ".war"为后缀的文件,然后再拷贝。

step5.启动容器,访问Servlet。

http://ip:port/appname/url-pattern
    注:
        url-pattern在web.xml中设置。

# 3.安装Tomcat。

 参考 http://doc.tedu.cn/tomcat/index.html


# 4.使用Eclipse来开发一个servlet


step1.创建一个maven工程

    注: 
        选war包!

step2.工程建完之后,要做两个准备工作:

    a.添加web.xml文件。
    b.指定Server。

step3.添加Servlet类。

    a.继承HttpServlet。
    b.override  service方法。

step4.在web.xml中,添加servlet的配置信息。

    a.servlet-name得一致。
    b.servlet-class得写完整的类名。
    c.url-pattern必须以"/"开头。

step5.运行。

step6.打开浏览器,在地址栏填写

    http://ip:port/appname/url-pattern


# 5.Servlet是如何运行的?


当我们打开浏览器,在地址栏填写
http://ip:port/servlet01/hello

step1.浏览器依据ip,port建立连接。

step2.浏览器创建请求数据包并发送。

step3.Servlet容器解析请求数据包,并且将解析到的数据存放到
request对象里面,同时,创建response对象。

step4.Servlet容器创建Servlet对象,然后调用该对象的service
方法(容器会将request和response作为参数传递过来)。

    注:
        开发人员可以通过request对象获得请求数据包中的数据
    (比如,获得请求参数值),然后将处理结果写到response对象
    里面就可以了。
        也就是说,开发人员不用理会网络相关的问题。

step5.Servlet容器从response对象中获得处理结果,然后创建响应数据
包并发送给浏览器。

step6.浏览器解析响应数据包,生成相应的页面。

# 6.常见的错误


## (1)404
含义: 服务器依据请求路径找不到对应的资源。

原因:
    
    a.请求路径写错了
    (没有按照http://ip:port/appname/url-pattern来写请求路径)

    b.应用没有部署或者部署失败。

## (2)500
含义: 服务器端发生错误。

原因:
    
    a.没有严格按照规范来写Servlet。
    比如,没有继承HttpServlet,web.xml配置写错。

    b.代码写得不严谨。
    比如,对用户提交的数据没有做检查就做处理(比如做类型转换)。

## (3)405 (了解)
含义:服务器找不到处理该请求的方法。

原因:
        没有正确override HttpServlet的service方法。

# 练习1
写一个Servlet,输出当前的系统日期

    http://ip:port/servlet01-lab/date
    返回 2019-01-24

# 练习2
写一个Servlet,计算一个人的BMI指数。

    BMI指数 = 体重(公斤) / 身高(米) / 身高(米)

    比如 http://ip:port/servlet01-lab/bmi?height=1.2&weight=90

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值