JSP内置对象——Request

一、原理
在这里插入图片描述 1. request和response对象是由服务器创建的。我们来使用它们 (我们不创建,仅仅使用,做IDEA的搬运工)
2. request对象是来获取请求消息,response对象是来设置响应消息
2. request对象继承体系结构:
ServletRequest – 接口
继承 |
HttpServletRequest – 接口
实现 |
rg.apache.catalina.connector.RequestFacade 类(tomcat)

二、方法及功能

方法名作用
isUserInRole判断认证后的用户是否属于某一成员组
getAttribute获取指定属性的值,如该属性值不存在返回Null
getAttributeNames获取所有属性名的集合
getCookies获取所有Cookie对象
getCharacterEncoding获取请求的字符编码方式
getContentLength返回请求正文的长度,如不确定返回-1
getHeader获取指定名字报头值
getHeaders获取指定名字报头的所有值,一个枚举
getHeaderNames获取所有报头的名字,一个枚举
getInputStream返回请求输入流,获取请求中的数据
getMethod获取客户端向服务器端传送数据的方法
getParameter获取指定名字参数值
getParameterNames获取所有参数的名字,一个枚举
getParameterValues获取指定名字参数的所有值
getProtocol获取客户端向服务器端传送数据的协议名称
getQueryString获取以get方法向服务器传送的查询字符串
getRequestURI获取发出请求字符串的客户端地址
getRemoteAddr获取客户端的IP地址
getRemoteHost获取客户端的名字
getSession获取和请求相关的会话
getServerName获取服务器的名字
getServerPath获取客户端请求文件的路径
getServerPort获取服务器的端口号
removeAttribute删除请求中的一个属性
setAttribute设置指定名字参数值

1.获取请求行数据

  • GET /Http_Demo_war_exploded/demo1?name=zhangsan HTTP/1.1
  • 方法:
    ①. 获取请求方式 :GET
    * String getMethod()
    ② 获取虚拟目录:/Http_Demo_war_exploded
    * String getContextPath()
    ③. 获取Servlet路径: /demo1
    * String getServletPath()
    ④. 获取get方式请求参数:name=zhangsan
    * String getQueryString()
    ⑤ (*)获取请求URI:/day14/demo1
    * String getRequestURI(): /Http_Demo_war_exploded/demo1
    * StringBuffer getRequestURL() :http://localhost/day14/demo1
    * URL:统一资源定位符 : http://localhost/day14/demo1 中华人民共和国
    * URI:统一资源标识符 : /day14/demo1 共和国
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   System.out.println("doGet........");


   String method = req.getMethod();   //获取请求方式 :GET
   System.out.println(method);


   String contextPath = req.getContextPath();    //(*)获取虚拟目录:/Http_Demo:war exploded
   System.out.println(contextPath);


   String servletPath = req.getServletPath();    //获取Servlet路径: /demo1
   System.out.println(servletPath);


   String queryString = req.getQueryString();    //获取get方式请求参数:name=zhangsan
   System.out.println(queryString);


   String requestURI = req.getRequestURI();      //(*)获取请求URI:/Http_Demo_war_exploded/demo1
   System.out.println(requestURI);


   StringBuffer requestURL = req.getRequestURL(); //(*)获取请求URI:http://localhost/Http_Demo_war_exploded/demo1
   System.out.println(requestURL);


   String protocol = req.getProtocol();         //获取协议及版本:HTTP/1.1
   System.out.println(protocol);


   String remoteAddr = req.getRemoteAddr();      //获取客户机的IP地址:0:0:0:0:0:0:0:1
   System.out.println(remoteAddr);
}

2.获取请求头数据

  • 方法:
    * String getHeader(String name):通过请求头的名称获取请求头的值
    * Enumeration getHeaderNames():获取所有的请求头名称
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   System.out.println("doGet........");
   Enumeration<String> headerNames = req.getHeaderNames();    //获取所有的请求头名称
   while(headerNames.hasMoreElements()){
      String name = headerNames.nextElement();
      String value = req.getHeader(name);
      System.out.println(name+"---"+value);
   }
}

运行结果:
在这里插入图片描述获取浏览器型号:

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   System.out.println("doGet........");
   String agent = req.getHeader("user-agent");
   if(agent.contains("Firefox")){
      System.out.println("火狐来了");
   }else if(agent.contains("Chrome")){
      System.out.println("谷歌来了");
   }
}

假设我做了一个电影网站,我花了300W打广告,某度,某浪,和某狐各100W,但是我想知道哪里来的访问量最多,这个时候我们就可以通过referer来统计各个网站来的访客数量。
而作为优酷,我为了防止被盗取资源,所以要判断你是从哪个网站来的?如果不是从优酷首页进来的,我就不给你播放。
在这里插入图片描述
防盗链方法:防止其他网站盗取资源

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   System.out.println("doGet........");
   String referer = req.getHeader("referer");
   if(referer.contains("/demo4")){
      System.out.println("正常播放");
   }else{
      System.out.println("想看吗?来优酷啊");
   }
}

3.获取请求体数据

  • 请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
  • 步骤:
    ①. 获取流对象
    * BufferedReader getReader():获取字符输入流,只能操作字符数据(高效)
    * ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据
    * 在文件上传知识点后讲解
    ②. 再从流对象中拿数据
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   System.out.println("doPost.......");
   BufferedReader reader = req.getReader();   //1.获取字符流
   String line = null;
   while((line = reader.readLine()) != null){    //2.读取数据
      System.out.println(line);
   }
}

4.其他功能
①. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数

  • String getParameter(String name):根据参数名称获取参数值 username=zs&- password=123
  • String[] getParameterValues(String name):根据参数名称获取参数值的数组 hobby=xx&hobby=game
  • Enumeration getParameterNames():获取所有请求的参数名称
  • Map<String,String[]> getParameterMap():获取所有参数的map集合

②请求转发:一种在服务器内部的资源跳转方式
浏览器访问AServlet,A发现没有浏览器找的资源,但是知道B那里有,所以转发给B
在这里插入图片描述步骤:

  • 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
  • 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)

特点:

  • 浏览器地址栏路径不发生变化
  • 只能转发到当前服务器内部资源中。
  • 转发是一次请求
@WebServlet("/demo8")
public class http_demo8 extends HttpServlet {
   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

      System.out.println("Demo8被访问了");

/*    RequestDispatcher requestDispatcher = req.getRequestDispatcher("/demo9");
      requestDispatcher.forward(req,resp);*/

        //转发
      req.getRequestDispatcher("/demo9").forward(req,resp);

   }
}

③共享数据:A完成后需要告知B已经完成到哪了

  • 域对象:一个有作用范围的对象,可以在范围内共享数据
  • request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
  • 方法:
  • void setAttribute(String name,Object obj):存储数据
  • Object getAttitude(String name):通过键获取值
  • void removeAttribute(String name):通过键移除键值对
@WebServlet("/demo8")
public class http_demo8 extends HttpServlet {
   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


      System.out.println("Demo8被访问了");


      //存储数据到request中
      req.setAttribute("msg","hello");

      req.getRequestDispatcher("/demo9").forward(req,resp);
   }
}
@WebServlet("/demo9")
public class http_demo9 extends HttpServlet {
   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      //设置流的字符编码
      System.out.println("Demo9被访问了");


      //获取demo8的传送数据
      Object msg = req.getAttribute("msg");
      System.out.println(msg);
   }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSP网络编程从基础到实践》光盘说明 光盘的实例代码目录中包含了前10章的所有实例的源代码,实例名称及其所处章节如下: 第1章 JSP技术概述 实例1 第一个JSP页面 第3章 Web开发基础 实例2 HTML与JavaScript交互示例 第4章 JSP语法 实例3 JSP程序的基本结构 实例4 简单数据类型综合应用实例 实例5 包装类综合应用实例 实例6 数组应用实例 实例7 字符截取程序示例 实例8 查找字符串程序示例 实例9 StringBuffer综合应用程序示例 实例10 日期数据应用示例 实例11 算术表达式综合运用实例 实例12 switch语句示例 实例13 循环应用综合实例 实例14 一个简单的计数器 实例15 include指令应用示例 实例16 forward应用程序示例 实例17 param应用程序示例 实例18 plugin应用程序示例 实例19 中文字符处理程序示例 第5章 JSP内置对象 实例20 request常用方法的应用 实例21 获得表单数据 实例22 页面重定向程序示例 实例23 定时刷新页面程序示例 实例24 记住会话的用户名 实例25 猜字母游戏 实例26 网站计数器 实例27 用out对象输出表格 第6章 JSP文件操作 实例28 File类常用方法示例 实例29 列出目录下所有的文件和文件夹 实例30 利用字节流读取文件中的内容 实例31 利用字节流把内容写入文件 实例32 用字符输入流读取文件 实例33 用字符输出流写文件 实例34 随机读取文件程序示例 实例35 故事接龙 实例36 文件上传 实例37 在浏览器中打开文件 实例38 文件下载 实例39 用jspSmartUpload组件实现文件上传 实例40 应用jspSmartUpload组件进行较复杂的表单处理 实例41 用jspSmartUpload组件来实现文件下载 实例42 分页读取文件内容 第7章 在JSP中使用数据库 实例43 顺序查询数据库表中的数据 实例44 移动查询 实例45 参数查询 实例46 模糊查询 实例47 综合查询 实例48 追加记录 实例49 删除记录 实例50 更新记录 实例51 分页显示记录 实例52 调用存储过程 实例53 事务处理 实例54 利用连接池访问数据库 第8章 JSP中JavaBean的应用 实例55 在JSP中应用JavaBean 实例56 用HTML表单设置JavaBean的属性值 实例57 计数器JavaBean 实例58 查询数据库JavaBean 实例59 购物车JavaBean及其应用 实例60 数据库记录分页操作JavaBean 第9章 Servlet技术 实例61 JSP与Servlet程序的对比分析 实例62 一个简单的servlet 实例63 用servlet获取表单数据 实例64 用servlet读写文件数据 实例65 用servlet访问数据库 实例66 一个简单的struts应用实例——用户登录 第10章 JSP中的JavaMail开发 实例67 发送文本格式的邮件 实例68 发送 HTML邮件 实例69 发送带有附件的邮件 实例70 接收EMAIL
JSP网络编程从基础到实践》 实例1 第一个JSP页面Web开发基础 实例2 HTML与JavaScript交互示例JSP语法 实例3 JSP程序的基本结构 实例4 简单数据类型综合应用实例 实例5 包装类综合应用实例 实例6 数组应用实例 实例7 字符截取程序示例 实例8 查找字符串程序示例 实例9 StringBuffer综合应用程序示例 实例10 日期数据应用示例 实例11 算术表达式综合运用实例 实例12 switch语句示例 实例13 循环应用综合实例 实例14 一个简单的计数器 实例15 include指令应用示例 实例16 forward应用程序示例 实例17 param应用程序示例 实例18 plugin应用程序示例 实例19 中文字符处理程序示例JSP内置对象 实例20 request常用方法的应用 实例21 获得表单数据 实例22 页面重定向程序示例 实例23 定时刷新页面程序示例 实例24 记住会话的用户名 实例25 猜字母游戏 实例26 网站计数器 实例27 用out对象输出表格JSP文件操作 实例28 File类常用方法示例 实例29 列出目录下所有的文件和文件夹 实例30 利用字节流读取文件中的内容 实例31 利用字节流把内容写入文件 实例32 用字符输入流读取文件 实例33 用字符输出流写文件 实例34 随机读取文件程序示例 实例35 故事接龙 实例36 文件上传 实例37 在浏览器中打开文件 实例38 文件下载 实例39 用jspSmartUpload组件实现文件上传 实例40 应用jspSmartUpload组件进行较复杂的表单处理 实例41 用jspSmartUpload组件来实现文件下载 实例42 分页读取文件内容在JSP中使用数据库 实例43 顺序查询数据库表中的数据 实例44 移动查询 实例45 参数查询 实例46 模糊查询 实例47 综合查询 实例48 追加记录 实例49 删除记录 实例50 更新记录 实例51 分页显示记录 实例52 调用存储过程 实例53 事务处理 实例54 利用连接池访问数据库JSP中JavaBean的应用 实例55 在JSP中应用JavaBean 实例56 用HTML表单设置JavaBean的属性值 实例57 计数器JavaBean 实例58 查询数据库JavaBean 实例59 购物车JavaBean及其应用 实例60 数据库记录分页操作JavaBeanServlet技术 实例61 JSP与Servlet程序的对比分析 实例62 一个简单的servlet 实例63 用servlet获取表单数据 实例64 用servlet读写文件数据 实例65 用servlet访问数据库 实例66 一个简单的struts应用实例——用户登录JSP中的JavaMail开发 实例67 发送文本格式的邮件 实例68 发送 HTML邮件 实例69 发送带有附件的邮件 实例70 接收EMAIL
摘要】 JAVA语言是目前Internet上大型的WEB应用程序开发时使用得最热门的编程语言,本文描述了JAVA和JSP技术的特点以及在互联网上的使用情况,介绍这两种技术的重要编程方法和两者之关的联系,并完成一个基于这种技术的网上书店系统。 【关键字】JAVA, JavaBeans, Servlet, JSP, 网络编程, 电子商务, 网上书店 Abstract At present JAVA is the hottest programming language for WEB development, This text described the characteristics of JAVA and JSP technology and the state of operating on Internet, It introduced the relationship between them and the important programming method of the double technology, And work out an online bookstore system base on this kind of technology. Keywords: JAVA, JavaBeans, Servlet, JSP, web program, internet, bookshop 目 录 1、JAVA的网络功能与编程 1-1 JAVA语言简介 1-2 JAVA语言在网络上的应用 1-3 JSP的基础——Servlet 技术 1-4 JavaBeans技术 2、JSP技术简介 2-1在Windows平台下配置JSP运行环境 2-2 JSP、ASP和PHP技术之比较 2-3 JSP语法基础 2-3-1嵌入了JAVA语言的HTML文件 2-3-2 request、out & response——与访问者的交互 2-3-3 session——保持访问者的会话状态 2-3-4 JSP其它基本内置对象 2-4 用JSP开发Web应用的几种主要方式 2-4-1 直接使用JSP 2-4-2 JSP + JavaBeans 2-4-3 JSP + JavaBeans + Servlet 2-5 JSP + JavaBeans实现的高级功能 2-5-1 用JSP访问数据库 2-5-2 用JSP + JavaBeans 实现文件上传 2-6 JSP的MVC开发模型 3、网上书店系统设计项目需求分析 3-1 网上书店系统的模型 3-2 网上书店系统数据库的建立 4、网上书店系统的开发 4-1 后台管理 4-1-1 管理员登录 4-1-2 图书类别管理 4-1-3 图书产品管理 4-1-4 注册会员管理 4-1-5 图书订购管理 4-2 网上书店界面 4-2-1 图书搜索 4-2-2 查看图书详细 4-3 网上购物程序 4-3-1 用户注册 4-3-2 购物篮的实现 5、总结

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值