Tomcat与Servlet

本文介绍了Web基础知识,包括web资源、服务器以及网络访问三要素。接着深入探讨了Tomcat,包括Apache基金会背景、Tomcat的安装与卸载、集成IDEA创建Tomcat Web项目。最后,文章讲解了Servlet的定义、生命周期、以及在Tomcat中如何运行Servlet,包括Servlet的体系结构和常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.web知识点
1.1web资源

​ 静态资源:不会随着时间的改变而改变

​ 动态资源:随时间变化而变化 比如servlet

​ 静态和动态的连接: 同步连接 异步连接 通过前台浏览器发送请求给服务器,服务器响应返回数据给浏览器

1.2 服务器

​ 用户=========>通过网络========>(静态资源=====动态资源)

1.3web资源和服务器的关系

​ 输入资源地址去哪里找?

​ 资源存放在服务器

访问web资源:浏览器===》访问地址==》服务器===》要访问的资源==》处理返回==》浏览器解析==》展示页面

服务器:应用软件安装在配置比较高的主机,

1.4网络访问三要素

​ ① http(https相对安全加密了 HyperText Transfer Protocol )协议:浏览器提交请求数据需要遵循http协议,HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)

​ ② 域名(domain):服务器的唯一标识,因为域名本质是ip地址 ,在网络中 ip 地址是唯一的 测试以管理员身份打开dos命令窗口ipconfig/all

​ ③ 端口(port):就是个整数,用来区分硬件服务器上面相同的多个软件服务器jdbc:mysql://localhost:3306(如果电脑中下载了2个数据库,3306就会冲突,另一个端口3308来区分)

二、Tomcat
1.Apache介绍

​ https://apache.org/非盈利性组织全球最大的开源基金会,明星软件产品:Tomcathttps://tomcat.apache.org/

2.web服务器产品

weblogic:大型的web服务器软件 oracle

webShere:IBM公司

Tomcat:Apache公司

3.Tomcat 安装和卸载

​ https://tomcat.apache.org/地址 Download ==>which version 看一下下载的tomcat 和jdk对应的版本

​ Tomcat 运行==》path:JAVA_HOME===>jdk路径

​ tomcat 运行常见的问题及解决方案:

​ ① JAVA_HOME环境变量配置有问题,去系统=》高级设置=》环境变量中=》配置对应的JAVA_HOME

​ ②:正常启动,输入地址https://localhost:8080,无法访问,因为没有配置https ,写http

​ ③ 启动一个tomcat ,又启动一个就会产生端口占用 如果发生错误=》log 文件夹下=》看一下刚刚报错时间段的

Caused by: java.net.BindException: Address already in use: bind at sun.nio.ch.Net.bind0(Native Method)

解决:conf 目录下找到server.xml 修改port ,记得管理员权限修改,修改后再重新启动当前的tomcat

4.集成工具idea创建tomcat 的web项目

​ 新建一个java项目,然后点击右键add framework support 点击web application ==》ok

​ 配置tomcat 服务器的环境 ,add configiture =>点击左上角+号 选择Tomcat Server=》填写我们的Tomcat的服务配置信息,application server 是Tomcat 的根目录,注意端口号如果重复了 可以更改,另外在deployment部署servlet.api.jar 包,将aplication context填写外面的项目名

三、Servlet
3.1 定义:

servlet 是运行在 Web 服务器中的小型 Java 程序。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。

3.2 入门程序步骤
  • idea 创建web项目

  • src 创建cn.tedu.web.Demoservlet 实现接口servlet 并重写方法

  • 在自定义类里配置访问路径,比如:/demo01

  • 测试 http://localhost:8080/项目名/访问的资源路径

  • 注意事项:导入servlet.api.jar包

    3.3servlet生命周期

    intit()初始化 servlet 对象

    service() 响应数据给浏览器

    destroy()销毁servlet 对象

/**
 * 生命周期方法: 作用接收浏览器请求,响应数据给浏览器
 * @param servletRequest: 请求对象,处理请求数据
 * @param servletResponse: 响应对象, 处理响应数据
 * @throws ServletException: 异常信息对象
 * @throws IOException
 */
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    System.out.println("service method ----");
}
/**
 * 生命周期方法: 创建servlet对象,执行init()方法
 * @param servletConfig
 * @throws ServletException
 */
public void init(ServletConfig servletConfig) throws ServletException {
    System.out.println("init servlet object--1");
}
/**
 * 生命周期方法: 在servlet对象销毁以后,执行该方法
 */
public void destroy() {
    System.out.println("destroy method--------");
}
/**
	获取servletConfig配置类对象,了解
*/
@Override
public ServletConfig getServletConfig() {
    return null;
}
/**
	获取servlet的信息,了解
	比如: servlet的访问路径,servlet的名称
*/
public String getServletInfo() {
    return null;
}
}
3.4 Tomcat 为什么会弹出浏览器?

在tomcat =>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>
3.5 servlet 体系结构
  • 顶层接口 Servlet

  • GenericServlet 抽象子类

  • HttpServlet 抽象类继承GenericServlet

    开发者定义一个类,实现s接口需要重写所有的方法,最好的方式就是继承HttpServlet 的抽象类

    1.自定义类继承=》HttServlet

    ​ 重写service方法的代码块

    @WebServlet(urlPatterns="/demo05")
    public class Demo4Servlet extends HttpServlet {
        /**
         * 服务方法:浏览器每次访问都会执行该方法
         * @param req 请求对象
         * @param resp  响应对象
         * @throws ServletException
         * @throws IOException
         */
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //        super.service(req, resp);
            System.out.println("browser请求");
            resp.getWriter().write("你好啊!!hello ");
        }
    
    }
    

    ​ 总结:service 方法:get和post都能接收 存在很多问题

    ​ get请求提交中文的处理和post 请求提交中文处理不一样,而service 不好判断浏览器是get还是post 所以不好处理请求的代码

    2.在实际开发中 重写doGet 和doPost 方法来处理

    ​ ① doGet()接受浏览器发送的get请求

    ​ ② doPost()接受浏览器发送的post请求

    public class Demo5HttpS extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            super.doGet(req, resp);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            super.doPost(req, resp);
        }
    }
    

    3.6 热部署热加载

    ​ 如果电脑配置高,热部署速度会快一些

    z总结:

    ​ ① 运行在web服务器的java动态资源 用来接收浏览器的请求,响应数据给浏览器

    ​ ②自定义servlet 类

    ​ 方式一:自定义类实现servlet 需重写接口所有的方法

    ​ 方式二:自定义类继承GenericServlet ,不推荐,不清楚是不是浏览器发送的请求

    ​ 方式三:自定义类继承HttpServlet 重写对应请求方式的方法如:doGet() 、doPost()、…

    ​ ③ 常见请求状态码:

    ​ 404 找不到路径,路径写错

    ​ 500 代码出异常

    ​ 405 请求方式不支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值