Servlet 内存马 - 从环境搭建 到 复现(还没复现)

成果

先给大家看看成果
image

image

材料

  1. IntelliJ IDEA

image

  1. maven

image

  1. java jdk

image
image

  1. tomcat

image
tomcat启动的时候是需要一个环境变量的(如果不知道这个是啥.......):
image
以上请提前学会

开始

教程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作为本次实验的工程文件夹
image
使用IDEA打开
image
Servlet-test上右键Add Framework Support
image
添加maven支持
image
这样会给你添加好多文件夹
image
修改一下pox.xml 给你的groupId 起个响亮的名字com.xxxxx
image
然后继续修改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
image

创建webapp目录

src/main 下创建webapp 目录
image
因为前面在 pom.xml 配置文件中设置了打包方式为 war 包,/src/main/webapp 目录会自动带上 Web 资源目录(Web Resource Directory)标记
image

创建 Web.xml 配置文件

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

编写一个 HelloWorld 页面

image
webapp下添加一个index.html
image
编写内容

<!-- 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>

image

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

image
这个路径选你自己安装的路径
image
然后选择Deployment:开发测试选第二个,生产发布选第一个
image
Tomcat 启动!
image
等一下会自动打开浏览器,并显示 Hello World !
image

新建一个Servlet

java下新建一个包名字叫 com.xxxx 最好是跟你最一开始pom.xml 里写的一样
image
然后在com.sanqiushu 下新建 一个java文件 MyFirstServlet.java
image
image
代码如下:

/*
 * @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:

image

<?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]
image
Nice

posted @ 2021-08-14 14:31  Nestar  阅读(374)  评论(0编辑  收藏  举报