Servlet第一天

来源:互联网 发布:foursquare数据集下载 编辑:程序博客网 时间:2024/05/22 17:04

Servlet第一天

一、Web服务器的历史

CGI(common gateway interfact)通用网关接口
CGI模式特点,是将服务器端的动态资源基于进程方法来运行,由于进程的执行非常耗费时间,且内存空间浪费,所以效率低下。
FastCGI所谓的FastCGI模式其实就是在当前的CGI模式中添加了一个pooling的概念,在服务器启动时初始化固定的进程来提高处理客户端请求的速度,但是方法该方法治标不治本。

二、servlet技术的特点

与传统的CGI模式不同,servlet运行模式更改为单进程多线程的模式。
单进程:服务器
多线程:服务器的servlet

三、servlet的继承结构

servlet接口—->GenericServlet抽象类—->HttpServlet抽象类—->YourServlet类
为什么不直接继承Servlet接口?
开闭原则:对添加开放,对修改关闭。

四、http协议

1、单向性:只有发送请求了,才会有响应产生
2、无状态:协议本身并没有状态的记录,当客户端多次访问服务端时,服务端并不会知道你曾经访问过他。

  • get方式提交表单,表单中的数据会在地址栏中显示,而post方法则不会。
  • get方式提交表单长度是有限制的512字节,而post理论上时无限的
  • get方式提交表单会在http数据包中的第一行出现,而post在空一行的body中出现
  • get方式永远时以字符方式提交,而post既可以以字符也可以字节

五、http数据包

这里写图片描述

六、手写第一个servlet

  • 你的servlet必须继承HttpServlet,在你的servlet中添加doGet和doPost
  • doGet或者doPost方法含有两个入参HttpServletRequest,HttpServletResponse
  • 该方法需要抛出两个异常IOException和ServletException
  • 通过HttpServletResponse对象获取客户端输出的字符流对象,PrintWriter pw=response.getWriter();
  • 通过调用PrintWriter中的println方法完成内容的输出
  • 编译你的servlet再编译时需要注意,由于我们的servlet中用到了javaEE平台类,所以需要指定javac去什么位置找响应的类库javac -classpath

将编译好的servlet的class文件部署容器中
1、需要在webapps目录下建立一个目录
2、在项目的目录中必须包含一个名称为:WEB-INF的目录
3、在WEB-INF的目录下必须包含一个classes的目录
4、按照servlet中所定义的正确包名来建立目录,将clas文件拷贝到相应的目录中
5、需要在WEB-INF的目录中国与classes目录同级建立一个名称为web.xml的文件
web.xml:项目部署描述文件,在该文件配置servlet的相关信息
6、编写web.xml完成对servlet的配置需要配置两个节点

 <servlet>    <servlet-name>subian</servlet-name>    <servlet-class>com.bjsxt.HelloWorld</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>subian</servlet-name>    <url-pattern>/suibian.do</url-pattern>  </servlet-mapping>


给servlet起个别名,叫什么都行,只要在同一个web.xml中不重复就可以
配置当前给哪个servlet起别名的servlet的全名
配置servlet与uri的映射
为那个servlet中的servlet做uri映射配置
为这个servlet所配置的访问uri是什么注意:必须uri中必须含有/
运行servlet
只要启动tomcat,在客户端浏览器中输入servlet所配置的uri就可以访问了

原创粉丝点击