Servlet(一)
Servlet概述
-
Servlet
Servlet(Server Applet)是
Java Servlet
的简称,称为小服务程序或服务连接器,是用Java编写的服务器端程序,是运行在服务端(例如tomcat)的Java小程序,由sun公司提供一整套规范,它也指动态资源。作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
-
Servlet的作用
用来接收、处理客户端请求,响应给浏览器动态资源
servlet的实质就是java代码,通过java的API动态的向客户端输出内容
-
servlet与普通的java程序的区别
必须实现servlet接口
必须在servlet容器(例如服务器tomcat)中运行
servlet程序可以接收用户请求参数以及向浏览器输出数据
Servlet案例
需求:在IDEA编写Servlet,发布到Tomcat,在浏览器输入路径请求,控制台打印
hello world...
配置文件方式实现
步骤:
- 创建web工程
- 创建一个类实现Servlet接口
- 在web.xml配置servlet
-
在tset01包下创建一个类实现Servlet接口:
package test01; import javax.servlet.*; import java.io.IOException; public class ServletDemo01 implements Servlet { @Override //服务方法: 处理请求 //这里只实现service方法,来实现需求即控制台打印hello world... public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { System.out.println("hello world..."); } @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } @Override public String getServletInfo() { return null; } @Override public void destroy() { } }
-
web.xml配置(该文件在
web/WEB-INF
文件夹下):<?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_3_1.xsd" version="3.1"> <!--配置Servlet--> <servlet> <!--servlet-name: 名字随便取,一般就是类名--> <servlet-name>ServletDemo01</servlet-name> <!--servlet-class:Servlet这个类的全限定名--> <servlet-class>test01.ServletDemo01</servlet-class> </servlet> <servlet-mapping> <!--servlet-name: 必须和servlet标签里面的servlet-name一样--> <servlet-name>ServletDemo01</servlet-name> <!--url-pattern: 配置访问的路径--> <url-pattern>/demo01</url-pattern> </servlet-mapping> </web-app>
-
发布项目,浏览器跳转到welcome页面,此时我们访问
/demo01
路径,可以看到控制台输出了hello world...
注解方式实现
步骤:
创建web工程
创建一个类实现Servlet接口
在实现类上面添加@WebServlet(“访问的路径”)
-
在test02包下创建一个类实现Servlet接口并添加注解:
package test02; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; @WebServlet("/demo02") public class ServletDemo02 implements Servlet{ @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("hello world..."); } @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } @Override public String getServletInfo() { return null; } @Override public void destroy() { } }
-
发布项目,浏览器跳转到welcome页面,此时我们访问
/demo02
路径,可以看到控制台输出了hello world...
案例原理和路径配置
Servlet执行原理
-
原理图:
-
注意:
- Servlet对象是由服务器创建(反射)
- request与response对象也是由tomcat服务器创建
- service()方法也是服务器调用的
Servlet路径的配置url-pattern
url-pattern配置方式共有三种:
-
完全路径匹配:以
/
开始注:访问的路径要严格遵守配置路径
例如:配置了/demo01 请求的时候必须是:/demo01
-
目录匹配:以
/
开始需要以*
结束注: Servlet里面用的不多,但是过滤器里面通常就使用目录匹配
例如: 配置了/* 访问:/a,/aa,/aaa 配置了/aa/* 访问:/aa/b,/aa/cc
-
扩展名匹配:以
*
开始注:不能以
/
开始例如:配置了*.action 访问:aa.action,bb.action,c.action 错误写法:/*.do,不可以写:*.jsp,*.html
-
注意的地方:
-
一个路径只能对应一个servlet,但是一个servlet可以有多个路径
-
tomcat获得匹配路径时,优先级顺序:完全路径匹配 > 目录匹配 > 扩展名匹配
-
路径有多种方式, 一般用完全路径匹配
-
评论区