Servlet3.0后支持 注解配置 GenericServlet HttpServlet
安装tomcat 进入idea 编辑结构选择tomcat Servlet 然后即可创建 web项目
application context 成为 虚拟目录 就是 访问时 在端口后需要加的路径 然后再是url匹配
80端口可以不写 默认是http 端口
1.创建一个servlet app 后 2.在src下创建一个类 实现 Servlet
public class serveletDemo01 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException 初始化方法只执行一次创建Servlet
@Override
public void service() throws ServletException, IOException { 客服端每次访问执行 处理 业务逻辑
System.out.println("Hello world !");}
@Override
public void destroy() Servlet 关闭前执行一次
2.配置文件
<servlet>
<servlet-name>demo01</servlet-name>
<servlet-class>servelet.serveletDemo01</servlet-class>
<load-on-startup>-1</load-on-startup> 默认是-1
</servlet>
<servlet-mapping>
<servlet-name>demo01</servlet-name>
<url-pattern>/demo01</url-pattern>
</servlet-mapping>
3.执行原理
1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
2. 查找web.xml文件,是否有对应的<url-pattern>标签体内容。 如果有,则在找到对应的<servlet-class>全类名
4. tomcat会将字节码文件加载进内存,并且创建其对象 , 调用其方法
4.配置init 执行时间 load-on- startup 默认配置 -1在 第一次访问时 执行 0-10为在服务启动时执行
Servlet3.0后支持 注解配置
创建Java enterprise 时 javaee选择 6 以上 web application 勾选后 去掉创建 web.xml配置文件
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebServlet {
String name() default "";
String[] value() default {}; value一般是注解中最重要的这里就是url 代表urlPatterns()属性配置
String[] urlPatterns() default {}; 相当于<url-pattern>
int loadOnStartup() default -1;...} 相当于<load-on-startup>
@WebServlet(urlPatterns = {"/demo"})
public class ServletDemo implements Servlet {
urlPatterns = {"/demo"} 数组只有一个值时可以简写 urlPatterns = "/demo" 而value默认指的是 url 所有可以写为
value = "/demo" 而value 只有一个值是 又可以简写 为 "/demo"
4.IDEA与tomcat的相关配置
1. IDEA会为每一个tomcat部署的项目单独建立一份配置文件
* 查看控制台的log:Using CATALINA_BASE: "C:\Users\fqy\.IntelliJIdea2018.1\system\tomcat\_itcast"
2. 工作空间项目 和 tomcat部署的web项目
* tomcat真正访问的是“tomcat部署的web项目”,"tomcat部署的web项目"对应着"工作空间项目" 的web目录下的所有资源
* WEB-INF目录下的资源不能被浏览器直接访问。
3. 断点调试:使用"小虫子"启动 dubug 启动
GenericServlet
是Servlet 的子类 抽象类 可以只重写一个方法就可以了
public class GenericServletDemo extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("putong de ");
}}
HttpServlet
是GenericServlet的 子类 抽象类 1. 定义类继承HttpServlet 2. 复写doGet/doPost方法 就可以了
urlpartten:Servlet访问路径
1. 一个Servlet可以定义多个访问路径 : @WebServlet({"/d4","/dd4","/ddd4"}) 支持正则
2. 路径定义规则: 1. /xxx:路径匹配 2. /xxx/xxx:多层路径,目录结构 3. *.do:扩展名匹配 不能写/ 报错