当前位置:网站首页>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");边栏推荐
- NPM an error NPM err code enoent NPM err syscall open
- Basic use of redis
- Have you mastered the correct posture of golden three silver four job hopping?
- windows无法启动MYSQL服务(位于本地计算机)错误1067进程意外终止
- windows下同时安装mysql5.5和mysql8.0
- FRP intranet penetration
- [BMZCTF-pwn] 11-pwn111111
- Django running error: error loading mysqldb module solution
- [recommended by bloggers] asp Net WebService background data API JSON (with source code)
- JDBC原理
猜你喜欢
![[free setup] asp Net online course selection system design and Implementation (source code +lunwen)](/img/ac/b518796a92d00615cd374c0c835f38.jpg)
[free setup] asp Net online course selection system design and Implementation (source code +lunwen)

C language advanced pointer Full Version (array pointer, pointer array discrimination, function pointer)

打开浏览器的同时会在主页外同时打开芒果TV,抖音等网站

Navicat 導出錶生成PDM文件

CSDN问答标签技能树(一) —— 基本框架的构建

A brief introduction to the microservice technology stack, the introduction and use of Eureka and ribbon

QT creator design user interface

Install mongdb tutorial and redis tutorial under Windows

安装numpy问题总结

【博主推荐】C# Winform定时发送邮箱(附源码)
随机推荐
[recommended by bloggers] C MVC list realizes the function of adding, deleting, modifying, checking, importing and exporting curves (with source code)
QT creator shape
PyCharm中无法调用numpy,报错ModuleNotFoundError: No module named ‘numpy‘
Classes in C #
LeetCode #461 汉明距离
[C language foundation] 04 judgment and circulation
Knowledge Q & A based on Apache Jena
Invalid global search in idea/pychar, etc. (win10)
Introduction to the easy copy module
One click extraction of tables in PDF
Tcp/ip protocol (UDP)
MySQL completely uninstalled (windows, MAC, Linux)
Are you monitored by the company for sending resumes and logging in to job search websites? Deeply convinced that the product of "behavior awareness system ba" has not been retrieved on the official w
Esp8266 at+cipstart= "", "", 8080 error closed ultimate solution
CSDN question and answer module Title Recommendation task (I) -- Construction of basic framework
JDBC原理
Data dictionary in C #
Kubernetes - problems and Solutions
Navicat 導出錶生成PDM文件
AcWing 1294.樱花 题解