Servlet入门(五)request和response对象

版权声明:程序猴jwang版权所有 https://blog.csdn.net/qq_21046965/article/details/84204027

前言

      本章学习servlet中的request、response对象

方法

1.概念

相信大家在之前的章节已经看到了,我用到了request对象获取前台传递过来的数据:

String username = request.getParameter("username");
String password = request.getParameter("password");

服务器在收到浏览器发出的请求后,会自动创建一个request对象用来保存本次请求的所有相关信息~

2.常用方法

在说这个之前,还是和Java刚开始讲String类的时候一样,需要大家在网上下载相关的API,也就是JavaEE的API文档!

网址:https://www.oracle.com/technetwork/java/javaee/downloads/java-ee-sdk-downloads-3908423.html

大家把下面的这个包下载好之后,解压缩,找到.\java_ee_sdk-8\glassfish5\docs\api\javaee-full文件路径,点击index.html即可。

 

下面我们来看一下常用的request对象的方法吧!

  •  String getParameter(String name) : 该方法用来获取前台页面name属性传递的表单值,只能获取单个值(text、password)

  • String[] getParameterValues(String name):该方法用来获取前台页面name属性传递的表单值,可获取多个值(checkbox)

  • void setCharacterEncoding(String env) throws UnsupportedEncodingException 设置请求编码

  • void setAttribute(String name,Object o):设置名字为name的request的参数值

  • Object getAttribute(String name):返回由name指定的属性值

--关于request对象的其他方法,我们今后用到的时候在进行总结。

接下来我们来看一下response对象的方法吧!

因为response对象的方法不是那么常用,所以我就举个例子

  • void sendError(int sc,String msg) throws IOException:该方法用来向客户端发送错误信息

Servlet代码中加入该方法后的效果是什么呢?请看:

response.sendError(404,"This Page is Not Found");

那么你的页面发送请求后会出现如下错误提示:

是不是感觉很熟悉啊!

其他

1.设置请求转发

*        作用:实现多个servlet联动操作处理请求,这样避免代码冗余,让servlet的职责更加明确。
*        使用:
*                req.getRequestDispatcher("要转发的地址").forward(req, resp);
*                地址:相对路径,直接书写servlet的别名即可。
*        特点:
*            一次请求,浏览器地址栏信息不改变。

相信大家发现了之前写的代码中出现了如下代码:

request.getRequestDispatcher("/success.jsp").forward(request, response);

这句代码是一个固定的格式,用来设置请求转发。作用是servlet处理完请求之后,将跳转到其他页面或者servlet

2.设置重定向

Servlet处理完后跳转页面或者Servlet还有另外一种方法,那就是重定向

*        解决了表单重复提交的问题,以及当前servlet无法处理的请求的问题。
*        使用:
*            resp.sendRedirect(String uri);
*        示例:
*            resp.sendRedirect("/login.jsp");
*        特点:
*            两次请求,两个request对象。
*            浏览器地址栏信息改变

response.sendRedirect("/login.jsp");

其作用效果和请求转发一样!

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

我在其他博主那里找到了有价值的信息,传送门:https://blog.csdn.net/liubin5620/article/details/79922692

总结:

  • 如果请求中有表单数据,而数据又比较重要,不能重复提交,建议使用重定向。
  • 如果请求被Servlet接收后,无法进行处理,建议使用重定向定位到可以处理的资源。    
  • 其他情况建议使用请求转发。

4.request对象作用域

request对象用于解决一次请求内的数据共享,也就是说在一次请求内只有一个request对象并且这次请求内的所有操作共享同一个request

猜你喜欢

转载自blog.csdn.net/qq_21046965/article/details/84204027