service方法重定向和请求转发

1.service方法处理请求/响应

对于每一个HTTP请求,servlet容器会创建一个封装了HTTP请求的ServletRequest实例传递给servlet
的service方法,ServletResponse则表示一个Servlet响应,其隐藏了将响应发给浏览器的复杂性。
通过ServletRequest的方法你可以获取一些请求相关的参数,而ServletResponse则可以将设置一些返
回参数信息,并且设置返回内容。
a.HttpServlet中的service方法:
b. 常用方法
Request对象:接口封装了客户请求信息,如客户请求方式、参数、客户使用的协议、以及发出请求的远程主机信息等,其主要方法:
HttpServletResquest常用方法:

req.getParameter(String); //根据名字获取参数的值:表单中的参数,地址栏中的参数
req.getParameterValues(String)//根据名字获取一组参数的值(复选框)
req.getParameterMap()//获得一个Map<String, String[]>对象,所有的参数值都放在字符串数组
中
req.getAttribute(String);//根据名字获取属性的值
req.setAttribute(String,Object);//根据属性设置值
req.getRequestDispatcher(String);//请求转发器
req.setCharacterEncoding("utf-8"); //设置请求的编码方式

Response对象:接口封装了服务器响应信息,主要用来输出信息到客户端浏览器,其主要方法:
HttpServletResponse常用方法:

Response.setContentType("text/html;charset=utf-8");设置响应的内容类型
PrintWriter response.getWriter();//获得响应的输出流
response.sendRedirect(redirect);//重定向到指定的网址

2.请求转发跟重定向的区别?
请求转发,服务器转发:地址栏不会发生改变,在服务器端完成,效率高。携带数据可以在Servlet之间进行传递。

//请求转发,服务器转发
request.setAttribute("msg","欢迎你登陆成功");//request存储数据
request.getAttribute("msg"); //request对象获取数据
request.getRequestDispatcher("/welcomeServlet").forward(request,response);

在这里插入图片描述客户端重定向:客户端重新发送新的请求,无法携带数据。地址栏会发生改变。

//客户端重定向
//服务器会向客户端浏览器发送一个响应:url, 客户端会重新请求该URL
request.setAttribute("msg","欢迎你登陆成功");//request存储数据
request.getAttribute("msg"); //request对象获取数据
response.sendRedirect("/login.html");

转发使用的是req.getRequestDispatcher()方法;重定向使用的是resp.sendRedirect();
转发:浏览器URL的地址栏不变。重定向:浏览器URL的地址栏改变;
转发是服务器行为,重定向是客户端行为;
转发是浏览器只做了一次访问请求。重定向是浏览器做了至少两次的访问请求;
转发2次跳转之间传输的信息不会丢失,重定向2次跳转之间传输的信息会丢失(request范围);

转发和重定向的选择

  1. 重定向的速度比转发慢,因为浏览器还得发出一个新的请求,如果在使用转发和重定向都无所谓的
    时候建议使用转发。
  2. 因为转发只能访问当前WEB的应用程序,所以不同WEB应用程序之间的访问,特别是要访问到另外
    一个WEB站点上的资源的情况,这个时候就只能使用重定向了
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿才在线摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值