javaWeb学习笔记整理(中)

Request

内容
  1. 请求头
  2. 请求参数 重点
  3. 域对象功能 重点
  4. 请求转发 重点
  5. 其他方法, 获取客户端信息, url相关的信息…
request作为域对象的功能

只在同一次请求内有效

获取请求头的方法

request与请求头相关的方法有:

  • String getHeader(String name):获取指定名称的请求头;
  • Enumeration getHeaderNames():获取所有请求头名称;
  • int getIntHeader(String name):获取值为int类型的请求头。
其他方法
  • int getContentLength():获取请求体的字节数,GET请求没有请求体,没有请求体返回-1;
  • String getContentType():获取请求类型,如果请求是GET,那么这个方法返回null;如果是POST请求,那么默认为application/x-www-form-urlencoded,表示请求体内容使用了URL编码;
  • String getMethod():返回请求方法,例如:GET
  • Locale getLocale():返回当前客户端浏览器的Locale。java.util.Locale表示国家和言语,这个东西在国际化中很有用;
  • String getCharacterEncoding():获取请求编码,如果没有setCharacterEncoding(),那么返回null,表示使用ISO-8859-1编码;
  • void setCharacterEncoding(String code):设置请求编码,只对请求体有效!注意,对于GET而言,没有请求体!!!所以此方法只能对POST请求中的参数有效! 重点
  • String getContextPath():返回上下文路径,例如:/hello
  • String getQueryString():返回请求URL中的参数,例如:name=zhangSan
  • String getRequestURI():返回请求URI路径,例如:/hello/oneServlet
  • StringBuffer getRequestURL():返回请求URL路径,例如:http://localhost/hello/oneServlet,即返回除了参数以外的路径信息;
  • String getServletPath():返回Servlet路径,例如:/oneServlet
  • String getRemoteAddr():返回当前客户端的IP地址;
  • String getRemoteHost():返回当前客户端的主机名,但这个方法的实现还是获取IP地址;
  • String getScheme():返回请求协议,例如:http;
  • String getServerName():返回主机名,例如:localhost
  • int getServerPort():返回服务器端口号,例如:8080
请求转发

动态资源(Servlet) 跳转到其他资源(Servlet, html, jsp…)

转发写法
  1. RequestDispatcher getRequestDispatcher(String path) 得到转发器对象

  2. 调用RequestDispatcher对象的forward(request,response)

    RequestDispatcher.forward(request,response);

1与2合并:

request.getRequestDispatcher(String path).forward(request,response);

转发特点:
  1. 只发起一次请求
  2. 客户端的url不会变
  3. 服务器端的转发, 只能转发到服务器内部资源
request域 一般就是在请求转发中使用
获取请求参数
方法1:String getParamter(String name) 根据name获取一个请求参数名对应的一个值

第一种情况: 前端传递请求参数名, 并且传递值

结果: 传递值

第二种情况: 前端传递请求参数名,没有传递值 username=&email=111

结果: “”

第三种情况: 前端没有传递请求参数名

结果: null

方法2:String[] getParameterValues(String name) 一个请求参数名对应多个值 例如获取复选框的取值
//一个请求参数名对应多个值
 String[] love = request.getParameterValues("hobbyArr");//获取爱好(复选框)
//数组转换为集合
 List<String> hobbyList = Arrays.asList(hobbyArr);
 System.out.println("love:"+loveList);
//数组转换集合 Arrays.asList(arr)
//asList()这个方法返回的ArrayList不是集合体系中的ArrayList,是一个内部类ArrayList ,是只读的
hobbyList.add("唱歌");//出错!!!!!!
Arrays.asList()这个方法返回的ArrayList不是集合体系中的ArrayList,是一个内部类ArrayList ,是只读的
方法3:Map<String,String[]> getParameterMap() 获取所有的请求参数, 得到一个map集合 一般结合第三方jar, 把map转换为java对象
Map<String, String[]> parameterMap = request.getParameterMap();
遍历Map集合
1.先得到key集合 然后遍历key, 得到value  不推荐
2.得到EntrySet   Entry(key/value键值对)  推荐
Map<String, String[]> parameterMap = request.getParameterMap();
Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet();
for (Map.Entry<String, String[]> entry : entries) {
   
    System.out.println(entry.getKey() +"-->"+Arrays.asList(entry.getValue()));
}
浏览器缓存问题:

修改页面, 访问的时候,页面没有改, 可能是浏览器缓存问题

chrome: ctrl + F5 底层刷新

Response

内容

  1. 设置响应头
  2. 发送状态码
  3. 设置响应正文: 得到响应输出流,输出 重要
  4. 重定向 重要

设置响应头

  • void setIntHeader(String name, int value) 设置响应头, 响应头的值int类型
  • void addIntHeader(String name, int value)
  • void addHeader(String name,String value) 设置响应头, 响应头的值String
  • void setHeader(String name,String value)
  • void setContentType(String )设置content-type的响应头
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值