Web项目的目录结构
每一个Web项目,必须要有如下目录结构
Web项目的打包和发布
打包项目
在idea中往tomcat上发布
Servlet的小结
Servlet是运行的服务器上的Java程序,专门用来处理请求和响应的。 Servlet本质上是接口,该接口中定义了一些抽象方法(生命周期方法)。 我们想写一个运行在服务器上的程序,就必须实现Servlet接口,复写所有的抽象方法。
Servlet生命周期方法解释
Servlet体系结构
每次写一个Servlet都要复写生命周期的所有方法,比较麻烦。 Servlet提供了一个实现类GenericServlet,它把其他方法已经复习了,我们继承GenericServlet只需要复写service就可以了。
HttpServlet类
如果每次都是继承GenericServlet类,在servlce方法中,不能区分直接是Get请求还是Post请求。需要我们自己求请求方法进行处理,也比较麻烦,所以又提供了一个子类HttpServlet类。
HttpServlet类中会根据不同的请求方式,提供不同的方法,我们只需要复写对应的方法即可。
Servlet映射配置
Servlet是Web项目中的动态资源(Servlet字节码),访问过程如下
第一步:通过浏览器的ip地址找服务端主机
第二步:通过8080端口号找到tomcat服务器软件
第三步:通过虚拟机路径找到tomcat服务器上发布的web项目包
第四步:通过web.xml
中 <url-pattern>
找到Servlet对应的字节码
第五步:Tomcat会根据Servlet的字节码,自动的执行servcie方法
注意:每一个Servlet都需要有一个下面的配置,否则会找不到资源
<servlet>
<servlet-name>ServletDemo1</servlet-name>
<servlet-class>com.itheima.servlet.ServletDemo1</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo1</servlet-name>
<url-pattern>/servletDemo1</url-pattern>
</servlet-mapping>
同一个Servlet多映射处理
<!--前面必须是servletDemo1,后面是什么无所谓-->
<url-pattern>/servletDemo1/*</url-pattern>
<!--前面是什么无索引,访问路径的后缀必须是.do-->
<url-pattern>*.do</url-pattern>
Servlet的加载时机
每个Servlet默认是在第一次访问的时候被创建,但是也可以通过web.xml
配置让其在服务器启动的时候创建。 配置如下
<servlet>
<servlet-name>ServletDemo1</servlet-name>
<servlet-class>com.itheima.servlet.ServletDemo1</servlet-class>
<!--数字越小,优先级越高-->
<load-on-startup>1</load-on-startup>
</servlet>
ServletConfig类
每一个Servlet都对应有一个ServletConfig配置对象,可以在Servlet创建时去初始化一些参数。
在web.xml
中配置方式如下
<!--配置ServletConfigDemo访问路径-->
<servlet>
<servlet-name>ServletConfigDemo</servlet-name>
<servlet-class>com.itheima.servletconfig.ServletConfigDemo</servlet-class>
<!--每一个init-param标签,就表示一个键值对-->
<init-param>
<param-name>charset</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>desc</param-name>
<param-value>我是一个ServletConfig的描述信息</param-value>
</init-param>
</servlet>
可以在Servlet类去获取ServletConfig对象,通过它的方法获取配置参数。