1、HttpServletRequest类有什么作用:
每次只要有请求进入Tomcat服务器,Tomcat服务器就会把请求过来的HTTP协议信息解析好封装到Request对象中。
然后传递到service方法(doGet和doPost)中给我们使用,我们可以通过HttpServletRequest对象,获取所有请求的信息。
2、HttpServletRequest类的常用方法:
-
getRequestURI() 获取请求的资源路径
-
getRequestURL() 获取请求的统一资源定位符(绝对路径)
-
getRemoteHost() 获取客户端的IP地址
-
getHeader() 获取请求头
-
getParameter() 获取请求的参数
-
getParameterValues() 获取请求的参数(多个值的时候使用)
-
getMethod() 获取请求的方式GET或POST
-
setAttribute(key, value) 设置域数据
-
getAttribute(key) 获取域数据
-
getRequestDispatcher() 获取请求转发对象
如果访问的时候网页出现500,不一定就是代码的错误,在代码无误的情况下,可能原因是因为jre没有选择正确。
3、如何获取客户端发送过来的参数(请求参数)
-
getParameter() 获取请求的参数
-
getParameterValues() 获取请求的参数(多个值的时候使用)
解决POST中文乱码问题(要在获取请求参数之前调用才有效):
request.setCharacterEncoding("UTF-8");
要在获取请求参数之前调用才有效
4、请求转发:
什么是请求转发:
请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作叫请求转发。
请求转发的特点:
1、浏览器地址栏没有变化
2、他们是一次请求
3、他们共享Request域中的数据
(在请求转发过程中,客户端只发送了一次请求,而服务器也只有一个 Servlet 负责处理这个请求。当请求被转发时,原本的 Servlet 将 request 包装后传递给下一个 Servlet 继续处理,因此 request 域中存储的数据也可以被下一个 Servlet 获取到,实现了数据的共享。)
4、可以转发到WEB-INF目录下
5、不能访问工程以外的资源
**getRequestDispatcher**
是一个用于获取请求分派器(Request Dispatcher)的方法,可以从 ServletContext、ServletRequest 或 HttpServletResponse 对象中获取。请求分派器是 Servlet API 提供的一种用于将请求转发到其他 Servlet、JSP 页面或其他资源的机制。通过请求分派器,可以实现页面跳转、内部重定向和包含其他资源等功能。
请求分派器提供了两种方法来实现请求转发:
-
forward()
方法:该方法由请求分派器的对象调用,它会将请求转发给一个新的资源,如 Servlet、JSP 页面或静态资源。使用 forward() 方法进行转发时,浏览器地址栏不会显示被转发的资源的 URL,而是仍然保持原先的地址。 -
include()
方法:该方法与 forward() 类似,也是将请求发送到另一个 Servlet 或 JSP 页面。区别在于,使用 include() 方法进行转发时,被转发的资源返回后会继续处理当前 Servlet 的请求。
getRequestDispatcher
方法通常会接收一个表示目标资源路径(相对路径或绝对路径)的字符串作为参数。如:
RequestDispatcher dispatcher = request.getRequestDispatcher("/index.jsp"); dispatcher.forward(request, response);
上述代码表示获取一个指向 /index.jsp 资源的请求分派器,并使用 forward() 方法将当前请求转发到 index.jsp 页面。
总之,getRequestDispatcher
方法是 Java Servlet 应用程序中常见的一种请求回传机制,能够将请求信息发送到另一个 Servlet 或 JSP 页面。它提供了一种实现页面跳转和请求转发的方便和灵活的方式。
getRequestDispatcher() 获取请求转发对象,也是请求分派器,
调用forward()方法将本页面请求转发到:servlet2
5、base标签的作用:
base标签设置页面相对路径工作时参照的地址,href 属性就是参数的地址值
6、Web中相对路径和绝对路径:
相对路径:
. 表示当前目录
.. 表示上一级目录
资源名 表示当前目录/资源名
绝对路径:
http://ip:port/工程路径/资源路径
7、Web中斜杠 “ / ” 的不同意义:
在web中斜杠 / 是一种绝对路径。
/ 斜杠 如果被浏览器解析,得到的地址是:http://ip:port/
< a href="/"> 斜杆< /a>
/ 斜杠 如果被服务器解析,得到的地址是:http://ip:port/工程路径
1、 < url-pattern >/servlet1< /url-pattern>
2、ServletContext.getRealPath("/")
3、request.getRequestDispatcher("/")
特殊情况:请求重定向response.sendRediect("/");把斜杠发送给浏览器解析,得到 http://ip:port/