一:本周学习内容
- XML
- Tomcat
- Servlet
- Request , Reponse
- JSP
- EL表达式
二:部分学习内容
Request & Response
- Request: 获取请求数据
- Response:设置响应数据,设置完成后,在Tomcat真正响应之前,会将这个对象中的数据取出拼成响应格式的字符串,给浏览器 ,浏览器再做出展示
Request 继承体系
ServletRequest ————–> Java提供的请求对象根接口
|
|
HttpServletRequset ——> java提供的对Http协议封装的请求对象接口
|
|
RequestFacade ———-> Tomcat定义的实现类
因为浏览器的请求由web服务器解析,所以相应实现类也应由web服务器提供
Tomcat需要解析请求数据,封装为request对象,并且创建request对象传递到service方法中
Response
体系结构
ServletResponse ————–> Java提供的响应对象根接口
|
|
HttpServletResponse ——> java提供的对Http协议封装的响应对象接口
|
|
ResponseFacade ———-> Tomcat定义的实现类
Request通用方式获取请求参数
作用:
统一了get请求方式和post请求方式获取参数的途径,简化了代码的书写
例如使用了通用方式获取请求参数时,在deGet方法中写处理逻辑,此时只需要在doPost方法中写this.doGet(req,resp)即可
- Map<String,String[]> getParameterMap():获取所有参数Map集合
- String [] getParameterValues(String name):根据名称获取参数值(数组)(当确切的知道这个参数只有多个时可以用)
- String getParameter(String name):根据名称获取参数值(单个值)(当确切的知道这个参数只有一个时可以用)
这些方法底层会先判断请求方式是post还是get,如果是get调用getQueryString()如果是post调用getReader()
Request请求转发特点:
- 浏览器地址栏路径不发生改变
- 只能转发到当前服务器资源
- 一次请求,可以在转发的资源间使用request共享数据
Response重定向特点
- 浏览器地址栏路径发生变化
- 可以重定向到任意位置的资源(服务器内外均可)
因为两次请求都是由浏览器发出,浏览器可以访问任意位置资源 - 两次请求,不能在多个资源使用request共享数据
因为发了两次请求,就有两个request域,无法共享
路径问题
- 浏览器使用:需要加虚拟目录
- 服务器使用:不需要加虚拟目录
由于直接加虚拟目录会增强代码的耦合性,不利于后期更改路径,所以可以用request的getContextPath() 方法动态的获取虚拟目录