Servlet
1、Servlet的概述
Servlet是一个接口,定义了网络访问的规则.(抽象方法)
保证每一次访问的内容都根据逻辑进行判断,显示不同的内容出来(新闻每一次访问的时候都不一样)
2、Servlet的快速入门
A.创建JavaEE Module
B.写一个类,实现接口 javax.servlet.Servlet
C.重写五个方法
D.配置web.xml文件
<!-- 需要配置Servlet的路径(包名称类名称,网络访问路径)-->
<servlet>
<servlet-name>test01</servlet-name>
<servlet-class>demo.Test01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test01</servlet-name>
<url-pattern>/aa</url-pattern>
</servlet-mapping>
<!-- 访问的地址 -->
http://127.0.0.1:8080/aa
3、Servlet的执行原理
A. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
B. 查找web.xml文件,是否有对应的<url-pattern>标签体内容。
C. 如果有,则在找到对应的<servlet-class>全类名
D. tomcat会将字节码文件加载进内存,并且创建其对象
E. 调用其方法,如何知道调用的是哪一个方法?实现过Servlet接口.知道方法的名称返回值参数等
4、Servlet生命周期
A. init() 初始化的方法,只会执行1次
a.配置的两种情况(在web.xml文件的<servlet>标签当中配置)
<load-on-startup> 数据值 </load-on-startup>
0和正数: (0-10之间) 服务器启动的时候,调用 init()方法
负数:(-10 - -1之间) 第一次访问的时候,调用 init()方法
b.变量定义的问题
可以把变量定义在方法当中,作为局部变量使用
即使定义成员变量,也不要轻易修改变量的值,容易出现 多线程访问的数据安全问题!
B. service() 服务的方法,可以执行多次
C. destroy() 销毁的方法,只会执行1次
执行的时机:正常关闭Servlet以及关闭之前执行.
5、Servlet3.0配置的方式
在Servlet的实现类上面添加注解 @WebServlet("/bb")
访问的方式: http://127.0.0.1:8080/day/bb 其中day是虚拟目录
6、Servlet的体系结构
abstract class GenericServlet implements Servlet
abstract class HttpServlet extends GenericServlet
7、注解的匹配规则
A.基础语法(定义数组的多个匹配规则)
@WebServlet({"/*","/test04/xx"})
B.常见的写法
a. "/*" 访问: http://127.0.0.1:8080/day 就可以访问,其中day13是虚拟目录
b. "/xx" 访问: http://127.0.0.1:8080/day/xx
c. "/xx/heihei" 访问: http://127.0.0.1:8080/day/xx/heihei
d. "*.do" 访问: http://127.0.0.1:8080/day/jiji.do 这里的jiji可以任意写
代码实现:
//1.写一个类继承 HttpServlet
//2.重写 doGet() 和 doPost() 方法
//访问的地址: http://127.0.0.1:8080/demo3
@WebServlet("/demo3")
public class Test2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("欢迎来到葵花麻麻课堂。。。。。");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("葵花麻麻课堂又开课了。。。。。");
}
}