2022年Servlect课时十五——Servlect 56天的学习总结。(二)

简介: 2022年Servlect课时十五——Servlect 56天的学习总结。

对象@4HttpServletRequest对象。

HttpServlet调用HttpResponse的有关方法,生成响应数据,用于服务器上接收浏览器发送过来的数据信息

HttpResponse一些用法

/获得浏览器的请求,得到请求信息
  //得到请求的URL地址
  String a=request.getRequestURL().toString();
  System.out.println(a);
  //得到请求的数据
  String b=request.getRequestURI();
  System.out.println(b);
  //得到请求的URL地址中附带的参数
  String c=request.getQueryString();
  System.out.println(c);
  //得到来访者的IP地址
  String d=request.getRemoteAddr();
  System.out.println(d);
  //来访者的主机名
  String e=request.getRemoteHost();
  System.out.println(e);
  //来访者的端口号
  int f=request.getRemotePort();
  System.out.println(f);
  //得到请求URL地址时使用的方法(重要)
  String h=request.getMethod();
  System.out.println(h);
  //获取WEB服务器的IP地址
  String l=request.getLocalAddr();
  System.out.println(l);
  //获取WEB服务器的主机名
  String n=request.getLocalName();
  System.out.println(n);
  //获取WEB服务器的端口号
  int m=request.getLocalPort();
  System.out.println(m);
  }

作用二

//获得浏览器发送过来的姓名和年龄的数据
    String a=request.getParameter("name");
    String b=request.getParameter("age");
    String c=request.getParameter("phone");
    String d=request.getParameter("QQ");
    String e=request.getParameter("wexing");
    System.out.println("获得浏览器发送给Servlet的数据为:"+a+"--"+b+"--"+c);
    //当浏览器发送的数据是同一个名称多个不同的数据
    //servlet需要使用以下这个方法去接收这种数据
    String[] ss=request.getParameterValues("hobby");
    System.out.println(Arrays.toString(ss));
    //tomcat服务器的编码格式是:ISO-8859-1
    //注意:servlet获得浏览器表单发送的数据时,
    //获得的名称一定要和表单上文本框定义的name属性中的名称保持一致
    //当浏览器发送大量数据给servlet的时候
    //如果使用getParameter一个个获得,效率太慢
    //使用以下方法可以节省代码,加快开发速度
    Enumeration<String> e1= request.getParameterNames();
    while (e1.hasMoreElements()) {
      //循环获得的是浏览器发给servlet的数据的名称
      String name=e1.nextElement();
      if (name.equals("hobby")) {
      String[] str=request.getParameterValues(name);
      System.out.println(name+":"+Arrays.toString(str));
      }else {
      String value=request.getParameter(name);
      System.out.println(name+":"+value);
      }
    }
    //使用Map集合获得浏览器发送的所有数据
    Map<String,String[]> map=request.getParameterMap();
    for (Entry<String, String[]> entry : map.entrySet()) {
      String name=entry.getKey();
      String[] values=entry.getValue();
      System.out.println(name+"%"+Arrays.toString(values));
    }
    System.out.println("运行完成");
    System.out.println("http://localhost:8080/Day06-2/Servlet2?name=hubinjkf&age=23&phone=16745637856&qq=2675648967&wexing=16745679076&hobby=%E7%9C%8B%E4%B9%A6&hobby=%E7%9C%8B%E5%B0%8F%E5%AD%A6%E5%A6%B9&hobby=%E5%AD%A6%E4%B9%A0mysql");
    }
作用三 请求转发

request.getRequestDispatcher("Servlet4") .forward(request, response);

请求转发和重定向区别:

重定向跳转浏览器地址会发生变化,

请求转发浏览器地址不会发生变化

重定向是两次请求,请求转发是一次请求

重定向属于浏览器跳转,请求转发属于服务器内部跳转

重定向跳转页面是不能发送数据,

请求转发是可以携带数据的

1.请求转发是在服务器完成的,重定向是在浏览器完成的

2.请求转发的速度快,重定向速度慢

3.请求转发的是同一次请求,重定向是二次不同的请求

4.请求转发地址栏没有变化,重定向地址栏有变化

5.转发必须是在同一台服务器下完成,重定向可以在不同的服务器下完成的

对象@5 Cookie对象。对象@6 session对象。

回话管理 会话>>同一个浏览器与服务器之间在一段时间多次请求称一次会话, 浏览器关闭,会话结束。 Cookie>> :的概念 Cookie的本意 Cookie是客户端技术,程序把每个用 户数据以Cookie的形式写给用户各自浏览器 Cookie


Session, 类名HttpSession

Cookie的概念

Cookie的本意是“小甜饼”,我们俗称“曲奇饼”

Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。

当用户使用浏览器再去访问服务器的时候,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据。

1.一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(name)和值(value)。

2.一个web网站可以给一个web浏览器发送多个cookie,一个浏览器也可以存储多个cookie。

3.浏览器一般只允许存放300个cookie,每个网站最多存放20个cookie,每个cookie的大小限制为4kb。

4.如果创建了一个cookie,并将他发送到了浏览器,默认情况下他是一个会话级别的cookie(即存储在浏览器的内存中),用户退出浏览器之后即被删除。

Session的概念

HttpSession对象 服务器为每个会话创建一个HttpSession对象 每个会话对象都有一个唯一的ID 把 用户的数据保存在相应的HttpSession对象内

Cookie对象

package com.Servlect;
/**
 * A202020895
 * 10/29
 * 
 */
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class Servlet1
 */
@WebServlet("/Servlet1")
public class servlect1 extends HttpServlet {
  private static final long serialVersionUID = 1L;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public servlect1() {
        super();
        System.out.println("servlect在运行中使用cookie访问");
        // TODO Auto-generated constructor stub
    }
    @Override
    public void init() throws ServletException {
      // TODO Auto-generated method stub
      super.init();
      System.out.println("servlectinit方法");
    }
  /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  response.setContentType("text/html");
  response.setCharacterEncoding("UTF-8");
  PrintWriter pw=response.getWriter();
  //浏览器通过地址访问服务器的servelt
  //servlet要获得该浏览器所携带的所有cookie对象
  Cookie[] cookies=request.getCookies();
  if (cookies!=null) {
    //循环遍历每一个cookie,直到找到servlet能识别的cookie值为止
    //tag,china
    for (int i = 0; i < cookies.length; i++) {
    //通过cookie中存储的数据的名称
    String name=cookies[i].getName();
    if ("AAA".equals(name)) {
      //这个cookie是服务器要找的东西,从cookie中获得中文数据需要进行解码
      String value=URLDecoder.decode(cookies[i].getValue(), "UTF-8");
      System.out.println(value);
      pw.print(value);
      break;  
    }
    }
  }else {
    //没有cookie,说明当前浏览器以前没有访问过服务器
    //创建cookie对象,存储中文数据的时候,需要对数据进行转码
    Cookie cookie=new Cookie("AAA", URLEncoder.encode("bbbbbbbb", "UTF-8"));
    //设置浏览器退出后,cookie还能继续存在内存中的时间
    cookie.setMaxAge(30);
    response.addCookie(cookie);
    pw.print("服务器给浏览器创建了一个cookie对象");
  }
  }
  /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request, response);
  }
}

Session对象

package com.Servlect;
/**
 * A202020895
 * 10/29
 * 
 */
import java.io.IOException;
import java.io.PrintWriter;
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 javax.servlet.http.HttpSession;
/**
 * Servlet implementation class Servlet2
 * session
 */
@WebServlet("/Servlet2")
public class Servlet2 extends HttpServlet {
  private static final long serialVersionUID = 1L;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Servlet2() {
        super();
        // TODO Auto-generated constructor stub
        System.out.println("session servlect2在运行中");
    }
  /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  response.setContentType("text/html");
  response.setCharacterEncoding("UTF-8");
  PrintWriter pw=response.getWriter();
  //档浏览器访问服务器的servlet的时候,需要检查该浏览器的session对象是否是刚刚创建的
  HttpSession session=request.getSession();
  //session.isNew()判断session到值是否为空
  if (session.isNew()) {
    //session是刚刚创建的
    //浏览器是第一次访问服务器
    pw.print("浏览器是第一次访问服务器");
    //设置三个动态数据
    session.setAttribute("text1", "一等奖学金");
    session.setAttribute("name", "hug");
    session.setAttribute("pw", "12345");
    //删除指定的数据
    //session.removeAttribute("text1");
    //当session中存放大量数据的时候,如果需要全部销毁,直接干掉session对象
    //session.invalidate();
  }else {
    String info=(String) session.getAttribute("text1");
    String info1=(String) session.getAttribute("name");
    String info2=(String) session.getAttribute("pw");
    System.out.println("浏览器不是第一次访问服务器的文件内容");
    System.out.println("浏览器不是第一次访问服务器的名字");
    System.out.println("浏览器不是第一次访问服务器了的密码");
    System.out.println("=====================================================");
    pw.print("<h1>浏览器不是第一次访问服务器的文件内容<hr></h1>"+info);
    pw.print("<h1>浏览器不是第一次访问服务器的名字<hr></h1>"+info1);
    pw.print("<h1>浏览器不是第一次访问服务器了的密码<hr</h1>"+info2);
  }
  }
  /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request, response);
  }
}


相关文章
|
23天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
33639 134
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
6天前
|
人工智能 自然语言处理 监控
OpenClaw skills重构量化交易逻辑:部署+AI全自动炒股指南(2026终极版)
2026年,AI Agent领域最震撼的突破来自OpenClaw(原Clawdbot)——这个能自主规划、执行任务的智能体,用50美元启动资金创造了48小时滚雪球至2980美元的奇迹,收益率高达5860%。其核心逻辑堪称教科书级:每10分钟扫描Polymarket近千个预测市场,借助Claude API深度推理,交叉验证NOAA天气数据、体育伤病报告、加密货币链上情绪等多维度信息,捕捉8%以上的定价偏差,再通过凯利准则将单仓位严格控制在总资金6%以内,实现低风险高频套利。
2730 10
|
19天前
|
人工智能 安全 机器人
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI助手,支持钉钉、飞书等多平台接入。本教程手把手指导Linux下部署与钉钉机器人对接,涵盖环境配置、模型选择(如Qwen)、权限设置及调试,助你快速打造私有、安全、高权限的专属AI助理。(239字)
7239 21
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
|
17天前
|
人工智能 机器人 Linux
OpenClaw(Clawdbot、Moltbot)汉化版部署教程指南(零门槛)
OpenClaw作为2026年GitHub上增长最快的开源项目之一,一周内Stars从7800飙升至12万+,其核心优势在于打破传统聊天机器人的局限,能真正执行读写文件、运行脚本、浏览器自动化等实操任务。但原版全英文界面对中文用户存在上手门槛,汉化版通过覆盖命令行(CLI)与网页控制台(Dashboard)核心模块,解决了语言障碍,同时保持与官方版本的实时同步,确保新功能最快1小时内可用。本文将详细拆解汉化版OpenClaw的搭建流程,涵盖本地安装、Docker部署、服务器远程访问等场景,同时提供环境适配、问题排查与国内应用集成方案,助力中文用户高效搭建专属AI助手。
5107 12
|
20天前
|
人工智能 机器人 Linux
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI智能体,支持飞书等多平台对接。本教程手把手教你Linux下部署,实现数据私有、系统控制、网页浏览与代码编写,全程保姆级操作,240字内搞定专属AI助手搭建!
5885 23
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手

热门文章

最新文章