1.什么是Servlet?

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

(1)扩展web服务器功能

 早期的web服务器(apache web server,iis)
只能处理静态资源的请求(即需要事先将html文件
写好并添加到服务器上),不能够处理动态资源的
请求(即需要计算,生成html)。所以,需要扩展
这些web服务器的功能。
(了解)
    早期使用CGI程序来扩展。
    CGI(Common Gateway Interface):
    通用网关接口,可以使用c,perl等来开发符合
    CGI接口规范的程序。CGI程序开发繁琐,不好
    移值,所以用得比较少了。

(2)组件规范

1)什么是组件?

符合规范,具有部分功能,并且需要部署到相应的
容器里面才能运行的软件模块。
Servlet就是一个符合Servlet规范的组件,需要部署
到Servlet容器里面才能运行。

2)什么是容器?

符合规范,提供组件的运行环境的程序。
Servlet容器(比如Tomcat 雄猫)也是要符合
相应的Servlet规范。
Servlet容器提供Servlet组件的运行环境(提供
网络相关的服务)。

(了解)

a.tomcat也是一个简单的web服务器(其实,
大部分的Servlet容器同时也是一个简单的web
服务器)。
b.对于大型的web应用,最好要安装一个专业的
web服务器(比如apache web server),由这些
服务器来抗压(并发请求量很大),另外,将
静态资源(html)存放到这些web服务器上面,
Servlet容器只负责计算。

2.如何写一个Servlet?

step1.写一个java类,实现Servlet接口或者

继承HttpServlet抽象类。

step2.编译。

step3.打包(即将Servlet变成一个组件)

要创建一个具有如下结构的文件夹:
appname (应用名,可以自定义)
    WEB-INF (固定写法)
        classes(固定写法,存放 .class文件)
        lib(可以没有,存放 .jar文件)
        web.xml(固定写法,部署描述文件)

step4.部署 

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

step5.启动容器,访问Servlet。

打开浏览器,输入
http://ip:port/appname/url-pattern。
注:
    ip,port:容器所在的机器的ip地址,容器所
        监听的端口号(tomcat默认的端口是
        8080)。
    url-pattern:在web.xml中定义。

3. Servlet运行过程

比如,在浏览器地址栏输入
http://ip:port/day01/hello?username=Giving
hello Giving

4. 常见问题及解决方式

(1)404

a. 404是一个状态码,表示服务器找不到对应的资源。

b. 产生的原因:
    b1.请求路径写错。
    b2.没有部署成功。

(2)500

a. 500也是一个状态码,表示服务器运行出错。
b. 产生的原因:
    b1.配置文件写错。
    b2.源代码出错。
        比如没有继承HttpServlet。
        代码不严谨,比如对用户的输入的数据
        没有做检查就做强制转换。

(3)405

a.405也是一个状态码,表示服务器找不到处理方法。
b.产生的原因:
    a.service方法不合法:

Servlet学习笔记01——什么是servlet?的更多相关文章

  1. Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

  2. Java Servlet学习笔记(四)Servlet客户端Http请求

    Servlet 客户端 HTTP 请求 当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的.您可以查看 HTTP ...

  3. # jsp及servlet学习笔记

    目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...

  4. Servlet学习笔记(四)

    目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...

  5. Servlet学习笔记(三)

    目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...

  6. Servlet学习笔记(二)

    目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...

  7. 软件测试之loadrunner学习笔记-01事务

    loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...

  8. C++ GUI Qt4学习笔记01

    C++ GUI Qt4学习笔记01   qtc++signalmakefile文档平台 这一章介绍了如何把基本的C++只是与Qt所提供的功能组合起来创建一些简单的图形用户界面应用程序. 引入两个重要概 ...

  9. SaToken学习笔记-01

    SaToken学习笔记-01 SaToken版本为1.18 如果有排版方面的错误,请查看:传送门 springboot集成 根据官网步骤maven导入依赖 <dependency> < ...

随机推荐

  1. Linux网卡操作

    单个网卡操作 [root@localhost ~]# ifdown eth0 #关闭网络 [root@localhost ~]# ifup eth0 #启动网络 网络服务: [root@localho ...

  2. mysql主从数据库错误处理

    方法一:忽略错误后,继续同步 该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况 解决: stop slave; #表示跳过一步错误,后面的数字可变set glob ...

  3. C语言实现通用链表初步(三)----单元测试

    前两节,我们已经完成了链表的一些操作,快来测试一下吧. 这里使用的单元测试工具名字叫"check". START_TEST(my_slist_1) { struct student ...

  4. pat1080. Graduate Admission (30)

    1080. Graduate Admission (30) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue It ...

  5. Angularjs ui router,路由嵌套 父controller执行问题

    解决方式来源:https://stackoverflow.com/questions/25316591/angularjs-ui-router-state-reload-child-state-onl ...

  6. one + two = 3

    读入两个小于100的正整数A和B,计算A+B.需要注意的是:A和B的每一位数字由对应的英文单词给出. 输入 测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =", ...

  7. 多个ModelForm组合成一个表单

    打个比方: 我将用户的基本信息 如用户名密码存在继承了Django auth认证组件中的 AbstractUser 类的模型中,并和第二个存了Details模型中,此模型继承UserInfo模型 继承 ...

  8. InvocationTargetException异常

    package com.smbea.demo.reflect; /** * 越界异常 * @author hapday * @date 2017年1月20日 @time下午7:59:01 */ pub ...

  9. CRM的划分

          CRM提供完整的客户生命周期管理解决方案,帮助您管理各项与客户有关的事件,包括市场.销售以及客户支持等方面,优化事件处理流程,从而赢得更多客户,并提高客户满意度.   按企业经营类型划分 ...

  10. Android开发之——依赖冲突Program type already present

    前言 实际开发中,为了提高开发速度和效率,总避免不了引用第三方提供的依赖和类库,如果含有相同依赖的类库被我们引用时,而他们的版本又不相同,就有可能会导致一系列问题和异常,本文结合本人时间总结和他人经验 ...