当前位置:网站首页>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");
边栏推荐
- windows无法启动MYSQL服务(位于本地计算机)错误1067进程意外终止
- Ansible实战系列一 _ 入门
- MySQL other hosts cannot connect to the local database
- [C language foundation] 04 judgment and circulation
- There are three iPhone se 2022 models in the Eurasian Economic Commission database
- Django running error: error loading mysqldb module solution
- 安全测试涉及的测试对象
- 软件测试与质量学习笔记3--白盒测试
- Ansible practical Series II_ Getting started with Playbook
- Use dapr to shorten software development cycle and improve production efficiency
猜你喜欢
CSDN Q & a tag skill tree (V) -- cloud native skill tree
Invalid global search in idea/pychar, etc. (win10)
[recommended by bloggers] asp Net WebService background data API JSON (with source code)
QT creator shape
一键提取pdf中的表格
Error connecting to MySQL database: 2059 - authentication plugin 'caching_ sha2_ The solution of 'password'
Dotnet replaces asp Net core's underlying communication is the IPC Library of named pipes
[download app for free]ineukernel OCR image data recognition and acquisition principle and product application
Knowledge Q & A based on Apache Jena
【博主推荐】SSM框架的后台管理系统(附源码)
随机推荐
[BMZCTF-pwn] 12-csaw-ctf-2016-quals hungman
01项目需求分析 (点餐系统)
JDBC原理
Solution: log4j:warn please initialize the log4j system properly
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
QT creator shape
QT creator design user interface
Esp8266 at+cipstart= "", "", 8080 error closed ultimate solution
Leetcode 461 Hamming distance
Idea import / export settings file
Armv8-a programming guide MMU (2)
Introduction and use of automatic machine learning framework (flaml, H2O)
Why can't I use the @test annotation after introducing JUnit
Summary of numpy installation problems
[number theory] divisor
Machine learning -- census data analysis
学习问题1:127.0.0.1拒绝了我们的访问
Remember a company interview question: merge ordered arrays
CSDN Q & a tag skill tree (V) -- cloud native skill tree
【博主推荐】C# Winform定时发送邮箱(附源码)