• 02 servlet基础 生命周期 tomcat web.xml


    新建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
     
     
     
  • 相关阅读:
    vue-element-admin中table分页改为前台处理
    vue项目如何部署到Tomcat中
    vuex之modules 热加载(hot update)
    持续学习
    css比较特殊选择器汇总(持续更新)
    关于伪元素before after总结
    ajax入门-实现省份下拉框
    super和this关键字的详解
    监听器
    当浏览器被关闭时,session是否被关闭?
  • 原文地址:https://www.cnblogs.com/aknife/p/10840028.html
Copyright © 2020-2023  润新知