- Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态web资源开发技术
- 使用Servlet就可以实现,根据不同的登录用户在页面上动态显示不同内容
- Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由Web服务器运行Servlet
需求分析: 编写一个Servlet类,并使用IDEA中Tomcat插件进行部署,最终通过浏览器访问所编写的Servlet程序
具体的实现步骤为:
1. 创建Web项目web-demo,导入Servlet依赖坐标
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <!-- 此处为什么需要添加该标签? provided指的是在编译和测试过程中有效,最后生成的war包时不会加入 因为Tomcat的lib目录中已经有servlet-api这个jar包,如果在生成war包的时候生效就会和Tomcat中的jar包冲突,导致报错 --> <scope>provided</scope> </dependency>2. 创建:定义一个类,实现Servlet接口,并重写接口中所有方法,并在service方法中输入一句话
package com.learn.web; import javax.jws.WebService; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; /** * @author 咕咕猫 * @version 1.0 */ @WebServlet("/demo1") public class ServletDemo1 implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("Servlet,Hello world~"); } @Override public String getServletInfo() { return null; } @Override public void destroy() { } }3. 配置:在类上使用@WebServlet注解,配置该Servlet的访问路径
@WebServlet("/demo1")
4. 访问:启动Tomcat,浏览器中输入URL地址访问该Servlet
http://localhost:8080/web-demo/demo1
5. 浏览器访问后,在控制台会打印
servlet hello world~
说明servlet程序已经成功运行。
- 浏览器发出
http://localhost:8080/web-demo/demo1
请求,从请求中可以解析出三部分内容,分别是localhost:8080
、web-demo
、demo1
○根据
localhost:8080
可以找到要访问的Tomcat Web服务器○根据
web-demo
可以找到部署在Tomcat服务器上的web-demo项目○根据
demo1
可以找到要访问的是项目中的哪个Servlet类,根据@WebServlet后面的值进行匹配
- 找到ServletDemo1这个类后,TomcatWeb服务器就会为ServletDemo1这个类创建一个对象,然后调用对象中的service方法
○ServletDemo1实现了Servlet接口,所以类中必然会重写service方法供Tomcat Web服务器进行调用
○service方法中有ServletRequest和ServletResponse两个参数,ServletRequest封装的是请求数据,ServletResponse封装的是响应数据,后期我们可以通过这两个参数实现前后端的数据交互
小结:
1. Servlet由谁创建?Servlet方法由谁调用?
答:Servlet由Web服务器创建,Servlet方法由Web服务器调用
2. 服务器怎么知道Servlet中一定有service方法?
答:因为我们自定义的Servlet,必须实现Servlet接口并复写其方法,而Servlet接口中有service方法