Day23(Servlet)

本文介绍了Web开发的基础知识,包括Web服务器的作用、Tomcat的环境配置与启动,以及如何创建和部署Web项目。详细讲解了Servlet的概念、生命周期,并阐述了HTTP协议的基本原理和GET、POST请求的区别。通过实例展示了Servlet的创建和使用,以及如何处理HTTP请求。

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

web开发概述

        Web服务器是指驻留于因特网上某种类型计算机的程序

        Web服务器:狭义 服务器指的是一款软件,放文件,可以远程请求访问,服务器就会做出响应。

广义 电脑+软件

        服务器是一个容器(部署项目)是一个连接客户端与程序之间的中间件

环境配置

        1.下载apache-tomcat-9.0.43

        2.安装JDK 

                         设置JAVA_HOME(到根目录例如:D:\Program Files\JDK)

                         设置PATH环境变量

        点击apache-tomcat-9.0.43/bin中的startup.bat启动tomcat服务器(shutdown.bat关闭服务器)

        打开浏览器:输入127.0.0.1:8080(8080是tomcat服务器的端口)会出现tomcat的界面

        解压之后的目录含义:

                bin:存放启动和关闭Tomcat的脚本文件

                conf:存放Tomcat服务器的各种配置文件

                        server.xml:<Connecto port="8080 protocol="HTTP/1.1connectionTimeout="20000" redirectPort="8443"> 8080可以修改,但修改后服务器的端口就变了,以后运行也就要用新的端口号

                lib:存放Tomcat服务器的支撑jar包

                logs:存放Tomcat的日志文件

                temp:存放运行时产生的临时文件

                webapps:部署web项目

                work:Tomcat的工作目录

创建web项目

        创建一个webback项目(back是后端的意思),然后右键有一个Add Framework Support...,点击Web Application,之后项目会出现一个web的目录。

 

        发布web应用到服务器,发布应用有两种方式:

                方式1:手动(太麻烦,每次改变都要重新弄,而且还有重新启动服务器)

                  方式2:自动(要集成tomcat,每写一个项目就要配置一次)        

 

注意:Application context /webback后面的要删掉,一定要等服务器启动完之后在运行浏览器,不然会出错

        创建web项目-->创建一个index.html-->发布项目(自动,集成tomcat)-->启动服务器-->浏览器打开,就能显示index.html写的东西。

Servlet(javaEE)

        Servlet是Server Applet的简称,意思为用Java编写的服务器端的程序。

        它运行在web服务器中,web服务器负责Servlet和客户的通信以及调用Servlet方法,Servlet和客户通信采用“请求/响应”的模式。

        前后端交互过程:

 

Servlet创建和使用

        把tomcat里面lib中的serclet-api.jar复制到web/lib里面

package webback;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
    /*
    * 创建一个类,继承HttpServlet
    * 重写方法
    * */
public class demoServlet extends HttpServlet {
    /*
    * 构造方法
    * */
    public demoServlet() {
        System.out.println("无参构造方法");
    }
    /*
    * 提供服务
    * */
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service");
    }
    /*
    *初始化
    *  */
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init");
    }
    /*
    * 销毁
    * */
    @Override
    public void destroy() {
        System.out.println("destroy");
    }
}

        然后在web.xml中做个配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--
        xml   可扩展标记语言
        web.xml    是web项目的配置文件,在服务器启动时,由服务器读取
    -->
    <!--配置注册Servlet-->
    <servlet>
        <servlet-name>demoServlet</servlet-name>
        <servlet-class>webback.demoServlet</servlet-class>
    </servlet>
    <!--为Servlet配置访问地址-->
   <servlet-mapping>
       <servlet-name>demoServlet</servlet-name>
       <url-pattern>/demoServlet</url-pattern><!--/demoServlet 供外界访问的地址    /表示到项目名   ip+端口/webback//demoServlet-->
   </servlet-mapping>
</web-app>

Servlet声明周期

package webback;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
    /*
    * 创建一个类,继承HttpServlet
    * 重写方法
    * 配置Servlet
    *
    *    Servlet
       接收客户端请求
       调用其他的java程序处理请求
       响应

   Servlet对象生命周期
     servlet对象创建:
          默认 在第一次访问Servlet时,由服务器创建对象,只创建了一次.
          <load-on-startup>0</load-on-startup> 在服务器启动时........
          调用构造方法,只调用一次
     Servlet对象初始化:  init 在servlet对象创建成功后,紧接着会初始化Servlet

      服务阶段 : service  每次请求都会到达service
                 接收
                 处理
                 响应

      销毁阶段: 当servlet对象销毁时(正常关闭服务器,卸载servlet对象), 执行destroy()  只执行一次
    * */
public class demoServlet extends HttpServlet {
    /*
    * 构造方法
    * */
    public demoServlet() {
        System.out.println("无参构造方法");
    }
    /*
    *  提供服务,多次执行
       服务器将请求中的数据封装到HttpServletRequest对象中
       jdbc java只提供了标准接口  具体的实现由不同的数据库开发商实现

       servlet 定义了两个接口HttpServletRequest请求,HttpServletResponse响应
               由tomcat中的类具体实现 org.apache.catalina.connector.RequestFacade
    * */
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //System.out.println("service");
        System.out.println("service"+":"+req);
    }
    /*
    * 初始化,例如获取配置文件中的参数信息
      只执行一次,在构造方法执行完成后执行
    *  */
    @Override
    public void init(ServletConfig config) throws ServletException {
       // System.out.println("init");
        System.out.println("init"+config.getInitParameter("name"));
    }
    /*
    *  销毁: 在servlet对象销毁前,执行一些操作
       例如保存日志
    * */
    @Override
    public void destroy() {
        System.out.println("destroy");
    }
}

HTTP协议

        超文本传输协议 (HyperText Transfer Protocol),用于定义客户端浏览器和服务器之间交换数据的过程。

        HTTP是一个基于TCP/IP通信协议来传递数据。

HTTP请求

        客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个http请求。

        请求包括:

                请求行,请求头,请求体

                请求体代表着浏览器在post请求方式中传递给服务器的参数,请求体中参数以键值形式传递,多个用&链接,服务器接收到后再解析

GET方式和POST方式

package webback;

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

public class loginServlet extends HttpServlet {
    //无参构造    默认存在
    //init      如果我们没有什么可以初始化的内容,可以不重写init, 会调用父类中的init
    //service   请求过来后,会先调用父类中的service,service中根据不同的请求方式,判断调用哪个方法处理
    //destroy   如果销毁前没有什么可以执行的操作,destroy()可以不重写,会调用父类中的destroy.


    /*
       dopost() 处理post方式的http请求
       请求中的数据到达服务器之后,会将数据封装到HttpServletRequest中(实际是一个子类对象)
       通过此对象接收请求中的数据

       响应对象HttpServletResponse
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("dopost");
    }
    /*
       doget()处理get方式的http请求
    */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doget");
    }
}
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
	<!-- 
			http请求
				包含请求行,请求头  由浏览器提交
				请求体: post方式向服务器发送的数据
						   
				http的常用两种请求方式
					get :  超链接, form method="get"
					post: form method="post"
						   
					区别:
						 get
							主要用于从服务器获取数据, 传少量的信息,有限制
							    
						post
							主要用于向服务器发送数据,大量发送,没有限制
				 -->
		<form action="http://127.0.0.1:8080/webback/loginServlet" method="post">
			账号:<input type="text" name="account" /><br/>
			密码:<input type="password" name="password" /><br/>
			<input type="submit" value="登录" />
		</form>
	</body>
</html>

:Get方式与post方式的区别

        Get方式主要是从服务器获取信息;post主要是想服务器提交信息

        Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在请求体中提交。

        GET方式提交的数据大小受限制一般1kb(不同浏览器也会有不同);而POST则没有此限制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值