Servlet 项目搭建
Drunkbaby Lv6

Servlet 项目搭建

文章重新更新于 2022.9.6,因为后续搭建出了大问题,已修复

Servlet 项目搭建

0x01 前言

看很多大师傅的文章,对分析内存马写的都挺好的,但是都没有说环境怎么怎么搭建,大部分都是引用其他人的。

我决定自己写一篇文章,为正在学习内存马的师傅们避个坑。

0x02 基础环境搭建

  • jdk8u312
  • Maven 3.6.3
  • IDEA 2021.2.1

这里没有借鉴任何其他文章,完全是自己手工搭建了一遍,其实根本没那么复杂。

新建项目,选择 enterprise,这个地方要注意,选择 Web Application,而不是 Rest Service。

下一步这里,什么都不需要选。

后续根本不需要配置什么 web.xml,也不需要添加什么 classes 文件夹,lib 文件夹,根本没必要。

因为我们选择的是 Web Application 4.0,可以直接在类里面用注解配置,比如 Servlet ———— @WebServlet("/servlet"),在访问 /servlet 的时候调用此 Servlet

但是有时候为了分析还是需要加上 web.xml,会简易一点

搭完了之后要用 maven 把 tomcat 的包打进去,很坑。

xml 代码如下

1
2
3
4
5
6
7
8
9
10
<dependency>  
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina</artifactId>
<version>8.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>8.5.15</version>
</dependency>

0x03 为什么要重新写一下如何搭建

  • 当时发现太坑了,因为我们如果新建了 classes,并且设置输出,有时候会设置失败的。

遇到的情况是 500 的报错,其实就是没有 .class 输出,这是啥意思呢?

我们平常编译,都是有一个 target 文件夹的,里面放的是 .class 的文件,这个 .class 的文件如果没有,就会报 500 的那个错误,并且报错是 ClassNotFound

所以才会这样,醉了。

第二种搭建方式

更新于 2022-10-28

是在学习狂神 SpringMVC 视频的时候学到的,先起一个项目,然后删除 src 文件夹。

接着新建 module,在 module 里面 add framework,选择 web application 即可。

其实一开始我也是这样创建的,但是坑就坑在,还要导入 jsp 的包,如下

1
2
3
4
5
6
7
8
9
10
11
12
<dependencies>  
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
</dependencies>

父类的 pom.xml 如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<dependencies>  
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>

踩坑

这其实还会有点小问题,有时候 Tomcat 的项目会 404,这是因为没有导入 lib;

创建一个 lib,接着导入包即可。

CSDN 上有很多文章是没有提及这个的,太坑了。

第三种搭建方式

详见 Struts2 搭建的文章,也是一样的,需要寻找 web-app

 评论
.valine-container { #vcomments { .vwrap { border 0.1rem solid var(--text-color-4) .vheader { .vinput { color var(--text-color-3) border-color var(--text-color-4) &:focus { border-bottom 0.1rem dashed var(--primary-color) !important } } } .vedit { .veditor { color var(--text-color-3) } .vctrl { .vicon { fill var(--text-color-3) &.actived { fill var(--primary-color) } } } } button.vsubmit { color var(--text-color-3) !important background transparent !important border 0.1rem solid var(--text-color-3) !important &:hover { color var(--primary-color) !important border 0.1rem solid var(--primary-color) !important } } } .vcount { color var(--text-color-3) .vnum { color var(--text-color-2) } } .vcard { .vnick { .author { margin-left 0.15rem padding 0.15rem color #fff font-weight 450 font-size 0.9rem background -webkit-linear-gradient(45deg, #e3565e, #ee854b, #f6c258, #90c68a, #5fb3b3, #6699cc, #c594c5) background linear-gradient(45deg, #e3565e, #ee854b, #f6c258, #90c68a, #5fb3b3, #6699cc, #c594c5) border-radius 0.15rem } } .vhead { .vnick { color var(--primary-color) } .vsys { color var(--text-color-3) background var(--background-color-2) !important } } .vcontent { P { color var(--text-color-3) code { color var(--code-foreground) background var(--code-background) } } } .vh { border-bottom-color var(--border-color) } .vquote { border-left-color var(--border-color) } } .vcopy { color var(--text-color-4) } .vpage { .vmore { color var(--text-color-2) border 0.1rem solid var(--border-color) } } } }