关于Request
在这里我们不笼统的介绍,我们就直接提及一些重要的部分,以便你回忆
重要的特点:获取客户端(浏览器)发来的消息,设置消息的编码,共享数据,进行转发的功能,防盗链功能,下面我一个个的讲解
设置消息的编码
request.setCharacterEncoding("编码格式,一般为utf-8");
这里注意不要和 Response 的设置编码混合,那个格式是 “text/html;charset:utf-8”
获取客户端(浏览器)发来的消息,一共四种
String request.getParameter("传递的value,跟Map的键值对一样,这里是 key,一般由网页的表单发送,也可以手动发送,下面讲"); // 最基本的
String[] request.getParameterValues("如上"); // 这里获取的是一个 key 的所有属性,因为表单有 多选框
Enumeration<String> getParameterNames(); // 这里没有key,因为这个函数本身就是获取所有的 key ,作用不大。
Map<String,String[]> getParameterMap(); // 这里是获取 键值对 ,存入一个 MAP 集合中,注意,是获取一个 key 的所有 value。
共享数据,其实就是在一次请求中,如转发这种类型里面可以进行设置的功能,参数只会存在于这一次请求中,俗称 Request域,断开了,数据也会跟着消失
注意,这里的获取是通过 request 获取的,request.setAttribute(); 这样。
void setAttribute("key","value"); // 新建一个请求键值对
Object getAttribute("key"); // 根据 key 来获取其 value
void removeAttribute("key"); // 根据 key 来移除 其对应的 value 及本身 key
转发,其实就是一次请求,本身地址栏不变,然后转发到另一个 Servlet 中,处理完后一起返回给客户端
需要注意的是,转发是一次请求,并且只能转发到服务器的内部资源中,这一点与重定向不同
举例子:张三(浏览器) 向 李四(第一个Servlet)要剑,李四说没有剑,于是向
王五(第二个Servlet)借剑,王五借了剑后,李四还能加上自己的盾,最后一起转发给客户端。
最后是防盗链,其实获取一个请求头,里面包含了当前请求的网页连接,我们可以通过这个网页链接查看是不是我们服务器的内部资源从而进行处理
提及一点,就是获取虚拟目录的函数
String getContextPath(); // 这个可以获取虚拟目录的路径,在后面很常用
转发的时候不需要加上虚拟目录,因为是服务器的内部资源,有兴趣的神仙可以去看看我写的Response文章