当前位置:网站首页>2021.8.9笔记 request
2021.8.9笔记 request
2022-07-27 16:10:00 【是吃货不是贝爷】
原理


继承体系

获取请求行数据_方法
其中比较重要的为2.获取虚拟目录和5.获取请求URI
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String method = request.getMethod();
System.out.println(method);
String contextPath = request.getContextPath();
System.out.println(contextPath);
String servletPath = request.getServletPath();
System.out.println(servletPath);
String queryString = request.getQueryString();
System.out.println(queryString);
String requestURI = request.getRequestURI();
StringBuffer requestURL = request.getRequestURL();
System.out.println(requestURI);
System.out.println(requestURL);
String remoteAddr = request.getRemoteAddr();
System.out.println(remoteAddr);
String protocol = request.getProtocol();
System.out.println(protocol);
}
获取请求头数据
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Enumeration<String> headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
String value = request.getHeader(name);
System.out.println(name + "-----" + value);
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String agent = request.getHeader("user-agent");
if(agent.contains("Firefox")) {
System.out.println("火狐来了...");
}else if(agent.contains("Chrome")) {
System.out.println("谷歌来了");
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String referer = request.getHeader("referer");
if(referer != null) {
if(referer.contains("/day14")) {
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("播放");
}else {
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("不给");
}
}
}
通过创建两个tomcat并修改虚拟目录,一个没有/day14,一个有即可验证
获取请求体数据

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/demo4" method="post">
<input name="username">
<input type="submit" value="提交">
</form>
</body>
</html>
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.BufferedReader;
import java.io.IOException;
@WebServlet("/requestDemo5")
public class RequestDemo5 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BufferedReader reader = request.getReader();
String str = null;
while((str = reader.readLine()) != null) {
System.out.println(str);
}
}
}
获取请求参数通用方式

get和post都可以使用
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;
@WebServlet("/requestDemo6")
public class RequestDemo6 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
System.out.println("get");
System.out.println(username);
String[] hobbies = request.getParameterValues("hobby");
for (String hobby : hobbies) {
System.out.println(hobby);
}
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String name = parameterNames.nextElement();
String value = request.getParameter(name);
System.out.println(value);
}
System.out.println("----------");
Map<String, String[]> parameterMap = request.getParameterMap();
Set<String> strings = parameterMap.keySet();
for (String name : strings) {
System.out.println(name);
String[] value = parameterMap.get(name);
for (String va : value) {
System.out.println(va);
}
System.out.println("------------");
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
中文乱码
post在input输入的是中文的时候,输出相应的输入数据的时候会乱码,解决方法就是request.setCharacterEncoding(“utf-8”);
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
System.out.println(username);
}
请求转发

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("demo8被访问了...");
request.getRequestDispatcher("/requestDemo9").forward(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("demo9被访问了...");
}
共享数据(域对象)


@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("msg","hello");
request.getRequestDispatcher("/requestDemo9").forward(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Object name = request.getAttribute("msg");
System.out.println(name);
System.out.println("demo9被访问了...");
}
getServletContext
没讲
边栏推荐
- 浅论分布式训练中的recompute机制
- On recommend mechanism in distributed training
- How do corporate giants such as Schneider Electric and L'Oreal make open innovation? Uncover secrets of demo World Innovation Summit
- 深度学习:安装包记录
- C杂讲 链表初讲
- Salesforce Dynamic Forms
- XML学习 Day1 : xml / Jsoup解析器 / selector选择器 /Xpath选择器
- Announcing the acquisition of 30% shares of Wenye, what is the general intention of Dalian United?
- Deep learning: GCN diagram classification case
- 深度学习:GCN案例
猜你喜欢
![[MIT 6.S081] Lab 9: file system](/img/f5/ea30b1fe5b6d73c86f2509c690ca20.png)
[MIT 6.S081] Lab 9: file system

Deep learning: Gan optimization method dcgan case

What every Salesforce developer should know about Dates and Times in Apex

2. Change color space and color detection

Dynamic linked list 4 one-way circular linked list (loopsingle Implementation)

动态链表2栈的链表存储结构(LinkedStack实现)
![[MIT 6.S081] Lab 10: mmap](/img/5d/a59a6f723518553b9232bc09991075.png)
[MIT 6.S081] Lab 10: mmap

CFA exam registration instructions

同心向前,Google Play 十周年啦!
![[MIT 6.S081] Lec 9: Interrupts 笔记](/img/b6/a8d39aa7ede4eb1c5a74e6d15b3b1c.png)
[MIT 6.S081] Lec 9: Interrupts 笔记
随机推荐
动态链表3队列的链式存储结构(LinkedQueue实现)
Solve the problem that reids cannot be accessed by other IPS
[MIT 6.S081] Lab 6: Copy-on-Write Fork for xv6
英伟达发布全球最小边缘AI超算:算力21TOPS,功耗仅10W!
深度学习:GCN图分类案例
Here comes the first 5g SOC of MediaTek! A77+g77+apu3.0, officially released on November 26!
深度学习:GAN优化方法-DCGAN案例
[learning notes] solutions to hot account problems
Localization within Communities
Common commands of database 1
Redis网红高频面试题三连:缓存穿透?缓存击穿?缓存雪崩?
Deep learning: GCN diagram classification case
Zhanrui fresh seedlings: enable full scene applications, and massive data needs the integration of AI and IOT
携手三星,vivo将推Exynos980双模5G手机!
小米CC9 Pro拆解:后置五摄成本是骁龙855数倍!
动态链表4单向循环链表(LoopSingle实现)
[MIT 6.S081] Lab 9: file system
力压谷歌、英伟达!阿里含光800芯片再获权威测试世界第一
Jianan Yunzhi has completed the pre roadshow and is expected to land on NASDAQ on November 20
[MIT 6.S081] Lab 4: traps