当前位置:网站首页>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");
边栏推荐
- Generate PDM file from Navicat export table
- Error reporting solution - io UnsupportedOperation: can‘t do nonzero end-relative seeks
- 记一次某公司面试题:合并有序数组
- csdn-Markdown编辑器
- CSDN question and answer tag skill tree (II) -- effect optimization
- AcWing 1294.樱花 题解
- The virtual machine Ping is connected to the host, and the host Ping is not connected to the virtual machine
- Redis的基础使用
- 导入 SQL 时出现 Invalid default value for ‘create_time‘ 报错解决方法
- Invalid default value for 'create appears when importing SQL_ Time 'error reporting solution
猜你喜欢
Navicat 导出表生成PDM文件
QT creator specifies dependencies
Idea import / export settings file
Neo4j installation tutorial
Why is MySQL still slow to query when indexing is used?
Deoldify项目问题——OMP:Error#15:Initializing libiomp5md.dll,but found libiomp5md.dll already initialized.
CSDN markdown editor
Learning question 1:127.0.0.1 refused our visit
【博主推荐】SSM框架的后台管理系统(附源码)
MySQL主從複制、讀寫分離
随机推荐
[BMZCTF-pwn] 12-csaw-ctf-2016-quals hungman
[free setup] asp Net online course selection system design and Implementation (source code +lunwen)
Swagger、Yapi接口管理服务_SE
Test objects involved in safety test
[BMZCTF-pwn] 11-pwn111111
[download app for free]ineukernel OCR image data recognition and acquisition principle and product application
@controller,@service,@repository,@component区别
打开浏览器的同时会在主页外同时打开芒果TV,抖音等网站
++Implementation of I and i++
02 staff information management after the actual project
基于apache-jena的知识问答
Other new features of mysql18-mysql8
AcWing 1294.樱花 题解
Postman Interface Association
Machine learning -- census data analysis
CSDN question and answer tag skill tree (II) -- effect optimization
Error reporting solution - io UnsupportedOperation: can‘t do nonzero end-relative seeks
[C language foundation] 04 judgment and circulation
windows无法启动MYSQL服务(位于本地计算机)错误1067进程意外终止
MySQL other hosts cannot connect to the local database