请求对象和响应对象都是由服务器创建,管理,和销毁,我们只是来使用它
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 对象
URI:统一资源标识符
URL:统一资源定位符
1.URL对浏览器地址栏的编码
Get请求方法获取参数的通用方法,如下
post请求方式获取参数的基本方法
2.针对get post 请求通用的处理中文乱码的方式
注意:这种方式产生乱码的原因:
服务器对获取出来的请求参数的编码方式是ISO-8859-1的编码方式, 然而页面的编码方式是uft-8的编码方式,两端出现码表不匹配,所以就出现乱码的方式。解决方式:无论你用什么方式编的码,你的底层都是二进制的数据,所以我先用ISO-8859-1解码,然后在用uft-8进行编码就好了。
3.大多数我们只用post请求方式,那么当post请求时,直接一步设置编码格式就好。
注意:当我们创建一个servlet的时候开始最重要的两个设置编码格式的步骤:
request.setCharacterEncoding("utf-8");
response.setCententType("text/html;charset=utf-8");
分别设置请求和响应的编码格式。
3.获取请求参数的几种方式。
4.路径的书写,以“/”开头。
1.服务器内部的跳转路径 ,不需要加项目的名称。
request.getRequestDispatcher("/myservlet2").forward(request,response);
2.页面上路径和重定向需要加项目的名称。
<img src="/MyServlet/mydemo4" id="img1"></img>
注意:什么时候使用重定向?什么时候使用请求转发?
1,如果需要在多个请求之间共享数据,则使用请求转发。
2:重定向之前request中存放的变量全部失效并进入一个新的session的作用域;
3.请求转发:之前的request中存放的变量没有失效,就想把两个页面拼在一起;