一、eclipse 配置 tomcat 服务器:
1、 Window->Preferences->Server->Runtime Environments,点击 Add:
2、选择 Tomcat 版本,然后点击 Next:
3、点击 Browse,选择 Tomcat 所在的目录,下面 JRE: 选择之前配置好的 Java JDK,点击 Finish,就配置好了:
二:创建 Servlet:
HelloServlet.java:
package com.demo.a_servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
* 静态资源:当用户多次访问这个资源,资源的源代码永远不会改变的资源;
* 动态资源:当用户多次访问这个资源,资源的源代码有可能会发生改变的资源;
*
* Servlet:用 java 语言来编写动态资源的技术;
*
* Servlet 特点:
* 1、普通的 java 类,继承 HttpServlet,覆盖 doGet() 和 doPost() 方法;
* 2、Servlet 只能交给服务器运行(tomcat),程序员自己不能运行;
*
* 如果想运行 servlet,还必须在 web.xml 中进行配置;
* servlet 的运行过程:为什么在地址栏输入 http://localhost:8080/02_Servlet/hello,能够执行 HelloServlet 中的 doGet() 方法?
* tomcat 服务器在启动时,首先会加载 webapps 中的每个 web 应用的 web.xml 配置文件;
* 1、http:// http协议
* 2、localhost:到本地的 hosts 文件中查找是否存在该域名对应的 IP 地址(127.0.0.1)
* 3、8080:通过应用的端口号找到 tomcat 服务器;
* 4、/02_Servlet:在 tomcat 的 webapps 目录下找到 02_Servlet 的应用目录;
* 5、/hello:资源名称
*
* 当在地址栏输入:http://localhost:8080/02_Servlet/hello 时,tomcat 服务器会到 webapps 目录下查找是否有 02_Servlet 的项目目录;
* 如果找到 02_Servlet 的项目,会到目录下的 web.xml 配置文件中查找是否有 值为 hello 的 <url-pattern> 节点;
* 如果找到匹配的 <url-pattern>,则使用当前 <servlet-name> 的值,在 web.xml 中查找是否有相同名称的 <servlet> 节点;
* 如果找到 <sevlet>,则执行 <servlet> 下的 <servlet-class> 中的类(com.demo.a_servlet.HelloServlet);
* 如果是 GET 请求,则执行类中的 doGet 方法;如果是 POST 请求,则执行 doPost 方法。
*
* Servlet 的映射路径:<url-pattern>节点的值;
*
* <url-pattern>的值 浏览器输入
*
* 精确匹配: /hello http://localhost:8080/02_Servlet/hello
* /itcast/hello http://localhost:8080/02_Servlet/itcast/hello
*
* 模糊匹配:分两种
* 一种以 / 开头:
* /* http://localhost:8080/02_Servlet/任意路径
* /itcast/* http://localhost:8080/02_Servlet/itcast/任意路径
* 一种以 * 开头:*.后缀名 http://localhost:8080/02_Servlet/任意路径.后缀名
* *.do http://localhost:8080/02_Servlet/任意路径.do
* *.action http://localhost:8080/02_Servlet/任意路径.action
* *.html(伪静态) http://localhost:8080/02_Servlet/任意路径.html
*
* 注意: 1、<url-pattern>的值要么以 / 开头,要么以 * 开头;
* 2、不能同时使用两种模糊匹配,例如:/itcast/*.do 不行
* 3、当输入的 URL 有多个 servlet 同时被匹配的情况下:
* a)、精确匹配优先;
* b)、模糊匹配中,以后缀名结尾的模糊匹配优先级最低;
*/
@SuppressWarnings("serial")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 防止中文乱码
resp.setContentType("text/html;charset=utf-8");
// 向浏览器输出内容
resp.getWriter().write("这是第一个servlet程序");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>02_Servlet</display-name>
<!-- 配置一个 servlet 程序 -->
<servlet>
<!-- servlet 的名称,可以自定义 -->
<servlet-name>HelloServlet</servlet-name>
<!-- servlet 类名(带包名) -->
<servlet-class>com.demo.a_servlet.HelloServlet</servlet-class>
</servlet>
<!-- 配置 servlet 映射 -->
<servlet-mapping>
<!-- servlet 的名称,必须和上面的保持一致 -->
<servlet-name>HelloServlet</servlet-name>
<!-- servlet 的访问名称:/名称 -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
三、把项目部署到 Tomcat:
1、在 Servers 视图添加 Tomcat 服务:
2、右击配好的 Tomcat 服务:点击 Add and Remove;
3、选中要添加的项目,点击 Add;
4、添加项目之后点击 Finish;
5、项目添加成功,在 Tomcat 服务下能看到;右击 Tomcat 服务,点击 Publish,部署项目到 Tomcat 目录(webapps)下;
6、启动 Tomcat 服务:
7、打开浏览器,在地址栏输入:http://localhost:8080/02_Servlet/hello