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对象的实现类
运行过程servlet容器,将web服务器发送的http请求包装为HttpServletRequest对象,将Servlet的响应包装为HttpServletResponse对象。
使用包装好的两个对象作为参数,调用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类在xml中进行配置
Demo
servlet.Demo
Demo
/Demo
使用servlet3.0的注解
@WebServlet标签
在jsp中调用servlet
直接使用名字,不加最后的java后缀jsp页面中使用servlet
在超链接中使用servlet
Servlet的应用,进行文件的上传和下载
需要的组件commons-fileupload和commons-io
- 首先需要判断是否为上传文件,这里需要用到方法isMutipart
- 然后创建文件上传所必需的工厂FileItemFactory
- 然后创建用于解析form的对象,ServletFileUpload对象ServletFileUpload fileUpload = new ServletFileUpload(fileItemFactory)
- 解析request中的item,找到需要上传的itemitem = 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