外包 网站开发公司,网站专题活动策划方案,晋江文创园网站建设,榆林做网站的公司电话文章目录 一、RequestResponse介绍二、Request 继承体系三、Request 获取请求数据1、获取请求数据方法#xff08;1#xff09;、请求行#xff08;2#xff09;、请求头#xff08;3#xff09;、请求体 2、通过方式获取请求参数3、IDEA模板创建Servlet4、请求参数… 文章目录 一、RequestResponse介绍二、Request 继承体系三、Request 获取请求数据1、获取请求数据方法1、请求行2、请求头3、请求体 2、通过方式获取请求参数3、IDEA模板创建Servlet4、请求参数中文乱码处理 四、Request 请求转发五、Response 设置相应数据功能介绍六、Response 完成重定向路径问题 七、Response 响应字符数据八、Response 响应字节数据 一、RequestResponse介绍 二、Request 继承体系 三、Request 获取请求数据
1、获取请求数据方法
1、请求行 Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// String getMethod()获取请求方式 GETString method req.getMethod();System.out.println(method);//GET// String getContextPath()获取虚拟目录(项目访问路径)/request-demoString contextPath req.getContextPath();System.out.println(contextPath);// StringBuffer getRequestURL(): 获取URL(统一资源定位符)http://localhost:8080/request-demo/req1StringBuffer url req.getRequestURL();System.out.println(url.toString());// String getRequestURI()获取URI(统一资源标识符) /request-demo/req1String uri req.getRequestURI();System.out.println(uri);// String getQueryString()获取请求参数GET方式 usernamezhangsanString queryString req.getQueryString();System.out.println(queryString);//------------// 获取请求头user-agent: 浏览器的版本信息String agent req.getHeader(user-agent);System.out.println(agent);}2、请求头 // 获取请求头user-agent: 浏览器的版本信息String agent req.getHeader(user-agent);System.out.println(agent);3、请求体 Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取post 请求体请求参数//1. 获取字符输入流BufferedReader br req.getReader();//2. 读取数据String line br.readLine();System.out.println(line);}!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
bodyform action/request-demo/req4 methodpostinput typetext nameusernameinput typepassword namepasswordinput typesubmit/form/body
/html2、通过方式获取请求参数
统一doGet和doPost方法内的代码
package com.itheima.web.request;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.Map;/*** request 通用方式获取请求参数*/
WebServlet(/req2)
public class RequestDemo2 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//GET请求逻辑//System.out.println(get....);//1. 获取所有参数的Map集合MapString, String[] map req.getParameterMap();for (String key : map.keySet()) {// username:zhangsan lisiSystem.out.print(key:);//获取值String[] values map.get(key);for (String value : values) {System.out.print(value );}System.out.println();}System.out.println(------------);//2. 根据key获取参数值数组String[] hobbies req.getParameterValues(hobby);for (String hobby : hobbies) {System.out.println(hobby);}//3. 根据key 获取单个参数值String username req.getParameter(username);String password req.getParameter(password);System.out.println(username);System.out.println(password);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//POST请求逻辑this.doGet(req,resp);/*System.out.println(post....);//1. 获取所有参数的Map集合MapString, String[] map req.getParameterMap();for (String key : map.keySet()) {// username:zhangsan lisiSystem.out.print(key:);//获取值String[] values map.get(key);for (String value : values) {System.out.print(value );}System.out.println();}System.out.println(------------);//2. 根据key获取参数值数组String[] hobbies req.getParameterValues(hobby);for (String hobby : hobbies) {System.out.println(hobby);}//3. 根据key 获取单个参数值String username req.getParameter(username);String password req.getParameter(password);System.out.println(username);System.out.println(password);*/}
}
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
bodyform action/request-demo/req4 methodpostinput typetext nameusernamebrinput typepassword namepasswordbrinput typecheckbox namehobby value1 游泳input typecheckbox namehobby value2 爬山 brinput typesubmit/form/body
/html3、IDEA模板创建Servlet 4、请求参数中文乱码处理 package com.itheima.web.request;import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;public class URLDemo {public static void main(String[] args) throws UnsupportedEncodingException {String username 张三;//1. URL编码String encode URLEncoder.encode(username, utf-8);System.out.println(encode);//2. URL解码//String decode URLDecoder.decode(encode, utf-8);String decode URLDecoder.decode(encode, ISO-8859-1);System.out.println(decode);//3. 转换为字节数据,编码byte[] bytes decode.getBytes(ISO-8859-1);/* for (byte b : bytes) {System.out.print(b );}*///4. 将字节数组转为字符串解码String s new String(bytes, utf-8);System.out.println(s);}
}
package com.itheima.web.request;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.nio.charset.StandardCharsets;/*** 中文乱码问题解决方案*/
WebServlet(/req4)
public class RequestDemo4 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 解决乱码POSTgetReader()//request.setCharacterEncoding(UTF-8);//设置字符输入流的编码//2. 获取usernameString username request.getParameter(username);System.out.println(解决乱码前username);//3. GET,获取参数的方式getQueryString// 乱码原因tomcat进行URL解码默认的字符集ISO-8859-1/* //3.1 先对乱码数据进行编码转为字节数组byte[] bytes username.getBytes(StandardCharsets.ISO_8859_1);//3.2 字节数组解码username new String(bytes, StandardCharsets.UTF_8);*/username new String(username.getBytes(StandardCharsets.ISO_8859_1),StandardCharsets.UTF_8);System.out.println(解决乱码后username);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}四、Request 请求转发 demo5
package com.itheima.web.request;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.nio.charset.StandardCharsets;/*** 请求转发*/
WebServlet(/req5)
public class RequestDemo5 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(demo5...);System.out.println(request);//存储数据request.setAttribute(msg,hello);//请求转发request.getRequestDispatcher(/req6).forward(request,response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}demo6
package com.itheima.web.request;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;/*** 请求转发*/
WebServlet(/req6)
public class RequestDemo6 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(demo6...);System.out.println(request);//获取数据Object msg request.getAttribute(msg);System.out.println(msg);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}五、Response 设置相应数据功能介绍 六、Response 完成重定向 ResponseDemo1
package com.itheima.web.response;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;WebServlet(/resp1)
public class ResponseDemo1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(resp1....);//重定向/*//1.设置响应状态码 302response.setStatus(302);//2. 设置响应头 Locationresponse.setHeader(Location,/request-demo/resp2);*/response.sendRedirect(contextPath/resp2);//response.sendRedirect(https://www.itcast.cn);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}ResponseDemo2
package com.itheima.web.response;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;WebServlet(/resp2)
public class ResponseDemo2 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(resp2....);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}路径问题 package com.itheima.web.response;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;WebServlet(/resp1)
public class ResponseDemo1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(resp1....);//重定向/*//1.设置响应状态码 302response.setStatus(302);//2. 设置响应头 Locationresponse.setHeader(Location,/request-demo/resp2);*///简化方式完成重定向//动态获取虚拟目录String contextPath request.getContextPath();response.sendRedirect(contextPath/resp2);//response.sendRedirect(https://www.itcast.cn);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}七、Response 响应字符数据 package com.itheima.web.response;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.io.PrintWriter;/*** 响应字符数据设置字符数据的响应体*/
WebServlet(/resp3)
public class ResponseDemo3 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType(text/html;charsetutf-8);//1. 获取字符输出流PrintWriter writer response.getWriter();//content-type//response.setHeader(content-type,text/html);writer.write(你好);writer.write(h1aaa/h1);//细节流不需要关闭}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}八、Response 响应字节数据 package com.itheima.web.response;import org.apache.commons.io.IOUtils;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;/*** 响应字节数据设置字节数据的响应体*/
WebServlet(/resp4)
public class ResponseDemo4 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 读取文件FileInputStream fis new FileInputStream(d://a.jpg);//2. 获取response字节输出流ServletOutputStream os response.getOutputStream();//3. 完成流的copy/* byte[] buff new byte[1024];int len 0;while ((len fis.read(buff))! -1){os.write(buff,0,len);}*/IOUtils.copy(fis,os);fis.close();}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.6/version/dependency