在学习Servlet之前,需要首先学习一些关联性的知识。

一、动态网页程序

动态网页:它是网页中的偏功能性的部分也是最重要的部分。它不是我们平时所看见的页面特效,展示的效果。而是,一种交互行为。比如,用户注册一个账号的过程中,注册格式的提示与最后的提交等工作。

动态网页程序:它是web服务器的作用,是接收用户请求,并将响应结果返回浏览器,对于静态HTML的访问,web服务器可以直接从文件系统中读取文件内容(html文件)后返回给浏览器(象以前做的socket程序),但对于那些要根据条件去动态创建内容的访问请求,web 服务器本身不具备处理的能力,而且要专门的web服务器处理程序模块来处理。因此 动态网页内容的创建分为两个步骤:

1.使用某种编程语言写出相应的程序

2.需要一个专门的web服务器程序模块来解释执行该动态网页程序

这个专门的web服务器程序模块,称为引擎 ,常用的有 ASP 引擎,Servlet 引擎,JSP引擎。引擎 以web 服务器扩展模块的形式提供,通常是由那些提供动态网页解决方案的公司开发的。引擎要与动态网页程序进行通讯,必须要提供一些API给动态网页程序调用。

引擎 提供的API 有两方面的作用:

1.将访问请求的相关信息传递给动态网页程序 //访问者的IP,请求消息头

2.将动态网页程序产生的结果传给浏览器

我们以前讲过URL ,它不仅可以指向一个静态html文件,还可以指向服务器端某种可被解释运行的程序文件。如果URL 后缀名为.html 或.htm,则web服务器直接在本地文件系统中找这个文件,并且原封不动的传回给客户端,这样产生的网页文档总是相同的。如果URL 后缀名不是html,而是符合某种引擎所处理的资源名的特征,web服务器就会把请求交给相应的引擎去处理,然后由引擎调用某个程序文件,并将程序生成的结果返回给客户端。目前,不少公司提供了动态网页技术的解决方案,称之服务端的web编程技术,常见的有ASPNET、Servlet / jsp、PH。

下面用一张图来解释上面的内容:

了解了动态网页程序,有助于我们接下来的学习。尤其是,一些工作原理,方便我们理解,自己做的事情在整个更需当中的位置。

二、Servlet简介

(SUN公司制定的规;按 servlet 规范开发;在java ee 之前就存在了,在开发动态网页程序中广泛应用;是学习jsp的基础)

一个Servlet 程序,就是一个实现了特殊接口的java类,它由支持Servlet的服务器(具有servlet引擎)调用和运行。

一个Servlet程序,负责处理它所对应的一个或一组URL地址的访问请求,接收客户端请求,产生响应内容。

Servlet 和普通程序相比,只是输入信息的来源和输出结果的目标不同,所以.普通程序能完成的功能 ,Servlet 也能完成。

三、Servelt 程序具有如下功能

1.获取客户端通过form表单提交的数据,还有URL后面的参数信息

2.创建客户端的响应消息的内容

3.访问服务器的文件系统

4.连接数据库,开如基于数据库的应用

5.调用其他java类

SUN 公司制定了一套专门用于Servlet程序开发的java类和接口,统称为Servlet API,支持Servlet的服务器软件。通常带有ServletApi的jar包。

经如说Tomcat 这个包在 C:\Tomcat6\lib\servlet-api.jar

四、安装Tomcat

一台计算机,只要装了web服务器软件(IIS ,TOMCAT等) 就成了服务器。(现在我的电脑已经安装了Tomcat,成为服务器了呀,嘻嘻~~)

最简单的网站只要一台web服务器,复杂的网站,包扩多台web服务器组成的集群系统,负载均衡设备,具有缓存的代理服务器(可能有多级),数据库系统等。

(一)安装Tomcat有两种方法:

1.到官网直接下载即可:https://tomcat.apache.org/

2.如果你有压缩包,将它直接解压就可以用了。

(二)Tomcat简介

它是 Apache jakarta项目中的了一重要子项目;

它是 Sun 公司推荐的运行 Servlet 和 JSP 的容器(引擎)

Tomcat 是开源的

Tomcat 还具有普通 Web 服务器的基本功能

安装之后设置一下路径,方便以后在cmd中调用(或者你可以直接到安装包中直接点击startup.bat)

下面是回顾一下设置path的方法:

或者你可以直接到安装包中直接点击startup.bat

(三)安装tomcat要注意的

-- 在安装之前,要先装jdk

-- 一台机器上可以安装多个tomcat ,但要注意端口号不能冲突

-- 它的默认端口号是 8080

-- 安装路径下,尽量不要用中文和空格

-- 启动方式 动行 bin 目录中的 startup.bat

-- tomcat不能同时启动两次,否则端口出现冲突   //JVM_BIND

-- 在服务器上的tomcat,千万不要用空密码(安全性)

-- 访问 http://localhost:8080/

五、第一个Servlet 程序

手动创建Servlet程序的步骤

1) 固定结构

-- 在tomcat 的 webapp 目录下,建一个 myweb的 文件夹

-- 在myweb这个文件夹里,建一个WEB-INF的文件夹 //大小写一点不能错

-- 在这个 WEB-INF 中,建一个classes文件夹 //大小写不能错

-- 在WEB-INF 中,建一个lib文件夹 //不是绝对的

-- 在 WEB-INF 中建一个 web.xml的文件

2) 开发Servlet程序

导Jar包:

开发程序设置:

import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; //用的是实现Servlet接口的方式
public class Test implements Servlet { @Override
public void destroy() {
// reload该Servlet和关闭tomcat时被调用
// TODO Auto-generated method stub
System.out.println("--------destroy----------");
} @Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
} @Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
} @Override
public void init(ServletConfig arg0) throws ServletException {
// 用于初始化该Servlet
// 只会被调用一次,(用户第一次访问该Servlet的时候)
// ServletConfig config, servlet 引擎将 Servlet容器的对象和 Servlet 的配置参数进行传入 // TODO Auto-generated method stub
System.out.println("----config----");
} @Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
// 最主要的业务方法,每次请求,都会调用
// arg0 代表客户端的请求信息
// arg1 代表服务器返回的信息
// TODO Auto-generated method stub
System.out.println("----service----"); PrintWriter out = arg1.getWriter();
out.print("service is calling ");
} }

讲上面的test.class文件复制到C:\apache-tomcat-7.0.79\webapps\myweb\WEB-INF\classes

3) 布署描述

4) 访问

 六、 servlet的生命周期

servlet部署在容器里(我们使用的是Tomcat,也可是别的容器,比如jboss,weblogic。。。),它的生命周期由容器来管理。

servlet的生命周期分为以下几个阶段:

1.装载servlet,由相应的容器来完成

2.创建一个servlet实例

3.调用servlet的init()方法,该方法只会在第一次访问servlet时被调用一次

4.服务:调用servlet的service()方法,一般业务逻辑在这里处理,该方法在访问该servlet时,会被调用

5.销毁:调用servlet的destroy()方法,销毁该servlet实例,该方法在以下情况被调用:

1)tomcat重新启动

2)reload该webapps

3)重新启动电脑

Java基础——Servlet(一)的更多相关文章

  1. Java基础——Servlet

    什么是Servlet Servlet是Java Web的三大组件之一,它属于动态资源.Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要: l  ...

  2. Java基础——Servlet(八)文件上传下载

    一.简单的文件上传常见的组件Smartupload , Apache 的 commons FileUploadSmartupload上传的步骤: 1.初始化上传上下文 2.准备上传 3.保存文件 &l ...

  3. Java基础——Servlet(七)过滤器&监听器 相关

    一.过滤器简介 Filter 位于客户端和请求资源之间,请求的资源可以是 Servlet Jsp html (img,javascript,css)等.用于拦截浏览器发给服务器的请求(Request) ...

  4. Java基础——Servlet(五)

    哈哈哈...学习Servlet学了半个多月,因为中间有比较灰心的时候,有几天是啥都不学了的状态,看了好几部励志的电影.呃~还是得继续吧.本来计划是好好夯实这里的基础,结果在网找到了介绍比较全面的视频, ...

  5. Java基础——Servlet(三)

    还在学习Servlet,觉得这里的知识点蛮多的.还要继续努力,加油. 拿韩老师的话激励一下自己,共勉.韩老师说,“成功其实也不难,只要树立一个目标,不需要你是一个很强的人,不需要你很高智商,不需要你是 ...

  6. java 基础 --- servlet

    问题 : servlet 这个类是有什么作用 概述 servlet 是个接口,这个接口的作用是规范了接收请求的处理类.而最终的实现交给了 servlet 容器去实现. servlet 接口 接口方法如 ...

  7. Java基础——Servlet(六)分页相关

    前面写了Servlet(一)到(五),主要是在网上搜罗的视频.对分页这块还是不太清楚.于是有找到一些视频,重新学习了一下.主要是对分页的认识和设计思路.也是为了方便我以后回忆一下.. 一.分页常识 p ...

  8. Java基础——Servlet(四)

    最近一直在学习Servlet,真的有烦躁,一下子要创建好几个文件,服务端.客户端.html页面....学习进度蛮慢的,很容易失掉信心.当学习到cookie时,发现有好多实现是在我们日常生活中可以会遇得 ...

  9. Java基础——Servlet(二)

    好久没有写博客了,最近有在学习.可能是遇到瓶颈了,学到Servlet这里觉得有些吃力.前几天已经学完一遍了,但是学完之后觉得还是很迷茫.去知乎和百度上搜索,遇到的都是一些概念之类的讲解.核心的介绍说, ...

随机推荐

  1. netcore的NLog使用小记

    1. 启动应用程序日志配置 修改Program.cs,在WebHostBuilder构建时配置日志 public static IWebHostBuilder CreateWebHostBuilder ...

  2. unity2D 船只型物体驱动的实现

    船只向前行驶的驱动力 假设在水中没有摩擦阻力,船只有惯性,船只可以转弯,按下前进键时船只会在力的作用下使得自身的物理运动方向变化到自身的前方方向,从而向前行进. 上图中 V:船当前物理速度 V1,V2 ...

  3. CentOS修改yum源为阿里云

    yum的工具,自动去下载某个yum仓库的 rpm软件包,并且自动搜索软件下载软件依赖,如同pip3,npm等包管理工具 yum载linux中的 yum仓库是 /etc/yum.repos.d 并且在这 ...

  4. 《Linux-基础篇笔记》 Vim编辑器(二)

    Linux图形化界面下的文本编辑器 gedit . libre office . evince PDF阅读器 ①gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器.它使用GTK+编写而成, ...

  5. [Ynoi2016]这是我自己的发明(莫队)

    话说这道题数据是不是都是链啊,我不手动扩栈就全 \(RE\)... 不过 \(A\) 了这题还是很爽的,通过昨晚到今天早上的奋斗,终于肝出了这题 其实楼上说的也差不多了,就是把区间拆掉然后莫队瞎搞 弱 ...

  6. 记一次线上事故的JVM内存学习

    今天线上的hadoop集群崩溃了,现象是namenode一直在GC,长时间无法正常服务.最后运维大神各种倒腾内存,GC稳定后,服务正常.虽说全程在打酱油,但是也跟着学习不少的东西. 第一个问题:为什么 ...

  7. linux apache+php+mysql安装及乱码解决办法

    1.乱码解决方法 首先确认mysql数据库字符集设置正确,php页面字符设置正确,之后修改apache配制文件http.conf 注释掉以下字符 AddDefaultCharset UTF-8 此为乱 ...

  8. 利用koa打造jsonp API

    概述 最近学习利用koa搭建API接口,小有所得,现在记录下来,供以后开发时参考,相信对其他人也有用. 就目前我所知道的而言,API有2种,一种是jsonp这种API,前端通过ajax来进行跨域请求获 ...

  9. 矩阵乘法在numpy/matlab/数学上的不同

    数学意义上的矩阵乘法 注意事项: 1.当矩阵A的列数(column)等于矩阵B的行数(row)时,A与B可以相乘. 2.矩阵C的行数等于矩阵A的行数,C的列数等于B的列数. 3.乘积C的第m行第n列的 ...

  10. Python获取二维数组的行列数

    import numpy as np x = np.array([[1,2,5],[2,3,5],[3,4,5],[2,3,6]]) # 输出数组的行和列数 print x.shape # (4, 3 ...