文章目录:
2.3 在controller包下,创建一个Java类,继承HttpServlet类
2.4 在WEB-INF目录下的web.xml中注册Servlet接口实现类的信息
1.开篇
上一篇文章中,讲了将Tomcat集成到IDEA中,那么这篇文章,来谈谈Servlet吧。
所谓Servlet就是完成浏览器和服务器之间的交互,浏览器发出请求,服务器做出响应,二者既然能进行信息的交流,那么他们就一定有一种规范,那这个规范就是HTTP协议。有了这种协议,不管是什么浏览器,所发出来的信息,服务器都认识。
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势:
- 性能明显更好。
- Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
- Servlet 是独立于平台的,因为它们是用 Java 编写的。
- 服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
- Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。
2.Servlet接口实现类的开发步骤
2.1 使用Maven创建web项目
2.2 在项目的结构中新建一个java文件夹
将这个java文件夹的类型修改为 Resources Root,同时建一下对应的包。(com.songzihao.controller)
Servlet规范认为,只有作为Servlet接口的实现类才可以被称为动态资源文件,只有动态资源文件才有资格被Tomcat服务器进行调用。
Servlet接口实现类的开发步骤:
- 创建一个Java类,继承HttpServlet。
- 重写其中的 doGet、doPost方法。
- 在 web.xml 中注册 Servlet 接口实现类的相关信息。
2.3 在controller包下,创建一个Java类,继承HttpServlet类
这里重写的是service方法。在后面那个例子中重写了 doGet、doPost方法。
package com.songzihao.controller; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import java.io.IOException; /** * 这里是直接继承了HttpServlet这个类,你也可以写成下面这样 * MyServlet implements Servlet */ public class MyServlet extends HttpServlet { @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { res.getWriter().write("This is my first servlet!!!"); System.out.println("MyServlet类成功处理了用户请求。。。。。"); } }
2.4 在WEB-INF目录下的web.xml中注册Servlet接口实现类的信息
<?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接口实现类的全限定名称 --> <servlet> <servlet-name>myServlet</servlet-name> <servlet-class>com.songzihao.controller.MyServlet</servlet-class> </servlet> <!-- 为Servlet接口实现类指定一个简短的对外别名 --> <servlet-mapping> <servlet-name>myServlet</servlet-name> <url-pattern>/myServlet</url-pattern> </servlet-mapping> <!-- tomcat启动时,自动读取网站中的web.xml 分别使用两个map对象存储Servlet实现类中的注册信息 Map servletMap=new HashMap(); servletMap.put("myServlet","com.songzihao.controller.MyServlet"); Map servletMapping=new HashMap(); servletMapping.put("/myServlet","myServlet"); 此时浏览器发送如下请求:http://localhost:8080/szh01_first/myServlet tomcat通过 servletMapping 了解 /myServlet 对应的信息 tomcat通过 servletMap 转发 myServlet --> </web-app>
2.5 启动Tomcat服务器
在浏览器中输入正确的url:http 协议、localhost:8080 本地ip和端口号、szh01_first web项目名、/myServlet是我们注册的Servlet接口实现类的信息。
回到IDEA中,可以看到Tomcat服务器运行出了相应的结果。
3.使用IDEA中的模板创建Servlet接口的实现类
上面两步完成之后,可以看到controller包、web.xml文件中,都生成了IDEA的模板代码。
package com.songzihao.controller; import javax.servlet.*; import javax.servlet.http.*; import java.io.IOException; public class YourServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("YourServlet针对GET请求方式进行处理"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("YourServlet针对POST请求方式进行处理"); } }
<?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>yourServlet</servlet-name> <servlet-class>com.songzihao.controller.YourServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>yourServlet</servlet-name> <url-pattern>/your</url-pattern> </servlet-mapping> </web-app>
运行Tomcat服务器,在浏览器中输入:localhost:8080/szh01_first/your
可以看到如下的结果:👇👇👇






