第一:概念
application对象就是上下文对象,翻译过来就是这个意思
1.新建项目的请求路径在Content root url上去找(右键新建项目的时候会出现),这也就是8080之后的地址。
如果想修改请求地址的话,在项目上右键(最后一个)属性--》myeclipse--》web--》把名字改掉
2.批量删除:request.getparamterValues,这个方法返回的是一个String类型的数组
3.三种跳转:
---1.out.print():使用了localhost对象
---2.request.getREquestDispatcher(""),这是转发的方法,返回值是RequestDispatcher对象,这个对象有个前进的方法forword(),根据推断应该还有个后退的方法back()
---3.response.sendRedirect(""),这是重定向
--注意:request是封装客户端的请求,
response封装服务器端的响应
---区别:1.现象:转发不会发生地址栏的改变(地址栏显示第一次接收请求的页面的地址),重定向会发生地址栏的改变(显示最后一次响应的页面的地址)
2.实质:转发的实质是第一次是客户端向服务器发送请求,然后服务器端在把请求转发给服务器上的另一个地址。forword的作用是指把request对象封装的数据往下一个页面传递。其实这里就是传递request对象里面封装的数据,这里一直都是在用同一个request对象。
重定向的实质第一次是客户端向服务器发送请求,然后服务器把请求响应给客户端(这个响应的结果是服务器端的另一个地址),在然后客户端再次向服务器发送请求,请求的地址是第一次服务器端响应给客户端的地址。也就是两次请求都由客户端发起。
这里先后产生了两个request对象。这两次请求不能共享同一个request对象。也就不能再次接受request里面的数据(不能写request.getparamter())
4.url重写:为了能够也就不能再次接受request里面的数据,在使用response的时候需要使用url重写,
所谓url重写,就是在response重定向的路径中用?加上需要的参数,以达到继续传参的目的。
也就是说response需要重写url的方式进行参数的向下传递
5.request.setAttribute():当需要使用一些附加内容的时候,就使用这个方法传参。注意要使用同一个request对象。
也就是说request需要使用setAttribute向下传递参数,这是转发携带参数的方法,而重定向(或者超链接)想携带参数就要用url传参
6.
----转发的处理速度快,因为没有第二次经过客户端(重定向要两次经过客户端)
----转发的缺点是导致表单重复提交(例如添加的时候,添加成功之后看到的中间的地址,而不是最终的地址,但是当我们刷新的时候相当于再次发生请求(因为我们刷新的页面是中间处理请求的页面)),
而重定向最终我们看到的路径是最终路径而不是中间处理页面,所以当执行完成后在刷新也不会重复执行(因为刷新的不是处理页面而是最终结果页面)