Servlet 内存马 - 从环境搭建 到 复现

成果

先给大家看看成果
Servlet 内存马 - 从环境搭建 到 复现

Servlet 内存马 - 从环境搭建 到 复现

材料

  1. IntelliJ IDEA

Servlet 内存马 - 从环境搭建 到 复现

  1. maven

Servlet 内存马 - 从环境搭建 到 复现

  1. java jdk

Servlet 内存马 - 从环境搭建 到 复现
Servlet 内存马 - 从环境搭建 到 复现

  1. tomcat

Servlet 内存马 - 从环境搭建 到 复现
tomcat启动的时候是需要一个环境变量的(如果不知道这个是啥.......):
Servlet 内存马 - 从环境搭建 到 复现
以上请提前学会

开始

教程1:http://helloworld.monster/java_web_project_model_from_create_to_deploy/#%E6%B5%8B%E8%AF%95-helloworld
这个教程的问题是:学到输出index.html之后就不介绍文件路径了
教程2:https://blog.csdn.net/qq_40933663/article/details/90452086
这个没有介绍maven

接下来是我的步骤:

新建工程

E:\IntelliJ-IDEA-workspace下新建Servlet-test作为本次实验的工程文件夹
Servlet 内存马 - 从环境搭建 到 复现
使用IDEA打开
Servlet 内存马 - 从环境搭建 到 复现
Servlet-test上右键Add Framework Support
Servlet 内存马 - 从环境搭建 到 复现
添加maven支持
Servlet 内存马 - 从环境搭建 到 复现
这样会给你添加好多文件夹
Servlet 内存马 - 从环境搭建 到 复现
修改一下pox.xml 给你的groupId 起个响亮的名字com.xxxxx
Servlet 内存马 - 从环境搭建 到 复现
然后继续修改pom.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.sanqiushu</groupId>
    <artifactId>Servlet-test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 设置打包方式 -->
    <packaging>war</packaging>

    <properties>
        <!-- 设置编码方式 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <!-- 设置 JDK 版本 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>

        <!-- 添加 servlet 依赖 -->
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>
    
</project>

点击刷新maven
Servlet 内存马 - 从环境搭建 到 复现

创建webapp目录

src/main 下创建webapp 目录
Servlet 内存马 - 从环境搭建 到 复现
因为前面在 pom.xml 配置文件中设置了打包方式为 war 包,/src/main/webapp 目录会自动带上 Web 资源目录(Web Resource Directory)标记
Servlet 内存马 - 从环境搭建 到 复现

创建 Web.xml 配置文件

打开项目配置
Servlet 内存马 - 从环境搭建 到 复现
按图示创建 web.xml 配置文件
(注意看黄框部分,就是上一步骤,webapp 会被标记为 Web 资源目录的原因)
Servlet 内存马 - 从环境搭建 到 复现
Servlet 内存马 - 从环境搭建 到 复现
但是我不想在这个位置(我也不知道为啥),换成下面这个位置
E:\IntelliJ-IDEA-workspace\Servlet-test\src\main\webapp\WEB-INF\web.xml
Servlet 内存马 - 从环境搭建 到 复现
Servlet 内存马 - 从环境搭建 到 复现
Servlet 内存马 - 从环境搭建 到 复现

编写一个 HelloWorld 页面

Servlet 内存马 - 从环境搭建 到 复现
webapp下添加一个index.html
Servlet 内存马 - 从环境搭建 到 复现
编写内容

<!-- src/main/webapp/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
</head>
<body>

<h3>Hello World !</h3>

</body>
</html>

Servlet 内存马 - 从环境搭建 到 复现

配置 Tomcat(IDEA 开发测试环境)

Servlet 内存马 - 从环境搭建 到 复现
这个路径选你自己安装的路径
Servlet 内存马 - 从环境搭建 到 复现
然后选择Deployment:开发测试选第二个,生产发布选第一个
Servlet 内存马 - 从环境搭建 到 复现
Tomcat 启动!
Servlet 内存马 - 从环境搭建 到 复现
等一下会自动打开浏览器,并显示 Hello World !
Servlet 内存马 - 从环境搭建 到 复现

新建一个Servlet

java下新建一个包名字叫 com.xxxx 最好是跟你最一开始pom.xml 里写的一样
Servlet 内存马 - 从环境搭建 到 复现
然后在com.sanqiushu 下新建 一个java文件 MyFirstServlet.java
Servlet 内存马 - 从环境搭建 到 复现
Servlet 内存马 - 从环境搭建 到 复现
代码如下:

/*
 * @author sanqiushu
 * @create 2021-08-14 14:08
 */
package com.sanqiushu;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

/**
 * servlet
 * 开发者不会去new MyFirstServlet
 */
public class MyFirstServlet extends HttpServlet {
    // 覆盖doGet() / doPost() 方法

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 向浏览器输出内容
        // 设置编码
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().write("hello, 这是我的第一个Servlet...");
        response.getWriter().write("当前系统时间是:"+new Date());
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}


配置WEB-INF下的web.xml:

Servlet 内存马 - 从环境搭建 到 复现

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">


    <servlet>
        <servlet-name>MyFirstServlet</servlet-name>
        <servlet-class>com.sanqiushu.MyFirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyFirstServlet</servlet-name>
        <url-pattern>/MyFirstServlet</url-pattern>
    </servlet-mapping>

</web-app>

Tomcat 启动!(重启)
带上servlet 路径
[http://localhost:8080/Servlet_test_war_exploded/MyFirstServlet]
Servlet 内存马 - 从环境搭建 到 复现
Nice

Servlet 内存马 - 从环境搭建 到 复现

上一篇:66、在执行malloc申请内存的时候,操作系统是怎么做的?


下一篇:wangEditor富文本编辑器