• 2022-08-29 第五组 张明敏 学习笔记


    Vue

    1.键盘事件

    回车=>enter
    删除=>delete (捕获“删除”和“退格”键)
    退出=>esc
    空格=>space
    换行=>tab (必须配合keydown使用)

    2.组件

    • 模块 向外提供特定功能的js程序,一般就是一个js文件;复用js,简化js的编写,提高js运行效率
    • 组件 用来实现局部(特定)功能效果的代码集合(html/css/js/image…) ;复用编码,简化项目编码,提高运行效率

    Vue中使用组件的三大步骤:

    定义组件(创建组件)
    注册组件
    使用组件(写组件标签 )

    如何定义一个组件?

    使用Vue.extend(options)创建,其中options和new Vue(options )时传入的那个options几乎一样,但也有点区别:
    1.e1不要写,最终所有的组件都要经过一个vm的管理,由vm中的e1决定服务哪个容器。
    2. data必须写成函数,避免组件被复用时,数据存在引用关系。
    3. 使用template 可以配置组件结构。
     

    Servlet

    一种生成动态网页的方法,那就是 Java Servlet

    Servlet 是在支持 Java 的 Web 服务器或应用程序服务器上运行的 Java 程序。

    用于处理从网络服务器获得的请求,处理请求,产生响应,然后将响应发送回网络服务器。

    1、Servlet 属性:

    • Servlet 在服务器端工作。

    • Servlet 能够处理从网络服务器获得的复杂请求。

    可以从图像本身描述 Servlet 架构,如下所示:

    2、Servlet有三种创建方式

    1、实现Servlet接口,就要实现里面的方法

    //一次创建,到处服务,一个Servlet只会有一个对象,服务所有的请求
    /*
     * 1.实例化(使用构造方法创建对象)
     * 2.初始化  执行init方法
     * 3.服务     执行service方法
     * 4.销毁    执行destroy方法
     */
    ​

    2、继承 GenericServlet 类 (不常用)

    3、继承 HttpServlet 方法(最常用)

    继承HttpServlet方法,然后重写doGet或者 doGet() 方法处理请求即可。

    它们的关系:

    3、Servlet执行的基本步骤

    执行基本上涉及六个基本步骤:

    1. 客户端将请求发送到 Web 服务器。

    2. Web 服务器接收请求。

    3. Web 服务器将请求传递给相应的 servlet。

    4. servlet 处理请求并以输出的形式生成响应。

    5. servlet 将响应发送回网络服务器。

    6. Web 服务器将响应发送回客户端,客户端浏览器将其显示在屏幕上。

    4、Java Servlet 的优点

    • Servlet比 CGI更快,因为它不涉及为收到的每个新请求创建新进程。

    • 用 Java 编写的 Servlet 与平台无关。

    • 多线程单实例,由于 Servlet 不在单独的进程中运行,因此消除了为每个请求创建新进程的开销。只有一个实例同时处理所有请求。这也节省了内存并允许 Servlet 轻松管理客户端状态。

    • 它是一个服务器端组件,因此 Servlet 继承了 Web 服务器提供的安全性。

    • 为Java Servlet 设计的API自动获得了Java 平台的优势,如平台无关和可移植性。此外,它显然可以使用在 Java 平台(如JDBC )上创建的各种 API来访问数据库。

    Servlet 容器提供的服务:

    • 网络服务:加载一个 Servlet 类。加载可能来自本地文件系统、远程文件系统或其他网络服务。Servlet 容器提供发送请求和响应的网络服务。

    • 基于 MIME 的消息解码和编码:提供基于 MIME 的消息的解码和编码服务。

    • 管理 Servlet 容器:管理 Servlet 的生命周期。

    • 资源管理管理静态和动态资源,例如 HTML 文件、Servlet 和 JSP 页面。

    • 安全服务:处理资源访问的授权和认证。

    • 会话管理:通过将会话**ID**附加到 URL 路径来维护会话。

    5、Servlet 生命周期

    从创建直到毁灭的整个过程

    以下是 Servlet 遵循的过程:

    • Servlet 初始化后调用 init () 方法,只初始化一次。

    • Servlet 调用 service() 方法来处理客户端的请求。

    • Servlet 销毁前调用 destroy() 方法,只会被调用一次。

    • 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

    servlet 实例

    // 导入必需的 java 库
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    ​
    // 扩展 HttpServlet 类
    public class HelloWorld extends HttpServlet {
     
      private String message;
    ​
      public void init() throws ServletException
      {
          // 执行必需的初始化
          message = "Hello World";
      }
    ​
      public void doGet(HttpServletRequest request,
                        HttpServletResponse response)
                throws ServletException, IOException
      {
          // 设置响应内容类型
          response.setContentType("text/html");
    ​
          // 实际的逻辑是在这里
          PrintWriter out = response.getWriter();
          out.println("

    " + message + "

    "); }    public void destroy() {      // 什么也不做 } }

    6、使用 Servlet 读取表单数据

    request.getParameter() (重要)

    • 返回值是字符串

    • 根据key获取对应值value

    a标签是可以传参数的,用字符串拼接

    a标签和我们直接在地址栏输入的地址没区别,都是get请求

    注解里有loadOnStartu=1,写完要去web.xml配置


    常见的客户端传参方式:

    get,post

    浏览器地址栏输入一定是get请求

    超级连接:一定是get

    表单:get或post

    request

    request.getParameterValues()

    • 返回值是String型数组

    前台是 checkbox 复选框

    String[] hobbies = request.getParameterValues("hobby")

    request.getParameterNames()

    拿键

    Enumeration parameterNames = request.getParameterNames();
    // 获取请求中传过来参数的key值,可根据它获取value
    while(parameterNames.hasmoreElements()){
        parameterNames.hasmoreElements()
    }

    getParameterMap()

    键值对全拿

    Map map = request.getParameterMap();
    for(map.Entry name:map.entrySet()){
        String key = name.getKey();
        String[] value = name.getValue();
        System.out.println(key + "--->" + Arrays.toString(value));
    }

    请求转发

    多个servlet处理一个请求,得用同样的request或response对象

    请求转发是在服务器完成的,与客户端无关

    request.getRequestDispatcher().forward()

    第一个括号参数:转发的servlet地址(目标servlet)(注解里写的)

    第二个括号参数:request和response对象

    作用域

    // 往request作用域添加一个name属性:“小红”
    request.setAttribute("name","小红")
    // 取name属性
    request.getAttribute("name")

    只要请求转发,作用域里面的东西永远都在,

    response

    getWriter()

    addHeader()

    重定向

    response.sendRedirect()

    请求转发和重定向的区别

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

    2、转发浏览器地址栏不变,重定向地址栏会发生变化

    3、重定向是客户端行为,请求转发是服务器行为

    4、重定向可以定向到任意地址,转发只能发生在项目内

        /*
            匹配数据库
                通过JDBC连接数据库,并且查询记录,返回结果
                操作步骤:
                1、加载驱动,驱动包放在哪?数据库连接池。
                2、JDBC,工具类。
                3、处理结果
            注册--新增
            登录--查询
         */

    和MySQL建立连接

    先决条件: ServletJDBC 连接

    1、从 Java Servlet 程序与 JDBC 连接的接口开始:

    1. 适当的 JDBC 环境应与数据库创建一起设置。

    2. 为此,请从 Internet 下载 mysql-connector.jar 文件,

    3. 下载后,将 jar 文件移动到 apache-tomcat 服务器文件夹,

    4. 将文件放在apache-tomcat 目录中的lib文件夹中。

    
    
    
       

    ID:

           
       

    UserName:

           
       

    Password:

           
       
       

    2、使用 JDBC 连接创建 Java Servlet 程序

    3、使用这个类方法,在 Java Servlet 程序中创建一个对象

    4、从 HTML 文件中获取数据:要从 HTML 文件中获取数据,使用 request 对象,该对象调用getParameter()方法从通道中获取数据。成功插入后,将创建 writer 对象以显示成功消息。

    从 Servlet 进行插入操作后,数据将反映在 MySQL 数据库中

    @WebServlet("/InsertData")   // 映射路径 唯一
    public class DbServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
           // 设置编码集
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            response.addHeader("content-type","text/html;charset=utf-8");
            // 连上数据库,从输入框获取数据 (SQL语句来插入)
            String sql = "insert into my_servlet values(null,?,?)";  // 我的表中有三列
            PrintWriter out = response.getWriter(); // 写出提示
            // 如何设置这两个参数?----> 输入框获取
            UserDao user = new UserDao();
            try {
                // 获取请求
                int i = user.update(sql, request.getParameter("username"), request.getParameter("password"));
                // 响应 
                if (i != 1) {
                    out.write("出错啦!");
                }else {
                    out.write("已加入啦!");
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            }finally {
                out.close();
            }
        }
    }

    一些需要细心的地方

    • Servlet以线程方式处理请求

    request

    转发:一次请求,request响应后即毁

    response

    • 重定向:两次请求,地址栏变

    • response.getWriter();

    PrintWriter out = response.getWriter();  // 文本打印输出流
    // out.write(name);  // 写字符
    out.println(name);// 写字节
    • response 对象定义格式:响应行、响应头、响应空行、响应体

    出现405

    没有在doPost() 里调用this.doGet(request,response)方法

    保险起见,写一个,然后在另一个方法里也调用一下~

    name为servlet服务,id 为脚本服务

    / 和 /* 区别:

    1、/* 是路径匹配,可以匹配所有请求,路径匹配优先级仅次于精确匹配,它会覆盖所有的扩展名匹配(恶劣)

    2、/ 是servlet中的特殊匹配模式,优先级最低,不会覆盖任何url-pattern 匹配所有请求

    get/post区别:

    get请求参数会在浏览器地址栏中显示,不安全,请求长度有限制(1kb以内),没有请求体,无法分通过request对象设置一些参数

    post请求参数会被封装成数据报文(请求体),不会显示在浏览器地址栏,相对安全,请求参数长度无限制

  • 相关阅读:
    浅析刚入门Python初学者的注意事项
    IIS 日志分析工具LogParser
    HTML做一个简单漂亮的旅游网页(纯html代码)重庆旅游 7页
    axios取消请求原理、拦截器原理- http状态码 - http请求方式
    架构设计:千万级流量下的数据强依赖降级
    简单两步实现离线部署ChatGPT,ChatGPT平替版,无需GPU离线搭建ChatGPT
    MySQL概念
    什么是人力资源管理系统?hr系统功能介绍
    vue serve及其与vue-cli-service serve之间的关系
    基于PHP+MYSQL高等数学在线学习教学系统的设计与实现
  • 原文地址:https://blog.csdn.net/qq_50392643/article/details/126581942