在ideal中创建一个maven工程,不选工程模板
写一个简单的响应GET请求的servlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletHelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}
javax.servlet 并不在java的标准库中,需要在maven中添加依赖,servlet依赖的写法可以在maven网站中查到。
在pom.xml中添加
<dependencies>
<!-- 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>
代码中还是提示无法导入javax.servlet,可以在工程中reimport一下。这样在external libraries里面就能看到javax.servlet包了。
执行build。就生成了target目录,下面有classes目录,里面有我们的ServletHelloWorld.class文件。
部署到tomcat
tomcat是最常用的servlet服务器。在官网上找到与电脑操作系统对应的版本,下载下来解压就可以了。
解压目录中有一个webapps目录,我们按照tomcat的规范,在里面创建servlet_hello_world/WEB-INF目录,把刚刚生成的classes目录放到里面去。
然后再在里面创建一个web.xml文件,内容如下:
<?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">
<description>
Servlet and JSP Examples.
</description>
<display-name>Servlet and JSP Examples</display-name>
<request-character-encoding>UTF-8</request-character-encoding>
<servlet>
<servlet-name>servlet_hello_world</servlet-name>
<servlet-class>ServletHelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet_hello_world</servlet-name>
<url-pattern>/hello_world</url-pattern>
</servlet-mapping>
</web-app>
以上主要是将类名与Servlet名相对应,然后再将Servlet名与访问链接相对应。
启动tomcat,在浏览器中访问 http://localhost:8080/servlet_hello_world/hello_world ,可以看到servlet处理GET请求输出的结果。