JavaWeb开发之Servlet概述

2021-07-11  本文已影响0人  小丸子的呆地

一、Servlet概述

1.1 B/S架构

1)什么是B/S架构
客户端使用浏览器,服务端使用web浏览器,客户端跟服务器之间使用HTTP协议进行通讯。
2)优点
①客户端不需要单独安装(因为使用浏览器);C/S架构比较麻烦的是需要单独安装每个客户端,并且一旦客户端版本发生改变,就需要再次安装。
②开发相对简单;C/S架构需要我们分别在,客户端和服务器端编写相应的通信处理模块和自定义协议,而B/S架构使用标准的HTTP协议(即不再需要自定义协议),而且浏览器与Web服务器已经包含了相应的通信模块了。


image.png

1.2什么是Servlet

Sun公司制订的一种用来扩展Web服务器功能的组件规范。
1)扩展web服务器功能
早期(2000年左右)的Web服务器:apache的web server、微软的iis。只能够处理静态资源(即需要事先将html文件写好),不能够处理动态资源的请求(即需要依据请求参数然后进行计算,生成相应的页面)。
为了让这些web服务器能够处理动态资源的请求,需要扩展他们的功能。
早期使用的是CGI技术(Common Gateway Interface通用网关接口),可以使用很多语言编写,如perl,C/C++等来开发CGI程序。但是CGI程序有几个问题,比如开发比较复杂(因为需要程序员自己去分析请求参数)、性能不佳(因为当Web服务器收到请求之后,会启动一个CGI进程来处理请求)、CGI程序依赖平台(可移植性不好)。
现在,可以使用Servlet来扩展。
当浏览器将请求发送给Web服务器(比如:apcahe的web server),Web服务器会向Servlet容器发送请求,Servlet容器负责解析请求数据包。当然,也包括网络通讯相关的一些处理,然后将解析之后的数据交给Servlet来处理(Servlet只需要关注具体的业务处理,不用关心网络通讯相关的问题)。
注意事项:可以不使用服务器,而直接向Servlet容器发送请求,因为Servlet容器里面也有个通信模块,所以也可直接把Servlet容器当作简单的Web服务器来使用。

2)组件规范
①组件:是符合一定规范,并且实现部分功能的可以单独部署的软件模块。组建必须要部署到容器里面才能运行。
②容器:也是符合一定规范,并且提供组件的运行环境的程序。
注意事项:单个的组件、单个的容器都是没意义的,都不能单独运行,需要放在一起才能运行。

1.3什么是Tomcat

Tomcat本身是一个Servlet容器,即可以提供Servlet运行环境的一个程序,但是Tomcat还提供了Web服务器所具有的所有功能,所以我们也称Tomcat是一个Web服务器。Tomcat的默认端口是8080。

Tomcat目录结构简介
①bin目录:存放启动和关闭服务器的一些脚本(命令)。
②common目录:共享(部署在该服务器上的所有程序都可以使用)的一些jar包。
③conf目录:存放服务器的一些配置文件。
④webapps目录:部署目录。
⑤work目录:服务器运行时,生成的一些临时文件。

1.4如何写一个Servlet(不使用开发工具)

public class HelloWorldServlet extends HttpServlet {
    //Tomcat会自动调用service,自己不用再去写方法调用了,所以必须把名字写对!
    public void service(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException{
    //异常必须写两个,不能写成Exception,也不能再多个异常
    //设置一个消息头content-type,告诉浏览器返回的数据类型是一个html文档,以及编码格式。此外,还可以告诉服务器,在使用out输出时,使用指定的编码格式进行编码
        response.setContentType("text/html;charset=utf-8");
        //通过响应对象,获得一个输出流
        PrintWriter out=response.getWriter();
        //调用流的方法进行输出,其实质是将处理结果写到了response对象上
        out.println("<span style='color:red;font-size:30px;'>Hello World</span>");
        /** out.close()不调用也可以,因为Servlet方法执行完毕,容器会自动调用out.close方法*/
        out.close();            
}
        appname(文件夹名起应用名)
            |--WEB-INF(必须大写)
                |--classes(文件夹,放.class文件)
                |--lib(文件夹,放.jar文件,可没有)
                |--web.xml(部署描述文件 url-pattern)

将编译好的.class文件放入classes文件夹中(如有包,则一起放入)。
web.xml文件内容:

        <?xml version="1.0" encoding="UTF-8"?>
        <web-app version="2.4" <!--根元素-->
            xmlns="http://java.sun.com/xml/ns/j2ee" 
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
            http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
            <servlet>
                <servlet-name>helloWorld</servlet-name>
                <!--类名要完整(包名.类名都要有)-->
                <servlet-class>Servletday01.HelloWorldServlet</servlet-class>
            </servlet>
            <servlet-mapping>
                <servlet-name>helloWorld</servlet-name>
                <url-pattern>/hello</url-pattern><!-- 注意斜线开头 -->
            </servlet-mapping>
        </web-app>
访问格式:http://ip:port/appname/url-pattern
比如在浏览器地址栏输入:http://localhost:8080/web01/hello

1.5 Servlet是如何运行的

比如,在浏览器地址栏输入:http://ip:port/web01/hello(web01/hello为请求资源路径)。

1.6常见错误及解决方式
上一篇 下一篇

猜你喜欢

热点阅读