跳至主要內容
Content - Cookie + Session

Cookie

Cookie, 可以在浏览器中保存一些信息,并且在下次请求时,请求头中会携带这些信息。

简单使用

在服务器端发送 Cookie 的请求头

Cookie cookie = new Cookie("test", "yyds");
resp.addCookie(cookie);
resp.sendRedirect("time");

codejavaweb大约 6 分钟
Content - Filter + Listener

Filter

有了Session之后,我们就可以很好地控制用户的登陆验证了,只有授权的用户,才可以访问一些页面,但是我们需要一个一个去进行配置,还是太过复杂,能否一次性地过滤掉没有登录验证的用户呢?

过滤器相当于在所有访问前加了一堵墙,来自浏览器的所有访问请求都会首先经过过滤器,只有过滤器允许通过的请求,才可以顺利地到达对应的Servlet

而过滤器不允许的通过的请求,我们可以自由地进行控制是否进行重定向或是请求转发。并且过滤器可以添加很多个,就相当于添加了很多堵墙,我们的请求只有穿过层层阻碍,才能与Servlet相拥,像极了爱情。


codejavaweb大约 4 分钟
Content - Tomact类加载机制

Tomcat类加载机制

Tomcat到底是如何加载和运行我们的Web应用程序的。

Tomcat服务器既然要同时运行多个Web应用程序,那么就必须要实现不同应用程序之间的隔离

也就是说,Tomcat需要分别去加载不同应用程序的类以及依赖,还必须保证应用程序之间的类无法相互访问

而传统的类加载机制无法做到这一点,同时每个应用程序都有自己的依赖,如果两个应用程序使用了同一个版本的同一个依赖,那么还有必要去重新加载吗,带着诸多问题,Tomcat服务器编写了一套自己的类加载机制。

img

codejavaweb大约 3 分钟
Content - Servlet2

Servlet2

使用POST请求完成登陆

一般通过 Post 操作来向服务器传输数据

我们需要修改一下我们的Servlet,让其能够接收一个POST请求:

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.getParameterMap().forEach((k, v) -> {
            System.out.println(k + ": " + Arrays.toString(v));
        });
    }
}

codejavaweb大约 5 分钟
Content - Servlet3

Servlet3

重定向与请求转发

重定向 302 resp.sendRedirect()

当我们希望用户登录完成之后,直接跳转到网站的首页,那么这个时候,我们就可以使用重定向来完成。

当浏览器收到一个重定向的响应时,会按照重定向响应给出的地址,再次向此地址发出请求。

实现重定向很简单,只需要调用一个方法即可

resp.sendRedirect("time");

codejavaweb大约 5 分钟
Content - 网络基础1

网络基础1

在计算机网络(谢希仁 第七版 第264页)中,是这样描述万维网的:

万维网(World Wide Web)并非是某种特殊的计算机网络,万维网是一个大规模的联机式信息储藏所,英文简称Web,万维网用链接的方法,能够非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需求获取丰富的信息。 万维网以客户服务器的方式工作,浏览器就是安装在用户主机上的万维网客户程序,万维网文档所驻留的主机则运行服务器程序,因此这台主机也称为万维网服务器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档,在一个客户程序主窗口上显示出的万维网文档称为页面。


codejavaweb大约 4 分钟
Content - Tomact

网络基础2

Tomact 安装

Tomcat(汤姆猫)就是一个典型的Web应用服务器软件,通过运行Tomcat服务器,我们就可以快速部署我们的Web项目,并交由Tomcat进行管理,我们只需要直接通过浏览器访问我们的项目即可。

那么首先,我们需要进行一个简单的环境搭建,我们需要在Tomcat官网下载最新的Tomcat服务端程序:https://tomcat.apache.org/download-10.cgi


codejavaweb大约 5 分钟
Content - Servlet1

网络基础3

Servlet

Servlet 是 Java EE的一个标准,大部分的Web服务器都支持此标准,包括Tomcat,就像之前的JDBC一样,由官方定义了一系列接口,而具体实现由我们来编写,最后交给Web服务器(如Tomcat)来运行我们编写的 Servlet。

我们可以通过实现 Servlet 来进行动态网页响应,使用Servlet,不再是直接由Tomcat 服务器发送我们编写好的静态网页内容(HTML文件),而是由我们通过Java 代码进行动态拼接的结果,它能够很好地实现动态网页的返回。

当然,Servlet并不是专用于HTTP协议通信,也可以用于其他的通信,但是一般都是用于 HTTP。


codejavaweb大约 8 分钟
Maven2 - 依赖导入

Maven2

Maven依赖导入

我们尝试使用Maven来帮助我们快速导入依赖,我们需要导入之前的JDBC驱动依赖、JUnit依赖、Mybatis依赖、Lombok依赖,那么如何使用Maven来管理依赖呢?

我们可以创建一个dependencies节点:

<dependencies>
    //里面填写的就是所有的依赖
</dependencies>

codejavawebMaven大约 3 分钟
Maven3 - 依赖作用域

Maven3 - 依赖作用域

Maven依赖作用域

除了三个基本的属性用于定位坐标外,依赖还可以添加以下属性:

  • type:依赖的类型,对于项目坐标定义的packaging。 大部分情况下,该元素不必声明,其默认值为jar
  • scope:依赖的范围(作用域,着重讲解)
  • optional:标记依赖是否可选
  • exclusions:用来排除传递性依赖(一个项目有可能依赖于其他项目,就像我们的项目,如果别人要用我们的项目作为依赖,那么就需要一起下载我们项目的依赖,如Lombok)

codejavawebMaven大约 4 分钟