一、ServletConfig
1.是啥
init(ServletConfig servletConfig) = 每1个servlet都有1个他
servlet容器用于
在 1个servlet初始化期间向 此servlet传递信息的
贴身独家快递员=抗飞哥=servlet配置对象。
(so————直接用servlet对象this.调用getServletConfig即可拿到他)
2、拿他干嘛
读取web.xml中 跟随的servlet顾客的局部配置参数init-param中的数据【如下图】
统一设置编码集【不了解】
只能由servletDemo1的抗飞哥获取:
3、为啥他就能读到xml中的数据
那不废话嘛,他是快递员
servlet容器在派他来送货时,
就让他装好了servletContext、init-param的参数
( getInitParameter(java.lang.String name)、
getServletContext() 一般servlet也就是this.就直接拿了)
二、ServletContext
1、是啥
每个servlet共享的 云养狗。
由每个servlet的servletConfig维护这只狗
2、他干嘛
1.此狗的方法们 实现servlet们之间的通信【jsp也是servlet=实现 前后端交互】
用在 获取文件的MIME类型、分派请求、写入日志文件【不了解】
反正
整个项目都要用的数据,就可用context的这组方法get/setAttriubute
2.还能获取web.xml 中 全局配置参数 = 整个web应用 的参数【如下图】
三、HttpServletRequest
1.是啥
专门跑 前端页面 ————到————> 目标servlet的 请求对象。
servlet容器创建1个HttpServletRequest对象,
并将其 作为参数 传递给servlet的服务方法(doGet、doPost等)。
2.他在干嘛
接收客户端 发来的 请求 及其中 数据。
3.看看他的API,再试试IDEA的点 就能明白此对象的 常用方法:
package servlet;
@WebServlet("/after")
public class AfternoonServ extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// System.out.println(req.getRequestURI()); // /t/after
// System.out.println(req.getRequestURL()); // http://localhost:8080/t/after
//重要方法————能得到 用户发来的数据
// System.out.println(req.getQueryString());//问号后的那坨参数 null
//常用于 复选框
//http://localhost:8080/t/after?food=cake&food=milk&money=seven
//指定键对应 第1个值
System.out.println(req.getParameter("food"));// cake
//指定键 all参数值数组
String[] foods = req.getParameterValues("food");
for (String food : foods) {
System.out.println(food);//cake milk
}
//取得all 参数键值
Map<String, String[]> pm = req.getParameterMap();
Iterator<Map.Entry<String, String[]>> iterator = pm.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<String, String[]> next = iterator.next();
String[] values = next.getValue();
for (String value : values) {//由于值用数组包着 so
System.out.println("键是"+next.getKey()+"值是"+value);
//键是food值是cake
//键是food值是milk
//键是money值是seven
}
}
//返回1个数组———含 客户端随该请求 发送的 所有Cookie对象。
// System.out.println(req.getCookies());
//返回与此请求关联的 当前会话,if该请求 没会话,则创建1个会话。
// System.out.println(req.getSession());
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
}