//1.获取请求方法:GET
String method = req.getMethod();
System.out.println(method);
//2.获取虚拟目录
String Cpath = req.getContextPath();
System.out.println(Cpath);
//3.获取 Servlet 路径
String Spath = req.getServletPath();
System.out.println(Spath);
//4.获取get方式请求参数
String Qpath = req.getQueryString();
System.out.println(Qpath);
//5.获取请求URI
String URI = req.getRequestURI();
System.out.println(URI);
//6.获取请求URL
StringBuffer URL = req.getRequestURL();
System.out.println(URL);
//7.获取协议版本
String pro = req.getProtocol();
System.out.println(pro);
//8.获取客户机IP地址
String add = req.getRemoteAddr();
System.out.println(add);
}
【2】获取请求头数据
常用方法:
-
String getHeader(String nem):通过请求头的名称获取请求头的值
-
Enumeration getHeaderNames():获取所有的请求头名称
//请求头数据
public static void requestHead(HttpServletRequest req){
//获取所有请求头名称
Enumeration headernames = req.getHeaderNames();
//遍历
while (headernames.has
必看视频!获取2024年最新Java开发全套学习资料 备注Java
MoreElements()){
String name = headernames.nextElement();
//根据名称来获取请求头的值
String value = req.getHeader(name);
System.out.println(name + “–” + value);
}
}
【3】获取请求体数据
请求体只有POST请求方式才有的,在请求体中封装了POST请求参数
步骤:
- 获取流对象
-
BuferedReader getReader():获取字符输入流
-
ServletInputStream getInputStream():获取字节输入流
- 从流对象中获取数据
- readLine():逐行获取
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//请求消息体数据
//1.获取流对象
BufferedReader br = request.getReader();
//2.读取数据
String line = null;
while ((line = br.readLine()) != null){
System.out.println(line);
}
}
2、其他常用获取功能
【1】获取请求参数通用方法(get和post都能用)
-
String getParameter(String name):根据参数名称获取参数值
-
String[ ] getParameterValues(String name):根据参数名称获取参数值的数组(多用于复选框)
-
Enumeration getParameterNames():获取所有请求的参数名称
-
Map<String,String[]> getParameterMap():获取所有参数的map集合
public class regServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//request.setCharacterEncoding(“UTF-8”);
//post获取请求参数
//1.根据参数名称获取参数值
String name = request.getParameter(“username”);
String password = request.getParameter(“password”);
System.out.println(“post:” +name + password);
//2.根据参数名称获取参数值的数组
String[] hobbys = request.getParameterValues(“hobby”);
for(String hobby : hobbys){
System.out.println(hobby);
}
//3.获取所有请求的参数名称
Enumeration parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()){
String name1 = parameterNames.nextElement();
String value = request.getParameter(name1);
System.out.println(name1 + “–” + value);
System.out.println(“*********”);
}
//4.获取所有参数的map集合
Map<String,String[]> parameterMap = request.getParameterMap();
Set keySets = parameterMap.keySet();
for(String key : keySets){
String[] values = parameterMap.get(key);
for(String value : values){
System.out.println(value);
}
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//get获取请求参数
this.doPost(request,response);
}
}
【2】请求转发
请求转发即一种在服务器内部的资源跳转方式
- 步骤
-
通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
-
使用 RequestDispatcher 对象来进行转发:forward(ServletRequest request,ServletResponse response)
- 特点
-
浏览器地址栏路径不发生变化
-
只能转发到当前服务器内部资源中
-
转发是一次请求
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(“访问regSrevlet”);
request.getRequestDispatcher(“/oneStar”).forward(request,response);
}
【3】共享数据
域对象:首先要了解一下域对象,域对象即一个有作用范围的对象,可以在范围内共享数据
request 域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据,而请求转发就是一次请求,因此可以通过request 域来实现共享数据
常用方法:
-
void setAttribute(String name,Object obj):存储数据
-
Object getAttitude(String name):通过键获取值
-
void removeAttribute(String name):通过键移除键值对
//存储数据到request域中
request.setAttribute(“sag”,“Hello”);
request.getRequestDispatcher(“/oneStar”).forward(request,response);
//从域中获取数据
Object mesage = req.getAttribute(“sag”);
System.out.println(mesage);
【4】获取 ServletContext 对象
- ServletContext getServletContext();
ServletContext context = request.getServletContext();
System.out.println(context);
总结
这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家
.out.println(mesage);
【4】获取 ServletContext 对象
- ServletContext getServletContext();
ServletContext context = request.getServletContext();
System.out.println(context);
总结
这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家
[外链图片转存中…(img-4SIOFIGM-1716442850729)]
[外链图片转存中…(img-q9hI05zE-1716442850730)]