WEB资源
在http协议中,规定了请求和响应双方,客户端和服务器端与web相关的资源。* 静态资源
html js css
* 动态资源
servlet/jsp
Servlet
Servlet其实是一个Java程序,运行在web服务器上,用于接收和响应客户端的http请求。
更多的是为了配合动态资源来做。当然静态资源也需要用到Servlet,只不是Tomcat里面定义好了一个DefaultServlet。
Servlet初步
1.编写一个web工程,要有一个服务器。
2.在WebCountent在创建html文件。
3.测试运行web工程
1.新建一个类,实现Serclet接口
package servlet;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class HelloServlet implements Servlet{
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("Hello Servlet!");
}
}
2.配置Servlet,告诉服务器,我们的应用有多少个Servlet
在webContent/WEB.INF/web.xml里面写以下内容
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>HelloWeb</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 向Tomcat报告,我这个应用里面有servlet,名字叫做...,具体的路径是... -->
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>servlet.HelloServlet</servlet-class>
</servlet>
<!-- 注册Servlet的映射,servlet-name:找到上面注册的具体servlet,url-pattern:在地址栏上的path -->
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/a</url-pattern>
</servlet-mapping>
</web-app>
3.右键WEB工程,选择Run As --> Run on Web,等待tomcat开启,出现先前创建的html文件现实的内容。在地址栏输入
http://localhost:8090/HelloServlet/a
控制台出现Hello Servlet!即成功。
Servlet执行过程
URL:
http://localhost:8090/HelloServlet/a
1.找到Tomcat应用
2.找到web项目
3.找到web.xml,然后在里面找到url-pattern,有没有哪一个pattern的内容是/a
4.找到servlet-mapping中的那个servlet-name【HelloServlet】
5.找到上面定义的servlet元素中的servlet-name
6.找到下面定义的servlet-class,然后开始创建该类的实例
7.继而执行该servlet中的service方法
Servlet通用写法
Servlet (接口)
|
|
GenericServlet
|
|
HttpServlet (用于处理Http的请求)
定义一个类,继承HttpServlet 复写doGet 和 doPost
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(req, resp);
System.out.println("get-------");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
System.out.println("post-------");
}
Servlet生命周期
- init方法
在创建该Servlet实例时,就执行该方法
一个Servlet只会初始化一次,所以init只会执行一次
默认情况下是:初次访问Servlet,才会创建实例
- service方法
只要客户端来了一个请求,就执行这个方法
该方法可以执行多次,一个请求,对应一次service方法的调用
- destroy方法
Servlet销毁的时候,就会执行此方法
1.该项目从tomcat中移除
2.正常关闭tomcat就会执行shutdown
让Servlet创建实例的时间提前
1.默认情况下,只有初次访问Servlet的时候才会执行init()方法。有的时候,我们可能需要在这个方法里面执行一些初始化工作,甚至一些比较耗时的逻辑。
2.在配置的时候,使用load-on-startup元素来制定,给定的数字越小,启动的时机就越早,一般不写负数,从2开始即可。