所谓Servlet就是完成浏览器和服务器之间的交互,浏览器发出请求,服务器做出响应,二者既然能进行信息的交流,那么他们就一定有一种规范,那这个规范就是HTTP协议,有了这种协议,那么不管你是什么浏览器,所发出来的信息服务器都认识。
这里的服务器我们以Tomcat为例进行讲解,如果你对Tomcat还不太了解,可以先了解一下Tomcat入门学习
好了,到这里你已经了解了浏览器和服务器直接的交互是通过HTTP协议达成一致的,而且你也了解了Tomcat服务器,那么让我们来一起写第一个servlet类吧,首先你需要建一个web项目,在你的web项目中新建一个类,让该类继承HttpServlet,重写service方法,然后找到web.xml文件配置servlet,然后把你运行后的class文件和web.xml文件复制到服务器中的webapps中,运行服务器即可,接下来我进行代码以及运行结果的演示。
第一步,在你的web项目下写一个类,我把该类写到了com.zhiying包下,这里以MyServlet为例,并且继承HttpServlet
package com.zhiying;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class MyServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("this is my first servlet"); //这是在浏览器上打印一句话
}
}
当你写完servlet类之后,接下来就开始配置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">
<servlet>
<!--servlet-name 是给servlet类起的一个名字,这里是my-->
<servlet-name>my</servlet-name>
<!--这里的servlet-class是你类的路径,是包名加类名-->
<servlet-class>com.zhiying.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<!--这里的servlet-name必须与上面的那个保持一致,这样才能形成一组-->
<servlet-name>my</servlet-name>
<!--这里的url-pattern是上面的那个路径的映射,用于浏览器访问时使用-->
<url-pattern>/my</url-pattern>
</servlet-mapping>
</web-app>
当你把这也配置好之后,那你就可以运行了,运行需要在编译器中用Tomcat进行运行,因为在这个类中没有main函数,而Tomcat可以直接调用servlet类,在这里如果你的编译器没有集成Tomcat,那你需要先把Tomcat集成到编译器中,这里我给出集成到eclipse中方法,现在你可以运行了,运行之后,你把生成的.class文件和web.xml文件复制到Tomcat的webapps中,你在webapps中新建一个文件夹,这里以project为例,这两个文件都在WEB-INF目录下,所以直接复制WEB-INF目录即可,同时你会看到有一个index.jsp,这个也一块复制到webapps中的project里,不复制也不影响你运行,当你复制完之后,就可以进行演示了,以及对index.jsp进行解释。
启动服务器,输入网址localhost:8080/project/my 如果你看到了下面的信息,那么就证明你成功了,这里访问的是project项目下的/my,这里的/my路径会对应你web.xml里配置映射出com.zhiying.MyServlet之所以不用这个包名加类名,是因为,包名加类名可以通过反射来创建对象,显示在浏览器中,不安全。
接下来解释刚刚那个index.jsp,你输入网址localhost:8080/project 访问project项目,你会看到下面的截图,也就是默认访问了index.jsp,其实是执行了它对应的servlet文件
到这里,也就成功的写出了一个servlet