20201116黄春跃

20201116黄春跃

知识点总结

Maven

Maven概念

Maven 是一个强大的项目管理和构建自动化工具,它通过抽象的项目对象模型(POM: Project Object
Model)和构建生命周期模型(Project Lifecycle)来对项目及其构建过程进行管理(Dependency
Management System),Maven 最大化的消除了构建的重复,提升了构建的效率与标准化。除此之
外,Maven 还有依赖管理、自动生成项目站点、代码静态检查等特性。现在已经有无数开源或商业项
目使用Maven进行构建,Maven 现在已经是 Java 社区事实标准的构建工具。

Maven的作用

maven对项目的第三方构件(jar包)进行统一管理。向工程中加入jar包不要手工从其它地方拷贝,通

maven定义jar包的坐标,自动从maven仓库中去下载到工程中。
maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。
项目生命周期管理:编译、测试、打包、部署、运行。
maven对工程分模块构建,提高开发效率。

get和post请求方式的区别

                        get             post
数据长度是否都有限          是               否
是否有请求体               否               是
数据是否暴露在地址栏         是               否

get请求:

可以看到,username=ss 暴露在了地址栏

post请求:

可以看到,在post请求中并未暴露数据

注意:get没有请求体,post有请求体,就是表单中的内容:username=ss

Request内置对象

1.HttpServletRequest 对象代表客户端请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的
所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息。

2.HttpServletReuqest 不是相关请求的顶级接口,它继承自父接口ServletRequest

3.通过 Request 对象进行的常用操作:

获取客户端信息
获取请求头信息
获取请求参数
利用请求域传递对象

request获取请求行信息

请求行的组成元素(通过request获取请求行数据)

在http协议中我已经看到了http协议中请求行的内容——分为请求方式、请求路径、协议版本。

常用方法

String getMethod() 获取请求方式的类型

思路:通过from表单action="demo"提交到"/demo"路径的servlel,再在servlet里面使用getMethod()方法,获得了from表单的提交方式。

具体代码实现:

jsp:1.jsp

<%--
  Created by IntelliJ IDEA.
  User: 联想
  Date: 2020/11/13
  Time: 17:49
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form method="post" action="demo">
        <input type="password" name="username">
        <input type="submit" value="提交">
    </form>
</body>
</html>

servlet: DemoServlet

package com.ltlaobing.servlet;

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 java.io.IOException;

@WebServlet("/demo")
public class DemoServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.  String getMethod() 获取请求方式的类型
        String method = req.getMethod();
        System.out.println("获取的请求方式类型为:" + method);
        
        //2.  String getRequestURI() 获取请求行中的资源名部分
        String requestURI = req.getRequestURI();
        System.out.println("获取的请求行中的部分名称:" + requestURI);
        
        //3.  StringBuffer getRequestURL() 获取客户端发出请求完整URL
        StringBuffer requestURL = req.getRequestURL();
        System.out.println("获取客户端发出请求完整URL:" + requestURL);

        //4.  String getProtocol() 获取当前协议的名称和版本
        String protocol = req.getProtocol();
        System.out.println("获取当前协议的名称和版本:" + protocol);

        //5.  String getRemoteAddr() 获取IP地址
        String remoteAddr = req.getRemoteAddr();
        System.out.println("获取IP地址:" + remoteAddr);

        // 6.  int getLocalPort() 获取端口
        int localPort = req.getLocalPort();
        System.out.println("获取端口" + localPort);
    }
}
注意:2,3方法的返回值不一样

1.在浏览器输入:http://localhost:8888/demo_war_exploded/1.jsp

进入到如下界面:

2.点击提交后:

返回idea控制台输出如下类容:

注意:如果直接访问http://localhost:8888/demo_war_exploded/demo

则获取的请求方式类型就会是:GET

因为是从地址栏发出的请求,所以是GET

获取的请求方式类型为:POST
获取的请求行中的部分名称:/demo_war_exploded/demo
获取客户端发出请求完整URL:http://localhost:8888/demo_war_exploded/demo
获取当前协议的名称和版本:HTTP/1.1
获取IP地址:0:0:0:0:0:0:0:1
获取端口8888

此时访问http://127.0.0.1:8888/demo_war_exploded/demo时

输出结果:

获取的请求方式类型为:GET
获取的请求行中的部分名称:/demo_war_exploded/demo
获取客户端发出请求完整URL:http://127.0.0.1:8888/demo_war_exploded/demo
获取当前协议的名称和版本:HTTP/1.1
获取IP地址:127.0.0.1
获取端口8888

观察两次打印的IP地址会发现不一样,因此,注意localhost和127.0.0.1效果一致,但是localhost
默认使用ipv6本机地址——0:0:0:0:0:0:0:1,而127.0.0.1是ipv4的本机地址。

今日总结

对这几天的状态进行了一个调整,就像马浩老师说的,我们老是给自己心理暗示,自己学不懂,学不好。这几天的项目自己确实有这种状态,导致现在看老师上课敲的代码很费劲,知识点没有记牢固,见过这个方法但是不熟悉其意义。

晚上想了想,把Maven配置好之后完成了数据库的增加用户和删除用户。

然后先从Servlet最开始的知识点看起走,沉下心来,发现自己之前上课做这些练习的时候没有动脑子,就只是机械的跟着代码敲。

今晚上对request请求确实比之前清楚了一些,对form表单的action属性也有了深刻的印象。

评论

this is is footer