Servlet学习笔记
一、Servlet介绍
1、Tomcat是一个解析JAVAEE项目的容器、我们习惯称之为Tomcat服务器、它和JavaEE项目完美匹配!
2、Servlet本质就是一个能处理HTTP请求的类(能解析HTTP所有的暗号)
3、所有的请求都会提交给service方法处理,然后由service方法进行分配到doGet和doPost方法处理
4、HttpServletRequest:封装了所有请求信息的类,想获取请求信息,请找request对象
5、HttpServletResponse:封装了所有响应信息的类、想给浏览器响应内容请找response对象
二、Servlet的生命周期
1、init() 初始化方法、只执行一次
2、service() 处理请求方法、浏览器每请求一次执行一次
3、destroy() 销毁servlet的方法、只执行一次
三、Servlet的工作流程
1、Web Client 向Servlet容器(Tomcat)发出Http请求
2、Servlet容器接收Web Client的请求
3、Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中。
4、Servlet容器创建一个HttpResponse对象
5、Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet 对象。
6、HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息。
7、HttpServlet调用HttpResponse对象的有关方法,生成响应数据。
8、Servlet容器把HttpServlet的响应结果传给Web Client。
四、Servlet的API继承关系
HttpServlet(HTTP版本)---------->GenericServlet(协议无关版本)---------->Servlet、ServletConfig 接口
HttpServletRequest---------->ServletRequest 接口
HttpServletResponse-------->ServletResponse 接口
以HTTP开头的类,都是属于实现了HTTP请求的类
五、HttpServletRequest常用方法
方法名 | 作用 |
---|---|
setCharacterEncoding() | 设置请求编码 |
getMethod() | 获取请求方式 |
getQueryString() | 获取地址栏参数信息 |
getParameter() | 获取请求的参数信息,根据key找value,get、post都能获取 |
getParameterValues() | 获取相同的name的多个值 |
getContextPath() | 获取项目名 |
getRealPath() | 获取项目的绝对路径(指向WebContent[web]目录) 文件上传的时候使用 |
getRequestURL() | 获取用户请求的地址栏路由信息,不带参数 |
getSession() | 获取HttpSession对象 |
getServletContext() | 获取Application对象 |
setAttribute() | 给请求对象中存放一个key、value |
getAttribute() | 获取请求对象中的key |
getServletPath() | 获取请求的文件路径 |
getHeaders() | 获取请求头文件的值、根据key找值 |
getInputStream() | 获取请求体输入流(只能获取请求体的输入流、上传文件的时候使用) |
getContentLength() | 获取请求体的长度(不包含请求行和请求头) |
getCookies | 获取用户请求的所有Cookie对象 |
六、HttpServletResponse常用方法
方法名 | 作用 |
---|---|
addCookie() | 给浏览器写入Cookie |
addHeader() | 给请求头添加额外的头setHeader("Content-Type", "text/html;charset=utf-8") |
getOutputStream() | 获取请求输入流、一般用来下载文件 |
sendError() | 给浏览器返回一个错误代码、没有内容 |
setCharacterEncoding() | 设置响应编码格式 |
resp.setContentType() | 设置响应回去的数据格式setContentType("text/html;charset=utf-8")等同于addHeader方法案例 |