Tomcat和Servlet入门小结
Tomcat入门
-
启动:
-
- 进入bin目录,双击startup.bat,运行该文件
- 访问浏览器,输入:http://localhost:8080 访问自己;
? 输入:http://别人的ip:8080 访问别人(8080为Tomcat的端口号)
-
-
启动时可能遇到的问题:
-
- 黑窗口一闪而过:
*原因:没有正确配置JAVA_HOME变量;
- 启动报错:
*暴力解决:在cmd中输入netstat -ano找到占用端口号的对应进程并杀死
*在Tomcat的config\server.xml下找到
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8445" />
*一般将端口号修改为80(浏览器默认端口号)
? *好处:使用浏览器,在访问时就不用输入端口号了
-
-
关闭:
- 正常关闭:
- bin\shutdow.bat
- ctrl+c
- 强制关闭:
*点击启动窗口的 x
- 正常关闭:
-
配置:
- 部署项目的方式:
- 直接将项目放到webapps目录下即可。
*项目的访问路径(即保存项目的文件名)就是浏览器访问的虚拟目录
*简化部署:可以将项目打包成一个war包,再将war包放置在webapps目录下。
? *war包会自动解压缩
- 配置conf\server.xml文件:
找到 标签体,在里面配置
<Context docBase="C:\项目存放的路径" path="/虚拟目录" />
? *优点:不用将项目部署在webapps下了,可以放置在任何位置
? *缺点:需要修改server.xml文件,可能造成破坏
- 在config\Catalina\localhost下创建任意名称的xml文件,在文件中编写
<Context docBase="C:\项目存放的位置"
? *虚拟路径就是此xml文件的名称
? *优点:相比于第二种配置方法,可以避免破坏server.xml文件
- 直接将项目放到webapps目录下即可。
- 静态项目和动态项目:
- 目录结构:
- --项目的根目录(存放静态项目)
- --WEB-INF目录(此目录下的项目不能被浏览器直接访问)
- --web.xml: web项目的核心配置文件
- --classes目录:放置字节码文件的目录
- --lib目录: 放置依赖的jar包
- --WEB-INF目录(此目录下的项目不能被浏览器直接访问)
- --项目的根目录(存放静态项目)
- 目录结构:
- 部署项目的方式:
Servlet入门
-
概念:运行在服务端的小程序
? *Servlet就是一个接口,定义了Java类被浏览器访问到(Tomcat识别)的规则。
-
Java类对Servlet接口的实现:
- 创建一个JavaEE项目
- 定义一个Java类,实现(implement)Servlet接口
- 复习Servlet接口中的抽象方法(Servlet的生命周期方法)
- 配置Servlet
*在web.xml中进行配置:
<servlet> <servlet-name>自定义名称</servlet-name> <servlet-class>对应类的全类名</servlet-class> </servlet> <servlet-mapping> <servlet-name>自定义的名称</servlet-name> <url-pattern>访问的资源路径</url-pattern> </servlet-mapping>
-
Servlet执行原理:
- 当服务器接收到客户端浏览器的请求后,会解析URL路径,访问获取的Servlet的资源路径
- 查找web.xml文件,是否有对应的 标签体内容。
- 如果有,则找到对应的 全类名
- Tomcat会将字节码文件加载进内存,并且创建对象
- 调用其方法
-
Servlet中的生命周期方法
- init方法:
*在Servlet被创建时执行,并只执行一次。
*Servlet什么时候被执行?
? *默认情况下,第一次被访问时,Servlet被创建
? *可以配置创建Sevlet的时机:
? 在web.xml的 标签中配置
<load-on-startup>负数或正数</load-on-startup>
? *如果是负数,则Servlet在被访问时创建
? *如果时正数,则Servlet在服务器(Tomcat)启动时创建
?
- service方法:
*每次访问Servlet时,便会别调用一次
- destory方法:
*Servlet被销毁时执行,并且只执行一次
*只有当服务器正常关闭时,才会执行
*destory方法在Servlet被销毁之前执行,相当于释放资源,而init相当于加载资源
- init方法:
-
Servlet 3.0:
- 好处:支持直接配置。可以不需要web.xml了
- 步骤:
- 创建一个JavaEE项目,选择Servlet的版本为3.0以上,可以不创建web.xml
- 定义一个Java类,实现Servlet接口
- 复写方法
- 在类上使用@WebServlet注解,进行配置
*@WebServlet("资源路径")
原文地址:https://www.cnblogs.com/lilyen/p/12681281.html