IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> javaee之tomcat与servlet -> 正文阅读

[Java知识库]javaee之tomcat与servlet

话不多说,直接上图:

上面其实一般都不用,但是必须了解,下面说一下,Tomcat里面项目的目录结构

这个就是会放到Tomcat里面的东西。

这里会产生一个疑问,就是,有些小伙伴说,我用IDEA创建了JAVAEE项目,但是没有在Tomcat下面webapps看到我的项目目录啊。

那么这里就来说一说:

然后我们随便打开一个项目,进入到相应的一个项目里面:

C:\Users\Administrator\.IntelliJIdea2019.2\system\tomcat\Tomcat_8_5_31_tomcat1\conf\Catalina\localhost

里面有一个xml 文档,看到这,是不是就想到了,之前说Tomcat项目配置的时候,我们可以在/conf/catalina/localhost配置一个xml文档,然后来解析我们的程序。

我们点开这个tomcat1_war.xml

他其实就是给我们配了一个虚拟目录,真实的项目地址在D:\java\tomcat1.....这个位置

?而用户访问的就是虚拟目录下面的内容:

OK,大致就是这样,那么现在出现了一个问题,IDEA每次为我创建一个javaee项目的时候,默认会在C盘创建项目配置路径,我想修改一下放到E盘?

直接去改动IDEA安装路径下面的一个配置文件

把下面内容进行改动

?

改动成我们自己设置的项目配置目录

?最后记得把之前的在c盘的.IntelliJIdea2019.2的项目目录拷贝过去,然后重启IEDA,加载原来的项目过来即可

?下面来说一下Servlet

?话不多说,直接上代码:

ServletDemo1

package web.servlet;

import javax.servlet.*;
import java.io.IOException;

public class ServletDemo1 implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("hello Servlet");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

当我们实现了Servlet,我们必须配置web.xml核心配置文件:

?上面就是一个java程序的标准配置文件。

首先去找

当找到了上面,然后再去找

?

这个全类名

然后Tomcat就会将字节码加载到内存,然后创建其对象,调用里面的service方法

上面每次写一个java程序就去配置一个web.xml其实非常麻烦,后面我们直接用注解处理

这个是servlet3.0之后的版本

先来说一下Servlet的生命周期:

上面有五个方法:

下面再来说一下Servlet这个对象。其实是存在多个,每一个Java文件过来,都会产生一个对象,但是访同一资源的java文件,都会调用同一个Servlet对象?,也就是说任何一个Servlet都是单例这样来设计的。

这个位置打印了一个this对象的地址?

然后我们去查看一下:

每个对象内存地址都是一样的,也就是指向同一片内存空间。?

?下面说,用注解来配置文件映射名字

?看一下@WebServlet这个注解类

里面有一个value属性,我们就可以通过value来赋值映射文件名,因为是value,所以可以省略

?Servlet是一个接口,那么系统就会帮我们做一些操作,方便我们简写程序

?如果一个普通类去实现Servlet接口,就必须把里面所有方法全部实现,所以服务器帮我们做了一件事儿,就是我把一些无关紧要的方法全部做了空实现,你只需要去继承我的类,然后复写Service方法就可以了。

比如这个类:

但是这样做还不够好,我们在开发中用的也不多,对于我们客户端表单的请求数据,我们会拿到service()方法里面进行处理,我们一般采用post或者get方法来获取数据,因此我们在service中一个大致操作就是判断表单提交方式,然后根据不同的方式来处理数据。因此在Servlet中,它又给我们提供了一个类继承GenericServlet,这个类就不用在判断数据提交的方式,而是给了我们两个方法doGet()与doPost(),然后service()方法又调用了这两个方法,所以,我们只需要重写这两个方法的一个就行。

大致看一下源代码:

?

上面基本就是这样。

直接上个源代码:

package web.request;

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

@WebServlet("/ServletDemo1")
public class ServletDemo1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //打印一些通过get方法获取的相关信息
        String res1= request.getMethod();
        System.out.println(res1);
        String  res2 = request.getContextPath();
        System.out.println(res2);
        String res3 = request.getServletPath();
        System.out.println(res3);
        String res4 = request.getQueryString();
        System.out.println(res4);
        String res5 = request.getRequestURI();
        System.out.println(res5);
        StringBuffer res6 = request.getRequestURL();//整个请求链接都可以拿出来
        System.out.println(res6);

        //可以获取客户主机的ip
        String ip = request.getRemoteAddr();
        System.out.println(ip);

        System.out.println("-------------");
        //下面来获取请求头的数据
    }
}

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 21:59:56  更:2022-03-11 22:03:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:39:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码