一.ServletContext
1.概念:
ServletContext 是一个web项目中上下文对象. 他可以对Servlet之前和之后的一些信息进行管理.是一个容器对象.
2.对象如何获取
//1.获取方式1:
ServletContext contecontext = getServletContext();
//2.获取方式2:
ServletContext servletContext = this.getServletContext();
//3.方式3:
ServletContext servletContext1 = req.getServletContext();
特点:一个web容器(就是一个web项目)只有一个ServletContext对象,被所有web资源共享.
3.常用的方法
1)获取web信息的方法
getContextPath() String 获取web项目请求工程名(获取的是虚拟路径)
getInitParameter(String name) String 获取web项目的初始化参数
getInitParameterNames() Enumeration<E> 获取web项目的初始化参数
2)读取web项目下的文件
getResourceAsStream(String path) InputStream 读取指定文件到流中
getRealPath(String path) String返回一个指真实路径
3)作为域对象存储数据
ServletContext容器,存数据,取数据,删除数据.
特点:ServletContext在web容器中是一个共享对象.
Servlet01 存一个数据; Servlet02 获取存数据 ; Servlet03删除设置数据.
setAttribute(String name, Object obj) void 存入数据的方法
getAttribute(String name) Object 获取数据的方法
removeAttribute(String name) void 移除数据的方法
二.Response 响应对象
1.ServletResponse 代表的是服务器响应给用户数据的对象.
2.都是由tomcat容器对象来创建,创建完毕之后,把该对象传递到了service方法的形式参数上.
3. ServletResponse Servlet中service方法中的参数
HttpServletResponse 他是ServletResponse的子接口
4.该对象的常用方法:(ServletResponse和HttpServletResponse)
1)关于响应行的方法
setStatus(int sc) void 设置响应的状态码 (200 302[重定向] 304 404 405 500)
- 200 正确
- 302 重定向
- 304 查找本地缓存
- 404 请求资源部存在
- 500 服务器内部错误
2)setHeader(String name, String value) void 设置响应头
常用的响应头信息:
Location 结合 状态码 完成重定向
Refresh 可以完成指定多少时间后页面跳转.
重定向: 页面返回到浏览器,重新发送请求跳转到新页面(2次请求)
3)设置响应体信息
Response,底层是流的方式(内置有一个缓冲区)
流是有方向:输出地址浏览器
getOutputStream() ServletOutputStream 返回一个字节流,用于向浏览器发送数据
getWriter() PrintWriter 放回一个字符流,用于向浏览器发送数据
4)response的其他方法
sendRedirect(String location) void 重定向方法
setContextType(String type) void 设置浏览器打开页面时采用的字符集
setCharacterEncoding(String charset) void 设置响应字符流的缓冲区字符集
注意:在一个Servlet的方法中:getOutputStream() 和getWriter() 不能同时存在
三.Request对象
1.ServletRequest对象本质是一个接口.
用户第一次请求的时候创建该对象,并把该对象传递给Servlet中的service的形式参数上.
主要作用用户接受用户的请求信息,把数据带到servlet中.
2.ServletRequest --- 子接口 HttpServletRequest
3.常用方法
1)获取客户端的信息
getMethod() String 获取请求的方法 (GET / POST)
getQueryString() String 获取请求路径后的提交参数的字符串
getRequestURI() String 获取请求路径的URI
getRequestURL() StringBuffer 获取请求路径的URL
getRemoteAddr() String 获取客户端的IP地址
总结:
get 请求的方式: 1.浏览器地址栏直接输入网址请求; 2.点击超链接,完成跳转 3.表单提交 method="get"
4.js === location.href="地址" 也是get
post请求的方式: 1.表单提交 method="post"
get/post提交的方式的区别:
1)get提交的数据量小; post提交的数据量大
2)get请求参数会在浏览器地址栏上展示; post不会展示在地址栏(参数在请求体中)
3)get方式以后不能上传附件; post方式可以上传附件.
2)Request获取请求头信息
getHeader(String name) String 获得一个key对应一个value的请求头
请求头写头信息: Host 主机 , User-Agent 浏览器信息
3) 获得请求参数的方法 (重点!!!)
getParameter(String name) String 获得提交的参数(一个name对应一个value)
获取参数: get请求还是post请求
getParameterValues(String name) String[] 获得提交的参数(一个name对应多个value)
表单
<input type="checkbox" name="hobby" value="lanqiu"/>
<input type="checkbox" name="hobby" value="zuqiu"/>
<input type="checkbox" name="hobby" value="paiqiu"/>
getParameterMap() Map 获得提交的参数,将提交的参数名称和对应值存入到一个Map集合中
4)Request传递参数的乱码问题
tomcat8之后 get方式的请求就没有乱码; post请求仍然后有乱码
tomcat7 get方式和post方式都有乱码
常用方法:
setCharacterEncoding(String encoding)
getParameter(String name) String 获得提交的参数(一个name对应一个value)
getParameterValues(String name) String[] 获得提交的参数(一个name对应多个value)
getParameterMap() Map 获得提交的参数,将提交的参数名称和对应值存入到一个Map集合中