1.HttpServletRequest 类

a)HttpServletRequest 类有什么作用。

每次只要有请求进入 Tomcat 服务器,Tomcat 服务器就会把请求过来的 HTTP 协议信息解析好封装到 Request 对象中。 然后传递到 service 方法(doGet 和 doPost)中给我们使用。我们可以通过 HttpServletRequest 对象,获取到所有请求的 信息。

b)HttpServletRequest 类的常用方法

序号

方法名

作用

1

getRequstURI()

获取请求的资源路径

2

getRequestURL()

获取请求的统一资源定位符(绝对路径)

3

getRemoteHost()

获取客户端的IP地址

4

getHeader()

获取请求头

5

getParameter()

获取请求参数

6

getParameterValues()

获取请求参数(多个值的时候使用)

7

getMethod()

获取请求方式get或post

8

setAttribute(key,value)

获取域数据

9

getAttribute(key)

获取域数据

10

getRequestDispacher()

获取请求转发对象

常用 API 示例代码:

public class RequestAPIServlet extends HttpServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,

IOException{

// i.getRequestURI() 获取请求的资源路径

System.out.println("URI => " + req.getRequestURI());

// ii.getRequestURL() 获取请求的统一资源定位符(绝对路径)

System.out.println("URL => " + req.getRequestURL());

// iii.getRemoteHost() 获取客户端的 ip 地址

/**

* 在 IDEA 中,使用 localhost 访问时,得到的客户端 ip 地址是 ===>>> 127.0.0.1

* 在 IDEA 中,使用 127.0.0.1 访问时,得到的客户端 ip 地址是 ===>>> 127.0.0.1

* 在 IDEA 中,使用 真实 ip 访问时,得到的客户端 ip 地址是 ===>>> 真实的客户端 ip 地址

*/

System.out.println("客户端 ip 地址 => " + req.getRemoteHost());

// iv.getHeader() 获取请求头

System.out.println("请求头 User-Agent ==>> " + req.getHeader("User-Agent"));

// vii.getMethod() 获取请求的方式 GET 或 POST

System.out.println( "请求的方式 ==>> " + req.getMethod() );

}

}

c)如何获取请求参数

表单:

用户名:

密码:

兴趣爱好:C++

Java

JavaScript

Java 代码:

public class ParameterServlet extends HttpServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,

IOException{

// 获取请求参数

String username = req.getParameter("username");

String password = req.getParameter("password");

String[] hobby = req.getParameterValues("hobby");

System.out.println("用户名:" + username);

System.out.println("密码:" + password);

System.out.println("兴趣爱好:" + Arrays.asList(hobby));

}

}

doGet 请求的中文乱码解决:

// 获取请求参数

String username = req.getParameter("username");

//1 先以 iso8859-1 进行编码

//2 再以 utf-8 进行解码

username = new String(username.getBytes("iso-8859-1"), "UTF-8");

d)POST 请求的中文乱码解决

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,

IOException{

// 设置请求体的字符集为 UTF-8,从而解决 post 请求的中文乱码问题

req.setCharacterEncoding("UTF-8");

System.out.println("-------------doPost------------");

// 获取请求参数

String username = req.getParameter("username");

String password = req.getParameter("password");

String[] hobby = req.getParameterValues("hobby");

System.out.println("用户名:" + username);

System.out.println("密码:" + password);

System.out.println("兴趣爱好:" + Arrays.asList(hobby));

}

e)请求的转发

什么是请求的转发?

请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作叫请求转发。

Servlet1 代码:

public class Servlet1 extends HttpServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,

IOException{

// 获取请求的参数(办事的材料)查看

String username = req.getParameter("username");

System.out.println("在 Servlet1(柜台 1)中查看参数(材料):" + username);

// 给材料 盖一个章,并传递到 Servlet2(柜台 2)去查看

req.setAttribute("key1","柜台 1 的章");

// 问路:Servlet2(柜台 2)怎么走

/**

* 请求转发必须要以斜杠打头,/ 斜杠表示地址为:http://ip:port/工程名/ , 映射到 IDEA 代码的 web 目录

*

*/

RequestDispatcher requestDispatcher = req.getRequestDispatcher("/servlet2");

// RequestDispatcher requestDispatcher = req.getRequestDispatcher("http://www.baidu.com");

// 走向 Sevlet2(柜台 2)

requestDispatcher.forward(req,resp);

}

}

Servlet2 代码:

public class Servlet2 extends HttpServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,

IOException{

// 获取请求的参数(办事的材料)查看

String username = req.getParameter("username");

System.out.println("在 Servlet2(柜台 2)中查看参数(材料):" + username);

// 查看 柜台 1 是否有盖章

Object key1 = req.getAttribute("key1");

System.out.println("柜台 1 是否有章:" + key1);

// 处理自己的业务

System.out.println("Servlet2 处理自己的业务 ");

}

}

f) base 标签的作用

Title

这是 a 下的 b 下的 c.html 页面

跳回首页

g)Web 中的相对路径和绝对路径

在 javaWeb 中,路径分为相对路径和绝对路径两种:

相对路径是:

[.]表示当前路径,[..]表示上一级目录,[资源名]表示当前路径/资源名

绝对路径:

http://ip:port/工程路径/资源路径

实际开发中,路径使用绝对路径,而不简单的使用相对路径。

1、绝对路径。2、base+相对路径。

h)web 中 / 斜杠的不同意义

在 web 中 / 斜杠 是一种绝对路径。

/ 斜杠 如果被浏览器解析,得到的地址是:http://ip:port/

例如:斜杠

/ 斜杠 如果被服务器解析,得到的地址是:http://ip:port/工程路径

/servlet1

servletContext.getRealPath(“/”);

request.getRequestDispatcher(“/”);

特殊情况: response.sendRediect(“/”); 把斜杠发送给浏览器解析。得到 http://ip:port/

2.HttpServletResponse 类

a)HttpServletResponse 类的作用

HttpServletResponse 类和 HttpServletRequest 类一样。每次请求进来,Tomcat 服务器都会创建一个 Response 对象传 递给 Servlet 程序去使用。HttpServletRequest 表示请求过来的信息,HttpServletResponse 表示所有响应的信息, 我们如果需要设置返回给客户端的信息,都可以通过 HttpServletResponse 对象来进行设置.

b)两个输出流的说明。

字节流:getOutputStream();  常用于下载(传递二进制数据)

字符流:getWriter();   常用于回传字符串(常用)

两个流同时只能使用一个。是用了字节流,就不能在使用字符流。反之亦然,否则就会报错。

c)如何往客户端回传数据

要求 : 往客户端回传 字符串 数据。

public class ResponseIOServlet extends HttpServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,

IOException{

// 要求 : 往客户端回传 字符串 数据。

PrintWriter writer = resp.getWriter();

writer.write("response's content!!!");

}

}

d)响应的乱码解决

解决响应中文乱码方案一(不推荐使用):

// 设置服务器字符集为 UTF-8

resp.setCharacterEncoding("UTF-8");

// 通过响应头,设置浏览器也使用 UTF-8 字符集

resp.setHeader("Content-Type", "text/html; charset=UTF-8");

解决响应中文乱码方案二(推荐):

// 它会同时设置服务器和客户端都使用 UTF-8 字符集,还设置了响应头

// 此方法一定要在获取流对象之前调用才有效

resp.setContentType("text/html; charset=UTF-8");

e)请求重定向

请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端说。我给你一些地址。你去新地址访问。叫请求 重定向(因为之前的地址可能已经被废弃)。

请求重定向的第一种方案:

// 设置响应状态码 302 ,表示重定向,(已搬迁)

resp.setStatus(302);

// 设置响应头,说明 新的地址在哪里

resp.setHeader("Location", "http://localhost:8080");

请求重定向的第二种方案(推荐使用):

resp.sendRedirect("http://localhost:8080");

文章来源: blog.csdn.net,作者:轻狂书生FS,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/LookForDream_/article/details/105504284

高级java技术web组件_(重温)JavaWeb--Servlet技术(二)(JavaWeb 的三大组件之一)...相关推荐

  1. 证券行业信息化17_我的香港游记3_交易系统技术支持部_会计与结算技术支持部都干些什么?

    转自 https://stanleyyan.wordpress.com/category/%E8%AF%81%E5%88%B8%E4%BF%A1%E6%81%AF%E5%8C%96/ 总结:IT支持部 ...

  2. java ee web高级,Java EE Web高级开发案例

    核心提示:Java EE Web高级开发案例 内容简介:<Java EE Web高级开发案例>充分体现了高等职业教育的特点,突出了理论和实践的紧密结合,以充分掌握基本技术技能和必要的基本知 ...

  3. Java Web学习笔记 3 深入Servlet技术

    第3章 深入Servlet技术 请求-响应模式就是典型的Web应用程序访问过程,Java Web应用程序中,处理请求并发送响应的过程是由一种叫做Servlet的程序来完成的. 请求request,响应 ...

  4. java osgi web开发_基于 OSGi 和 Spring 开发 Web 应用

    开发一个简单的OSGi Web应用实例 一个简单的Web应用 我们写一个简单的 Web 应用 compute.html :计算两个数字的和或乘积.如下图所示: 图1.一个简单例子 一个简单例子.bmp ...

  5. 关于大数据技术的演讲_百度大数据技术开放平台再度亮相

    众所周知,百度凭借在大数据领域多年的深厚技术积累,一直冲在产业智能化的最前线.在去年的百度AI开发者大会上,百度大数据发布了全新的大数据产品技术栈,覆盖了数据工程.数据科学.数据产品和行业解决方案,并 ...

  6. 技术体系构建_构建出色的技术简历的简单指南

    技术体系构建 Whether you're an aspiring software engineer or a seasoned developer, there are times when yo ...

  7. 【小家Spring】SpringBoot中使用Servlet、Filter、Listener三大组件的三种方式以及原理剖析

    每篇一句 要么就安逸的穷,要么就拼命的干 前提概要 web开发使用Controller基本能解决大部分的需求,但是有时候我们也需要使用Servlet,因为相对于拦截和监听来说,有时候原生的还是比较好用 ...

  8. java web论文_(定稿)毕业论文基于JavaWeb技术博客项目的设计论文(完整版)最新版...

    <[毕业论文]基于Java Web技术博客项目的设计论文.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)毕业论文基于Java Web技术博客项目的设计论文(完整版)> ...

  9. java 与 乱码问题_透彻分析和解决一切javaWeb项目乱码问题

    前言 乱码是我们在程序开发中经常碰到且让人头疼的一件事,尤其是我们在做javaweb开发,如果我们没有清楚乱码产生的原理,碰到乱码问题了就容易摸不着头脑,无从下手. 乱码主要出现在两部分,如下: 第一 ...

  10. java webpack web项目_零基础如何学习web前端,入门教程分享

    前端作为互联网时代直接触达用户的窗口,大到我们每天浏览到的网站,小到一次点击按钮的页面,前端无处不在.并且在产品的众多开发环节之中,最能让用户直观感受到的就是前端开发.因而前端行业的广阔发展前景也吸引 ...

最新文章

  1. 零基础参加java培训哪家机构好
  2. Codeforces 1300E. Water Balance[单调栈]
  3. 网工学Python——初识面向对象
  4. [Linux] nginx的try_files指令实现隐藏index.php的重写
  5. 1022 D进制的A+B (20 分)(c语言)
  6. java textfield赋值_Java中怎么把运行结果显示到textfield中
  7. mac上sublime配置php环境,Mac下sublime text3如何配置php编译环境?
  8. apache反向代理实战
  9. IPV6 DNS服务器地址列表
  10. NTC热敏电阻-阻值温度计算
  11. linux系统显示无法挂载,linux中的mount系统调用无法通过df命令显示文件系统的挂载点...
  12. 【MySQL5.7指南】第一章——概述
  13. SmartScore 64 Professional Edition v11.3.76 WiN 专业乐谱扫描识别软件
  14. Centos7安装HighGo DB V6企业版
  15. LinuxC中“库函数”的使用和常用的“输出函数”。
  16. mycat启动报错:but failed to start(个例)
  17. var,let和const
  18. html邮件怎么发送邮件,HTML邮件怎么发送邮件
  19. C++输入流ifstream指针重置问题
  20. 5.2 前端开发日报

热门文章

  1. springmvc resources 配置
  2. 喜欢的一些话(不断更新)
  3. PowerDesiGner数据库设计
  4. 【剑指offer】面试题15:二进制中1的个数(Java)
  5. 怎么设置班级文件服务器,如何开设论坛如题下学期老师组织学生开一个班级论坛有专用服务器接下 爱问知识人...
  6. 欧氏空间内积定义_MP5:内积、外积、面积、Hermite内积、辛内积
  7. hive读取hdfs存放文件_数据获取层之Flume快速入门(一) 实时监控单个追加文件
  8. python列表应用案例-python列表使用实例
  9. C++获取指向二维数组的首元素指针
  10. np.random.choice用法