servlet入门

1、http://localhost:8080/demo2_war_exploded/hello-aaaaa,通过该网址访问时,首先通过/localhost:8080找到主机和应用程序,通过demo2_war_exploded找到项目的资源目录,通过hello-aaaaa找到具体的提供资源的类,并将其字节码文件加载进内存,通过反射使用使用newinstance创建对象,并依次invoke该对象的方法:init和doGet

java 复制代码
package com.example.demo2.servlet;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "helloaaaaa", value = "/hello-aaaaa")
public class myservice extends HttpServlet {


    private String message;

    public void init() {
        message = "Hello aaaaaa!";
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html");

        // Hello
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>" + message + "</h1>");
        out.println("</body></html>");
        System.out.println("执行了");
    }

    public void destroy() {
    }
}

2、servlet生命周期

java 复制代码
package com.example.demo2.servlet;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
value:表示对应的资源url路径,简化写法
@WebServlet("/myservice1")
*/
@WebServlet(name="myservice1",value = "/myservice1")
public class myservice1 extends HttpServlet {

    /*
    * 在servlet被创建时执行
    * 只会执行一次
    * 什么时候被创建,默认情况下,第一次被访问时,servlet被创建
    * 在内存中,servlet只存在一个对象,即单例的,但是可能存在安全问题,多线程(多个用户)同时访问时可能存在安全问题,尽量不要在servlet中定义成员变量,而是在方法中定义,每次方法进栈,都会重新创建新的变量,如果一定要定义成员变量,则可以设置为常量且不能修改
    * */
    public void init(){
        System.out.println("init......");
    }

    /*
    * 提供服务的方法
    * 每一次servlet被访问时都会执行一次
    * */
    public void service(HttpServletRequest request, HttpServletResponse response){
        System.out.println("service......");
    }

    /*
    * 在servlet被杀死之前执行,一般用于销毁资源
    * 在服务器被正常关闭时执行,只执行一次
    * */
    public void destroy(){
        System.out.println("destroy......");
    }
}

3、idea和tomcat

idea会为每一个项目创建一套配置i文件,在控制台打印中有:Using CATALINA_BASE:里面是项目的tomcat配置的目录,配置可以通过idea的图形化页面修改

项目在两个地方存储,一个是工作空间存储,一个是tomcat的web项目存储,二者一一对应

webinfo目录下的资源,不能直接被浏览器访问

断点调试,使用小虫子图标启动tomcat

相关推荐
sbjdhjd11 天前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins
ywl47081208712 天前
springSecurity+jwt,简单版demo
java·前端·servlet
飞天狗11112 天前
零基础JavaWeb入门——第五课第一小节:九大内置对象 · 第1个:request(请求对象)
java·开发语言·前端·后端·servlet
飞天狗11113 天前
零基础JavaWeb入门——第4课:表单处理 —— 浏览器怎么把数据发给服务器
java·开发语言·前端·后端·servlet
未若君雅裁15 天前
责任链模式详解:从Servlet过滤器到订单创建流程
servlet·责任链模式
逢君学术论文AI写作15 天前
Java第22课:Servlet获取请求参数+POST请求+表单交互
java·servlet·ai写作
逢君学术论文AI写作15 天前
Java第21课:JavaWeb入门——Tomcat+第一个Servlet
java·servlet·tomcat
就叫_这个吧15 天前
Java使用tomcat+servlet+filter实现简单的登录功能,需先登录再进行页面数据管理操作
java·开发语言·servlet·tomcat·jsp·filter
wangyadong31716 天前
rancher 安装jenkins 。国内镜像太头疼
servlet·jenkins·rancher
就叫_这个吧19 天前
IDEA中Javaweb项目创建+servlet,实现简单的信息录入获取
java·servlet·intellij-idea·web