02 servlet基础 生命周期 tomcat web.xml
程序员文章站
2022-04-19 12:42:41
新建web项目 – new Web Project – 选择:javaee 5.0 建包 – com.gzsxt.wang 新建class:FirstServlet – 继承:HttpServlet(javax.servlet.http.HttpServlet) 重写service方法(两个serv ......
新建web项目
– new web project
– 选择:javaee 5.0
建包
– com.gzsxt.wang
新建class:firstservlet
– 继承:httpservlet(javax.servlet.http.httpservlet)
重写service方法(两个service方法中选择带 httpservletrequest、httpservletresponse参数 的)
• 在web.xml中配置写好的servlet
– 配置servlet作用有两个:
1. 让服务器知道这个servlet类的存在。
2. 让url和servlet匹配,从而请求服务器上的servlet
<servlet> <servlet-name>first</servlet-name> <servlet-class>com.gzsxt.wang.firstservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>first</servlet-name> <url-pattern>/111</url-pattern> </servlet-mapping>
安装和启动tomcat服务器
• 将tomcat压缩包解压。
• 设置环境变量:
- – java_home设置
• 进入tomcat子目录bin,点击:startup.bat,启动tomcat.
• 访问:http://localhost:8080/ – 如果出现tomcat主页,则安装成功。
• 手动发布项目:
- – 在tomcat子目录:webapps中新建一个文件夹:abc
- – 将web项目的webroot目录中所有的内容copy到abc中.
- – 重启tomcat
• 访问刚刚写好的servlet:
- – http://localhost:8080/abc/one
- – http://127.0.0.1:8080/abc/one
- – http://自己机器的ip:8080/abc/one
servlet 生命周期
1.载入并初始化
调用init()方法,只执行一次
2.运行
当用户请求该servlet时,服务器创建一个新的线程,调用servlet的service方法-->父类的service方法-->父类的dopost/父类doget方法
1)当执行父类的doget/dopost时,会报405错误。解决办法:在子类中重写doget/dopost
2)尽量不要在servlet中使用成员变量
3.销毁
在服务器关闭之前,调用destroy()方法,只执行一次
1)部署项目
1)myeclipse会将java代码编译过后的class文件,放在webroot/web-inf/classes文件夹下
2)只要将数据放在webapps的某个目录(项目名)下,就可以通过浏览器访问了!
2)启动服务器
1)运行bin/startup.bat
3)集成tomcat
1)将tomcat配置在myeclipse中:window-->prefrences-->输入“server”,在列表找tomcat-->将tomcat 8.x改为enabled --> 配置tomcat home directory,在window找到tomcat安装路径即可 -->ok
2)将项目部署在tomcat中:右键tomcat 8.x -->add deployment-->在project选择要部署的项目名-->finish
3)启动:右键tomcat 8.x --> run server
1.<welcome-file-list> 欢迎页的列表
<welcome-file> 欢迎页
表示,当用户访问了一个目录,而非一个html页面(或其他)时,会默认来welcome中寻找欢迎页来显示,如果没有该欢迎页时,会显示404页面或webroot目录的列表(取决于listings的值)
2.<load-on-startup> servlet启动时加载
如果在<servlet>标签下配置了该标签,则表示servlet将会在服务器启动时,加载servlet,并调用servlet的init()方法
/* * servlet 生命周期 1.载入并初始化 init()方法,只执行一次 2.运行 每当用户发出一次请求时,调用service()方法。 * 1)当用户请求时 * ,服务器会创建一个线程,来调用servlet的service-->父类service-->父类的doget/dopost方法:报405错 * 解决办法:重写dopost方法或doget方法 * 2)servlet是单例(设计模式之单例模式)的,节约内存。不需要每次请求创建对象去处理。 * * 3.销毁 destroy()方法,只执行一次 */ int number = 0; @override public void init() throws servletexception { system.out.println("servlet初始化!"); } @override protected void doget(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { system.out.println("子类的doget方法"); } @override protected void dopost(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { system.out.println("子类的dopost方法"); } /* * @override protected void service(httpservletrequest req, * httpservletresponse resp) throws servletexception, ioexception { * system.out.println("servlet运行了!!!!"); number++; * system.out.println(number); * * //super.service(req, resp); //调用父类的service方法 } */ @override public void destroy() { system.out.println("servlet销毁"); }
子类一旦重写父类的方法之后只会调用子类的方法 ,而不会调用父类的方法
默认的欢迎文件列表
apache-tom-->conf-->web.xml打开底部设置
<welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
在启动时加载
<load-on-startup>1</load-on-startup>
数字小的先被加载
为负数或者其他字符将不被加载,直到被调用时--懒汉式
去除aaa
<welcome-file-list> <welcome-file>aaa</welcome-file> </welcome-file-list>
去除first_web
apache-tomcat -->webapps-->修改first_web文件名为root
去除8080
apache-tom-->conf-->server.xml
<connector port="8080" protocol="http/1.1" connectiontimeout="20000" redirectport="8443" />
修改port为80
上一篇: 理解Express 中间件
下一篇: 高通CSR8675蓝牙音频芯片介绍
推荐阅读
-
Spring 框架基础(02):Bean的生命周期,作用域,装配总结
-
Servlet框架基础和生命周期(结合源码)、destroy()的思考
-
JavaEE基础(02):Servlet核心API用法详解
-
02 servlet基础 生命周期 tomcat web.xml
-
JavaEE基础(01):Servlet实现方式,生命周期执行过程
-
Tomcat基础 通过MANIFEST.MF,查看JSP Servlet EL的版本信息
-
Tomcat 安装和servlet配置基础
-
Spring 框架基础(02):Bean的生命周期,作用域,装配总结
-
【tomcat】servlet原理及其生命周期
-
Servlet框架基础和生命周期(结合源码)、destroy()的思考