请求对象和响应对象都是由服务器创建,管理,和销毁,我们只是来使用它

1.响应对象

HttpServletResponse(接口)-------继承------>ServletRespons(接口) 

 

  HttpServletResquest(接口)-------继承------>ServletResponse(接口) 

 

  response:设置响应的消息 

 

             response.getWriter.write();设置响应 

 

             resoponse.setStatus()://设置状态码


1.重定向:


 当客户端发来的请求服务器不能处理是,则返回一个状态码,然后客户端拿到状态码之后再重新进行一次别的请求。


 代码:


response.setStatus(302); 

 

    response.setHeader("location","访问下一个服务器的网址");


以上步骤合二为一是:response.sendRedirect("访问下一个的网址");


2.请求转发:


代码 requset.getRequestDispatcher("你要跳转页面的真实路径").forward(request,response);


3.重定向和请求转发的区别


a:重定向:1.两次请求,两次响应,


                   2.地址栏的地址发生改变


                   3.可以请求内部资源,也可以请求外部资源.


b:请求转发:1.一次请求,一次响应.


                       2.地址栏的地址不发生改变.


                      3.只能够请求内部资源.


2.请求对象


request 对象




ServletResponse设置返回内容 servlet返回对象_重定向




URI:统一资源标识符


URL:统一资源定位符


1.URL对浏览器地址栏的编码


Get请求方法获取参数的通用方法,如下



ServletResponse设置返回内容 servlet返回对象_服务器_02



post请求方式获取参数的基本方法




ServletResponse设置返回内容 servlet返回对象_重定向_03



2.针对get  post 请求通用的处理中文乱码的方式



ServletResponse设置返回内容 servlet返回对象_请求转发_04




ServletResponse设置返回内容 servlet返回对象_重定向_05



注意:这种方式产生乱码的原因:


解决方式: 无论你用什么方式编的码,你的底层都是二进制的数据,所以我先用ISO-8859-1解码,然后在用uft-8进行编码就好了。


3.大多数我们只用post请求方式,那么当post请求时,直接一步设置编码格式就好。


ServletResponse设置返回内容 servlet返回对象_请求转发_06


注意:当我们创建一个servlet的时候开始最重要的两个设置编码格式的步骤:


request.setCharacterEncoding("utf-8");
 
response.setCententType("text/html;charset=utf-8");


分别设置请求和响应的编码格式。


3.获取请求参数的几种方式。



ServletResponse设置返回内容 servlet返回对象_重定向_07

ServletResponse设置返回内容 servlet返回对象_重定向_08



4.路径的书写,以“/”开头。

1.服务器内部的跳转路径 ,不需要加项目的名称。


request.getRequestDispatcher("/myservlet2").forward(request,response);

2.页面上路径和重定向需要加项目的名称。

<img  src="/MyServlet/mydemo4"   id="img1"></img>


注意:什么时候使用重定向?什么时候使用请求转发?


1,如果需要在多个请求之间共享数据,则使用请求转发。


2:重定向之前request中存放的变量全部失效并进入一个新的session的作用域;


3.请求转发:之前的request中存放的变量没有失效,就想把两个页面拼在一起;