动态图网站怎么做dw,多用户开源系统哪个好,桂林黄页大全桂林本地信息网,郑州网站公司排名一、Request介绍 在计算机网络中#xff0c;Request#xff08;请求#xff09;通常指的是客户端向服务器发送的请求消息#xff0c;用于获取特定资源或执行特定操作。在Web开发中#xff0c;Request通常指的是HTTP请求#xff0c;用于客户端与服…一、Request介绍 在计算机网络中Request请求通常指的是客户端向服务器发送的请求消息用于获取特定资源或执行特定操作。在Web开发中Request通常指的是HTTP请求用于客户端与服务器之间的通信。 1、以下是HTTP请求的一般结构 1、请求行包括请求方法GET、POST、PUT、DELETE等、请求的URL路径和协议版本。 2、请求头部包括关于请求的附加信息如Host主机名、User-Agent用户代理浏览器信息、Accept可接受的内容类型、Cookie等。 3、请求体对于POST请求请求体中包含了向服务器提交的数据比如表单数据、JSON数据等。GET请求通常不包含请求体。 2、 常见的HTTP请求方法有 GET用于请求获取特定资源的信息。 POST用于向服务器提交数据。 PUT用于更新或创建资源。 DELETE用于删除指定的资源。 在Web开发中服务器接收到请求后会根据请求中的信息进行处理并返回相应的响应Response给客户端。请求和响应是Web开发中基本的通信方式通过请求和响应可以实现网页的动态加载、数据的传输等功能。 总之Request是指客户端向服务器发送的请求消息其中包含了客户端想要执行的操作以及相关的信息用于与服务器进行通信和交互。 3、Request对象继承体系结构 二、Request常用方法 1、请求对象常用方法-获取请求行及各种路径 返回值 方法名 说明 String getMethod() 获得请求方式 String getContextPath() 获取虚拟目录名称 String getServletPath() 获取Servlet映射路径 String getRemoteAddr() 获取访问者ip地址 String getRequestURI() 获取统一资源标识符 StringBuffer getRequestURL() 获取统一资源定位符 String getProtocol() 获取协议及版本 2、代码实现方法
package com;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** author 86136*/
WebServlet(/aa)
public class MyWeb01 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req,resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取请求方式String method req.getMethod();System.out.println(method method);//method POST//获取虚拟目录名称String contextPath req.getContextPath();System.out.println(contextPath contextPath); //contextPath (这里什么都没有是因为我没有设置虚拟目录名称)//获取Servlet映射目录String servletPath req.getServletPath();System.out.println(servletPath servletPath);//servletPath /aa//获取访问者ip地址String remoteAddr req.getRemoteAddr();System.out.println(remoteAddr remoteAddr);//remoteAddr 127.0.0.1//获取统一资源标识符String requestURI req.getRequestURI();System.out.println(requestURI requestURI);//requestURI /aa//获取统一资源定位符StringBuffer requestURL req.getRequestURL();System.out.println(requestURL requestURL);//requestURL http://localhost:8080/aa//获取协议及版本String protocol req.getProtocol();System.out.println(protocol protocol);//protocol HTTP/1.1}
}3、获取请求头信息 返回值 方法名 说明 String getHeader(String name) 根据请求头名称获取一个值 EnumerationString getHeaderNames() 获取所有请求头名称 4、代码实现
package com;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
/*** author 86136*/
WebServlet(/aa)
public class MyWeb01 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req,resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取请求头信息//根据请求头名称获取一个值String host req.getHeader(Host);System.out.println(host host);//host localhost:8080//获取所有请求头名称EnumerationString headerNames req.getHeaderNames();//headerNames org.apache.tomcat.util.http.NamesEnumerator727fdf5cSystem.out.println(headerNames headerNames);//遍历while (headerNames.hasMoreElements()){//得到当前遍历出来的请求头名称String name headerNames.nextElement();//根据名称获取请求头的值String value req.getHeader(name);System.out.println(name value);}}
}5、获取请求参数信息 返回值 方法名 说明 String getParameter(String name) 根据名称获取数据 String[] getParameterValues(String name) 根据名称获取所有数据 EnumerationString getParameterNames() 获取所有名称 MapString,String[] getParameterMap() 获取所有参数的键值对 6、代码实现
package com;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;/*** author 86136*/
WebServlet(/aa)
public class MyWeb01 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req,resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//中文乱码req.setCharacterEncoding(utf-8);//获取请求参数信息//根据名称获取数据String name req.getParameter(name);System.out.println(name name);//name 九亿少女梦//根据名称获取所有数据String[] yxs req.getParameterValues(yx);System.out.println(yxs yxs);//获取所有名称EnumerationString parameterNames req.getParameterNames();//遍历while (parameterNames.hasMoreElements()){//得到当前遍历出来的参数名String s parameterNames.nextElement();System.out.println(s s); //s name s pass s yxString parameter req.getParameter(s);System.out.println(parameter parameter); //parameter 九亿少女梦 parameter 1314520 parameter 打游戏}//获取所有参数的键值对map集合MapString, String[] parameterMap req.getParameterMap();SetString strings parameterMap.keySet();for (String names : strings) {//获取键值对String[] values parameterMap.get(names);System.out.println(names);System.out.println(values Arrays.toString(values));}}
}7、中文乱码问题 1、get方式 没有乱码问题再Tomcat8.5版本后已经解决 2、post方式 有乱码问题再获取参数前设置request的编码req.setCharacterEncoding(utf-8)
三、Request转发 1、请求转发 1、请求转发一种在服务器内部的资源跳转方式, 客户端的一次请求到达后发现需要借助其他 Servlet 来实现功能。
特点 浏览器地址栏不变 只能转发到当前服务器内部资源中 转发是一次请求 2、请求转发函数 返回值 方法名 说明 RequestDispatcher getRequestDispatcher(String name) 获取请求调度对象 返回值 方法名 说明 void forward(ServletRequest req,ServletResponse resp) 实现转发 3、代码实现
package com;import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;/*** author 86136*/
WebServlet(/bb)
public class MyWeb02 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req,resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//中文乱码req.setCharacterEncoding(utf-8);//第一种方式//RequestDispatcher dispatcher req.getRequestDispatcher(/aa);//dispatcher.forward(req,resp);//第二种req.getRequestDispatcher(/aa).forward(req,resp);}
}package com;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;/*** author 86136*/
WebServlet(/aa)
public class MyWeb01 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req,resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//中文乱码req.setCharacterEncoding(utf-8);System.out.println(喜欢你);}
}我访问http://localhost:8080/bb 跳转到 http://localhost:8080/aa浏览器还是显示的/bb却执行了/aa下面的 四、Request数据共享 1、共享数据 1、域对象 一个有作用范围的对象可以在范围内共享数据 request域代表一次请求的范围一般用于请求转发的多个资源中共享数据 2、方法 1. void setAttribute(String name,Object obj):存储数据 2. Object getAttitude(String name):通过键获取值 3. void removeAttribute(String name):通过键移除键值对 3、代码实现 //往request中存数据
req.setAttribute(name,hello);
//从request中根据key获取数据
Object name req.getAttribute(name);
System.out.println(name name);
//从request中根据key生成数据
req.removeAttribute(name);