JavaWeb(二):Servlet

我怕爱的太早我们不能终老 提交于 2019-12-06 09:41:01

 

一、本教程使用的Web容器——Tomcat

Tomcat是提供一个支持Servlet和JSP运行的容器。Servlet和JSP能根据实时需要,产生动态网页内容。而对于Web服务器来说, Apache仅仅支持静态网页,对于支持动态网页就会显得无能为力;Tomcat则既能为动态网页服务,同时也能为静态网页提供支持。尽管它没有通常的Web服务器快、功能也不如Web服务器丰富,但是Tomcat逐渐为支持静态内容不断扩充。大多数的Web服务器都是用底层语言编写如C,利用了相应平台的特征,因此用纯Java编写的Tomcat执行速度不可能与它们相提并论。一般来说,大的站点都是将Tomcat与Apache的结合,Apache负责接受所有来自客户端的HTTP请求,然后将Servlets和JSP的请求转发给Tomcat来处理。Tomcat完成处理后,将响应传回给Apache,最后Apache将响应返回给客户端。

 

1.1 Tomcat访问静态资源

tomcat访问所有的资源,都是用Servlet来实现的。

在Tomcat看来,资源分3种:

  • 静态资源,如css,html,js,jpg,png等     
  • Servlet   
  • JSP

运行应用程序的Web容器将会有一个或多个内建的Servlet,这些Servlet用于处理JavaServer Pages、显示目录列表(如果启用了该功能的话)和访问静态资源,例如HTML页面和图片。

JspServlet用于处理JSP页面,DefaultServlet是处理静态资源的Servlet,在tomcat的conf目录下web.xml:

<servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

   <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

    <!-- The mapping for the default servlet -->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- The mappings for the JSP servlet -->
    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
        <url-pattern>*.jspx</url-pattern>
    </servlet-mapping>

 

1.2 安装tomcat

配置jdk环境变量

下载,解压,目录结构如下:

bin目录 可执行文件,如启动tomcat

conf目录 配置文件

lib目录 第三方依赖的jar包

logs目录 日志

temp目录 临时文件

webapps目录 部属的web应用

work目录 jsp翻译成servlet再翻译成class的文件

双击bin中的startup.bat可以启动tomcat

若已经启动一个tomcat应用,再启动同一个tomcat应用,会抛出端口占用异常

用bin中的shutdown.bat可以关闭tomcat

修改端口号

server.xml

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

 

1.3 Tomcat中JavaWeb目录结构

1.3.1 目录结构

创建的Web项目,必须有一个根目录,根目录下:

  • *.html、*.jsp等外部可以公开访问的文件,看成公开目录
  • WEB-INF/web.xml,必须要有, 部属描述符
  • WEB-INF/classes,编译后的Java类文件,可选
  • WEB-INF/lib,Java类库文件

WEB-INF/目录中的文件是受到保护的,不能通过URL访问。

 

1.3.2 手工创建一个web项目

用eclipse创建一个普通java工程

创建com.aidata包,并创建Person类

复制代码
package com.aidata;

public class Person {

    public String getPersonInfo() {
        return "person info...";
    }
}
复制代码

 

下面手工创建tomcat项目目录

创建WebContent根目录

创建WEB-INF目录

创建目录WEB-INF/classes,创建com文件夹,com下创建aidata文件夹,将eclipse的bin目录下生成的Person.class拷贝过来

创建目录WEB-INF/lib

从tomcat拷贝一个web.xml到WEB-INF目录下

在根目录下创建一个jsp页面

复制代码
<%@page import="com.aidata.Person"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

    <%
      Person person = new Person();
      System.out.println(person.getPersonInfo());
    %>
    
</body>
</html>
复制代码

 

将根目录拷贝到tomcat的webapps目录下

启动tomcat

浏览器输入http://localhost:8080/WebContent/hello.jsp,命令行窗口会打印

 

 二、Servlet

Java Web项目的构成:

  • 需要自己的代码和它依赖的第三方库
  • 部属描述符,其中包含了部属和启动应用程序的指令
  • 可以添加ClassLoader用于将自己的应用程序与同一台服务器上的其他Web应用程序隔离
  • 通过某种方式将应用程序打包,生成WAR和EAR文件

 

 

Servlet

Servlet是JavaEE规范的一种,主要是为了扩展Java作为Web服务的功能,统一接口。由其他内部厂商如tomcat,jetty内部实现web的功能。Servlet就是一群人来制定java应用中使用web时的各种规范,统一接口,其他内部实现由厂商自己实现,tomcat jetty jboss等等应运而生。面向接口编程。

我们只需要创建servlet,实现servlet接口的方法就可以了,其他的都交给servlet容器就好了。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!