Javaweb(一)

Tomcat和Servlet

01 Web服务器介绍

  • 1.服务器:安装了服务器软件的计算机。

  • 2.服务器软件:接收用户的请求,处理请求,做出响应

  • 3.在web服务器软件中,可以部署web项目,让用户浏览器来访问这些项目。

02 Web服务器软件介绍

常见的java相关的web服务器软件有以下几个

  • 1.weblogic:oracle公司,大型的javaEE服务器,支持所有的JavaEE规范,收费的。

  • 2.websphere:IBM公司,大型的javaEE服务器,支持所有的ovaTE规范,收费的。

  • 3.JBOSS:JBOSS公司,大型的javaEE服务器,支持所有的JavaIL规范,收费的。

  • 4.Tomcat:Apache基金组织,中小型的javaEE服务器,开源的,免费的。

03 Tomcat

  • 1.启动:双击bin目录下的startup.bat;或通过浏览器输入 http://localhost:8080 访问,如果打开以下页面代表产成功。

  • http://localhost:8080是本地电脑的服务器域名,127.0.0.1就是通常说的ip地址,通过127.0.0.1也可以正常访问,在C:\Windows\System32\Drivers\etc下的hosts文件中,做了映射,让localhost指向了127.0.0.1,所以端口号8080是可以修改的)

  • Tomcat启动可能出现的问题:

    • 1.黑窗口一闪而过:正确配置JAVA_HOME环境变量。

    • 2.启动报错,端口被占用:关闭占用的8080端口的程序,或者到conf/server.xml里面修改端口号。

  • 2.Tomcat的关闭:直接关闭窗口或者双击bin目录下的shutdown.bat

04 Servlet

  • 概念:Tomcat里面配置资源的类

  • 特点:可以通过(本地端口+Tomcat根目录+Servlet类设置的类)来访问

创建类实现Servlet接口
  • 流程:创建类MyServlet01实现Servlet接口,重写5个方法。 一个Servlet实例就是一个功能,不同的功能我们可以创建不同的Servlet实现。

public class MyServlet01 implements Servlet {
  // 销毁:当Servlet实例被销毁时,自动调用的方法。
    @Override
    public void destroy() {
        System.out.println("MyServlet01 destroy 销毁了");
    }
  // 获取Servlet实例配置信息。
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
  // 获取Servlet实例信息。
    @Override
    public String getServletInfo() {
        return null;
    }
  // Servlet实例被创建时自动执行的方法。
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("MyServlet01 init 初始化了");
    }
  // 服务:请求服务,匹配到当前Servlet实例执行的方法。
    @Override
    public void service(ServletRequest req, ServletResponse res) throws
            ServletException, IOException {
        System.out.println("MyServlet01 service");
    }
}
  • init(初始化)和service,都是比较常用的功能

配置web.xml
  • 实现路径与Servlet实例的绑定。

  • 当我们发起请求的时候,Tomcat根据请求路径找到对应的Servlet实例,然后调用里面的service方法

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Web</display-name>
 <!--
servlet标签:配置Servlet实例名字和实例创建类。
servlet-name标签:Servlet实例名字,自己取的。
servlet-class标签:创建实例的前提是要有对应的类,配置类的路径。
 -->
 <servlet>
<servlet-name>servlet01</servlet-name>
<servlet-class>com.test.web.MyServlet01</servlet-class>
 </servlet>
 <!--
servlet-mapping标签:绑定对应的servlet标签、设置请求路径。
servlet-name标签:用于绑定servlet标签,找到名字一样的servlet,它们就是一对的。
url-pattern标签:配置请求路径,客户端就按这个路径请求,触发对应的Servlet实例中的service
方法。
 -->
 <servlet-mapping>
<servlet-name>servlet01</servlet-name>
<url-pattern>/a</url-pattern>
 </servlet-mapping>
 
</web-app>
测试
解析执行过程
  • 1.当服务器接收到客户端浏览器的请求后,会解析URL路径,获取访问的servlet的资源路径。

  • 2.查找web.xml文件,判断是否有对应的标签体内容。

  • 3.如果有,则再找对应的类名。

  • 4.Tomcat会将字节码文件加进内存,并且创建对应的对象。

  • 5.调用对象方法

Servlet生命周期
  • 1.创建:调用init,只执行一次 默认情况下,第一次被访问的时候,servlet被创建。 也可以配置执行servlet的创建时机,在内配置。 第一次被访问时创建: 的值为负数。 在服务器启动后创建: 的值为正数或者0。 init只执行一次,说明servlet是一个单例对象。

  • 2.提供服务:执行service方法,执行多次 每次访问servlet时,service都会执行一次。

  • 3.销毁:执行destroy方法,只执行一次 服务正常关闭时,才会执行destroy方法。 destroy在servlet销毁之前执行,用于释放资源

Servlet注解
  • 使用web.xml配置文件实现路径绑定Servlet实例是一种方式,还有一种方式就是使用注解实现。 格式:@WebServlet(value = “资源路径”),类内部实现方法无须重写

// @WebServlet(value = "/b") // 客户端请求/b路径就会执行MyServlet里面的service方法。
// @WebServlet("/b") // 当我们只有一个值并且是赋值给value属性的时候,value = 可以省略不
写。即只有一个值的时候默认是赋值给value属性。
@WebServlet(value = "/b", name = "myservlet") // 当注解有多个属性的时候,键值必须写全,
不能省略。
public class MyServlet implements Servlet {
    System.out.println("MyServlet success");
}
urlPatterns配置(注解配置)
@WebServlet({"/demo1", "/demo2", ...}) // 配置多个请求路径对应一个Servlet
@WebServlet("/user/demo1") // 多级路径
@WebServlet("/user/*") // 匹配以user开头形式的请求
@WebServlet("/*") // 匹配所有的请求
@WebServlet("/*.do") // 匹配.do结尾的请求
HttpServlet
  • HttpServlet是Servlet接口的一个实现类,是一个抽象类。它在原有 Servlet 接口上添加了一些与 HTTP协议处理方法,它比 Servlet 接口的功能更为强大。因此我们实现接口服务通常会继承(extends)这个类,而避免直接去实现Servlet接口。

  • 创建类继承HttpServlet,重写doGet方法。浏览器访问对应的路径,指定对应HttpServlet的doGet方法。

05 GET请求与POST请求

GET请求
  • 1.GET 请求有长度限制。

  • 2.GET一般用于请求数据。

POST请求
  • 1.POST 请求对数据长度没有要求。

  • 2.POST请求一般用来做数据添加、修改或删除。

  • 3.POST请求参数是放在请求体中

区别
  • 1.post比get安全 ,因为post参数在请求体中。get参数在url上面。

  • 2.get传输速度比post快 根据传参决定的。(post通过请求体传参,后台通过数据流接收。速度稍微慢一些。而get通过url传参可以直接获取)。

  • 3.post一般用于修改服务器上的资源,传输文件大理论没有限制; get一般用于信息获取,使用 URL传递参数,有大小限制

06 postman软件

  • postman和tomcat、servlet没有任何关系,是一个测试工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宣布无人罪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值