Servlet
是什么?
运行在服务器上的java小程序。
有什么用?
可以接受浏览器发送过来的请求,并做出响应,发还给浏览器。
怎么用?
Servlet是一个接口
public void init(ServletConfig config)
public void destroy()
public void service(ServletRequest req,ServletResponse res)
public ServletConfig getServletConfig()
public String getServletInfo()
Servlet的实现关系:
Servlet是一个接口,有两个实现类GenericServlet,HttpServlet
怎么写一个Servlet?
写一个类实现Servlet接口
写一个类继承GenericServlet
写一个类继承HttpServlet(在工作中使用)
进行配置:
<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
</servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<url-pattern></url-pattern>
<load-on-startup>2</load-on-startup> 设置优先级
</servlet-mapping>
Servlet执行流程:
1、 浏览器(在地址栏中输入一个地址、点击超链接按钮、提交表单数据)向服务器发送了一次请求。请求的路径是什么样子的?http://localhost:8080/项目名/资源路径
<ahref="/项目名/index.html">index.html</a>浏览器会自动添加上当前页面所在的服务器的地址
2、 http://localhost:8080/项目名/资源路径这个路径的执行过程会发生什么?通过主机名或ip地址可以唯一的找到一台服务器。通过8080端口可以找到唯一的服务器程序(Tomcat)。Tomcat根据“/项目名/资源路径”去决定由哪个资源做出响应。
3、 /项目名/资源路径,例如:/Day12_Test/index.html,Tomcat根据项目名,在webapps中可以查找到相应的项目目录。接下来,Tomcat会去项目下的WEB-INF下查找web.xml中有没有映射。如果有相应的Servlet来进行映射,则由Servlet来进行处理;如果找不到,会交给Tomcat做默认处理,如果有,Tomcat就会把资源发送给浏览器。如果找不到呢?会提示404错误。
Servlet的生命周期:
创建:第一次请求时创建,可以通过load-on-startup标签设置启动的顺序. 创建时,Tomcat会默认调用init方法来进行初始化操作。
销毁:服务器关闭,应用被卸载关闭,销毁时,tomcat会默认调用destroy方法。
提供服务:每一次请求,会调用service方法
url-pattern设置:
1. 完全路径匹配:
2. 目录匹配:
3. 扩展名匹配:
1 > 2> 3
不要写成/*.do
事件驱动的程序开发:
三个要素:
事件源:
事件的处理程序(监听器)(回调函数)
事件(事件自身)
三个步骤:
1、 写一个事件源
2、 写一个事件处理程序(监听器)
3、 绑定
使用STS发布项目的过程
1、 将SRC目录下的所有的java类进行编译成.class文件,再把其他所有文件和.class文件一起复制到WEB-INF下的classes目录中。
2、 将WebContent目录中的所有内容复制到tomcat的webapps目录下。
3、 将WebContent目录的名字改成项目名(准确来讲应该是改成项目属性下的web projectsettings中的Content Root选项中的名字。这个名字默认跟项目名相同)。
文件的路径问题:
a在项目根路径:不能,因为不会发不到Tomcat
b在WebContent路径:能,ServletContext.getResourceAsStream("/b.txt"); ServletContext.getRealPath("/b.txt");
c在WEB-INF下:能,
ServletContext.getResourceAsStream("/WEB-INF/c.txt"); ServletContext.getRealPath("/WEB-INF/c.txt");
d在src下:能
ServletContext.getResourceAsStream("/WEB-INF/classes/d.txt");
ServletContext.getRealPath("/WEB-INF/classes/d.txt");