从Eclipse新建一个Servlet Maven 项目(已过时)
打开Eclipse
File -> New -> Maven Project -> Next
Archetype 选择 maven-archetype-webapp -> Next
输入Group Id 和 Artifact Id -> Finish
补充pom.xml,在dependencies节点下添加
1
2
3
4
5
6
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
保存后Eclipse会自动Build,Build好后小红叉就消失了。
接着右击项目 -> Run As -> Run On Server
选择一个Tomcat -> Next
如果没有安装Tomcat,这时可以选择安装,稍等片刻,Tomcat就安装好了。
点击 Finish,就可以在Eclipce内置的浏览器中看到 Hello World! 了。
此时的项目的结构如下
1
2
3
4
5
6
7
8
9
10
11
.
├── pom.xml
├── src
│ └── main
│ ├── resources
│ └── webapp
│ ├── WEB-INF
│ │ └── web.xml
│ └── index.jsp
└── target
└── ...
接着我们在./src/main
下新建个 java
文件夹
然后右键工程 New -> Servlet
填写包名和类名 -> Finish
重新运行项目即可访问这个Servlet了
用这种方式创建的工程是Servlet2的,所以 ./src/main/webapp/WEB-INF/web.xml
中会如以下内容
1
2
3
4
5
6
7
8
9
10
<servlet>
<servlet-name>HelloServlet</servlet-name>
<display-name>HelloServlet</display-name>
<description></description>
<servlet-class>com.example.hello.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
非常繁琐的XML,不方便阅读也不方便重构,我们可以使用更简洁的Servlet3写法,删除这段xml,然后在相应的Servlet添加注解即可。
1
2
3
4
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
...
}
项目结构
我们来看看此时的项目结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.
├── pom.xml
├── src
│ └── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── hello
│ │ └── HelloServlet.java
│ ├── resources
│ └── webapp
│ ├── WEB-INF
│ │ └── web.xml
│ └── index.jsp
└── target
├── classes
│ └── ...
├── m2e-wtp
│ └── ...
└── test-classes
Tomcat 做了什么?
Tomcat 接收了一个请求并交给相应的Servlet处理。
Tomcat 还做了什么?
把jsp编译成Servlet,并像使用Servlet一样使用它。
Servlet做了什么?
1
2
3
4
5
6
7
8
9
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
...
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
}
...
}
Servlet接收了一个HTTP请求,并返回了一个字符串。
jsp做了什么?
jsp接收了一个HTTP请求,并返回了HTML。
小结
总之,使用 Maven+Servlet 来创建 webapp 非常的麻烦,不建议使用。
Tips
Artifact Id 小写 eg. maven
, commons-math