[关闭]
@Ablechen 2019-07-07T14:43:50.000000Z 字数 7005 阅读 431

servlet服务器基础知识

java语言编写的服务端程序

Created with Raphaël 2.1.2客户端浏览器客户端浏览器web服务器web服务器Servlet容器Servlet容器Http请求RequestResponseHttp响应HttpRequest->Servlet处理 Servlet处理->HttpResponse
http请求RequestResponsehttp响应客户端浏览器web浏览器servlet容器
Created with Raphaël 2.1.2Servlet容器HttpRequestServlet处理HttpResponseResponse(出Servlet容器)

servlet只会被初始化一次,后续的请求都是创建一个线程

servlet的生命周期

加载初始化运行销毁

加载过程发生在web服务器的启动和客户请求Servlet服务的时候,且只需要加载一次

初始化阶段

servlet调用servlet的init()方法进行初始化,进行配置信息的读取,完成数据库的链接等工作
通过ServletConfig对象进行初始化数据的传递Config这一内置对象就是ServletConfig对象的实现类

运行过程

  1. servlet容器,将web服务器发送的http请求包装为HttpServletRequest对象,将Servlet的响应包装为HttpServletResponse对象。
  2. 使用包装好的两个对象作为参数,调用service()方法

销毁阶段

Servlet被初始化之后就一直存在于内存中,知道服务器重新启动,Servlet对象才会被销毁。
销毁的时候调用destory()方法。

Servlet常用的接口

在服务器接受到Http请求的时候,会直接调用Servlet中的service方法,相当于java中的main方法

service方法doDelete方法doGet方法doHead方法doPost方法doPut方法doOption方法doTrace方法getLastModified方法

在创建servlet类中需要的两个包

javax.servletjavax.servlet.http

其中第一个包中主要用来控制servlet的生命周期
第二个包中主要是用来处理于http相关的操作
创建servlet一般是通过进行继承HttpServlet类进行实现的

HttpServlet是一个用来处理http协议的框架,用来处理客户端的http请求

在进行继承的时候一般是,需要用到哪种功能的时候,就在继承的时候对方法进行重载

几种常用的接口

session对象config对象application对象常用接口HttpSession接口ServletConfig接口ServletContext接口

如何创建servlet类

  1. 在xml中进行配置

    1. <servlet>
    2. <servlet-name>Demo</servlet-name>
    3. <servlet-class>servlet.Demo</servlet-class>
    4. </servlet>
    5. <servlet-mapping>
    6. <servlet-name>Demo</servlet-name>
    7. <url-pattern>/Demo</url-pattern>
    8. </servlet-mapping>
  2. 使用servlet3.0的注解
    @WebServlet标签

在jsp中调用servlet

直接使用名字,不加最后的java后缀

Servlet的应用,进行文件的上传和下载

需要的组件commons-fileupload和commons-io
- 首先需要判断是否为上传文件,这里需要用到方法isMutipart
- 然后创建文件上传所必需的工厂FileItemFactory
- 然后创建用于解析form的对象,ServletFileUpload对象

ServletFileUpload fileUpload = new ServletFileUpload(fileItemFactory)

- 解析request中的item,找到需要上传的item

item = upload.parseRequest(req).iterator
item.isForField()

- 然后进行需要存储的位置
req.getServletContext.getRealPath()
得到项目路径
- 然后通过item的write方法进行写入

Created with Raphaël 2.1.2传入Request!(isMutipart)创建FileItemFactory创建ServletFileUpload(FileItemFactory)对循环遍历FileItem!(isFormField)提取出文件的名字,得到存储文件的地址结束yesnoyesno
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注