当前位置:网站首页>Request object and response object analysis
Request object and response object analysis
2022-07-06 11:14:00 【Call me uncle】
Catalog
②: Response to the garbled problem
request object
When the client sends a request to the server , The server created for this request request object , And in the call Servlet Of service When the method is used , Pass the object to service Method .Request Object encapsulates all the request data sent by the client .

explain :
We use... In browsers , Any operation constitutes a request for information , Send to reuqest object , And send it to Servlet Under the interface service, Down to HttpServlet.
One doGet Small projects :
RegisServlet.java
package com.qcby.servlet;
import java.io.IOException;
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 org.apache.catalina.User;
@WebServlet("/regist")
public class RegisServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println(username + " " + password);
}
}rigist.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/JiuYueServices/regist" method="get">
user name :<input type="text" name="username"/>
password :<input type="text" name="password"/>
<input type="submit" value=" register ">
</form>
</body>
</html><form action="/JiuYueServices/regist" method="get"> Inside JiuYueServices yes Project name
success :

The code problem :
because request Is to receive requests from users , The server converts the request according to the encoding format . The default encoding format on the server side is ISO-8859-1( This encoding does not support Chinese ), Our user browser defaults to utf-8 The encoding format of , So it often produces garbled code . To solve the problem of garbled code , Need to set up request The encoding format , Tell the server how to parse the data . Or after receiving the garbled code , What encoding format is used to restore

resolvent :
Mode one :( all )
request.setCharacterEncoding("UTF-8");Mode two :( With the help of String Object method , This method is valid for any request , It's all universal )
new String(request.getParameter(name).getBytes("ISO-8859-1"),"UTF-8"))Request forwarding
Request forwarding is a server behavior , When the client request arrives , The server forwards , The request object is saved , In the address bar url The address will not change , After getting the corresponding , The server will send the request to the client , From beginning to end, only one request was made .
request.getRequestDispatcher(url).forward(request, response);Two servlet:
/**
*
* @author lenovo
* Request forwarding jump
* You can make the server jump to the client ( Or designated (Servlet)
* characteristic :
* 1. Server side behavior
* 2. The address bar doesn't change
* 3. It's a request from beginning to end
* 4.request The data in servlet Share in program
*/
@WebServlet(value="/s01")
public class Servlet01 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println("s01="+username + " " + password);
// Request to jump to Servlet02
//req.getRequestDispatcher("s02").forward(req, resp);
// Request to html page
req.getRequestDispatcher("RegistServlet.html").forward(req, resp);
}
}@WebServlet(value="/s02")
public class Servlet02 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
req.setCharacterEncoding("UTF-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println("s02=" + username + " " + password);
}
}Running, we found s01 and s02 Metropolitan output , And only once


request Scope
request Express a request , Just make a request and create a request object , His scope : Only valid in the current request .
use : It is often used to pass parameters between different pages of the same request between servers , It is often used for control value transmission of forms .
Common methods
| request.setAttribute(String name,Object value) | Set domain object content | |
| request.getAttribute(String name) | Get domain object content | |
| request.removeAttribute(String name) | Delete domain object content |
Two servlet
@WebServlet("/s03")
public class Servlet03 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println(" I am a 03");
req.setAttribute("user", "qcby");
req.setAttribute("age", 18);
req.getRequestDispatcher("s04").forward(req, resp);
}
}@WebServlet("/s04")
public class Servlet04 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println(" I am a 04");
System.out.println(req.getAttribute("user"));
System.out.println(req.getAttribute("age"));
}
}
visit :http://localhost:8080/SecondServlet/s03

response object


①:response Main methods
| getWriter() | Get character stream ( Only corresponding string data ) |
| getOutputStream() | Obtain byte stream ( Can correspond to all data ) |
getWriter()
@WebServlet("/regist")
public class RegistServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter printWriter = resp.getWriter();
printWriter.print("success");
}
}getOutputStream()
@WebServlet("/regist")
public class RegistServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
// PrintWriter writer = resp.getWriter();
// writer.print("success");
ServletOutputStream stream = resp.getOutputStream();
stream.write("Success".getBytes());
}
}html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/SecondServlet/regist" method="post">
user name :<input type="text" name="username"/>
password :<input type="text" name="password"/>
<input type="submit" value=" register ">
</form>
</body>
</html>②: Response to the garbled problem
response.setCharacterEncoding("UTF-8");
response.setHeader("content-type", "text/html;charset=UTF-8");边栏推荐
- 解决安装Failed building wheel for pillow
- Leetcode 461 Hamming distance
- Project practice - background employee information management (add, delete, modify, check, login and exit)
- Ubuntu 20.04 安装 MySQL
- 学习问题1:127.0.0.1拒绝了我们的访问
- Swagger, Yapi interface management service_ SE
- 报错解决 —— io.UnsupportedOperation: can‘t do nonzero end-relative seeks
- 图片上色项目 —— Deoldify
- Kubernetes - problems and Solutions
- Some notes of MySQL
猜你喜欢

Data dictionary in C #

QT creator design user interface

AI benchmark V5 ranking

Asp access Shaoxing tourism graduation design website

Did you forget to register or load this tag 报错解决方法

CSDN question and answer module Title Recommendation task (I) -- Construction of basic framework

PyCharm中无法调用numpy,报错ModuleNotFoundError: No module named ‘numpy‘

连接MySQL数据库出现错误:2059 - authentication plugin ‘caching_sha2_password‘的解决方法

Navicat 导出表生成PDM文件

MySQL主從複制、讀寫分離
随机推荐
Database advanced learning notes -- SQL statement
01 project demand analysis (ordering system)
++Implementation of I and i++
Generate PDM file from Navicat export table
[ahoi2009]chess Chinese chess - combination number optimization shape pressure DP
Image recognition - pyteseract TesseractNotFoundError: tesseract is not installed or it‘s not in your path
[recommended by bloggers] asp Net WebService background data API JSON (with source code)
CSDN Q & a tag skill tree (V) -- cloud native skill tree
A trip to Macao - > see the world from a non line city to Macao
Attention apply personal understanding to images
Remember the interview algorithm of a company: find the number of times a number appears in an ordered array
机器学习--人口普查数据分析
FRP intranet penetration
学习问题1:127.0.0.1拒绝了我们的访问
Kubesphere - deploy the actual combat with the deployment file (3)
Solution: log4j:warn please initialize the log4j system properly
A brief introduction to the microservice technology stack, the introduction and use of Eureka and ribbon
解决:log4j:WARN Please initialize the log4j system properly.
解决扫描不到xml、yml、properties文件配置
Did you forget to register or load this tag 报错解决方法