TC608——Java中的Servlet编程问答

Servlet整理

author:lxy 1.什么是Servlet? 运行在Servlet容器中,由服务器服务器直接解析运行的Java应用小程序, 2.怎样创建一个Servlet 实质:通过继承或实现接口类并重写方法。 步骤:[1].创建一个类,继承HttpServlet(实现Servlet接口 或 继承GenericServlet类也可以) [2].重写方法;doGet、doPost等(接口中需要将所有方法重写,但是service方法是处理请求) [3].在web.xml文件中配置 3.Servlet的生命周期: 大致过程: [1].创建Servlet对象,并调用init()方法对web进行资源初始化 [2].通过service方法来处理请求 [3].通过destroy来销毁Servlet 细节: [1].当创建一个Servlet后,第一次访问web时会创建一个Servlet对象,并调用init一次方法,同时开启一个线程来调用service方法,init只调用一次 [2].当第二次访问时再开启一个线程来调用service方法处理请求 [3].Servlet常驻内存,一般情况只会创建一次。 [4].如果在Servlet中创建了成员变量要处理线程安全,开发中尽量避免创建 4.Servlet接口和HttpServlet类中的 doGet和doPost 方法的关系? [1].一个Servlet被访问时,默认service方法处理请求, [2].service方法在Servlet中定义,但是在HttpServlet中复写具体内容 [3].在HttpServlet 的service方法中,会根据请求方法调用不同的方法 [4].根据多态,在调用doGet 、doPost时,调用的是自己Servlet的方法 补充:模板设计模式: public abstract class Car { public abstract void fire(); // 打火 public abstract void run();// 行驶 public abstract void stop();// 停止 //模板 public void drive() { fire(); run(); stop(); } } //继承Car接口的Bmw类 public class Bmw extends Car { @Override public void fire() { System.out.println("bmw fire"); } @Override public void run() { System.out.println("bmw run"); } @Override public void stop() { System.out.println("bmw stop"); } } //测试 public class Test { public static void main(String[] args) { Car c = new Bmw(); c.drive(); } } 5.认识TomCat中文件夹: |-bin 存放启动、关闭等服务器程序 |-conf 存放配置信息 |-lib 存放jar包 |-logs 存放日志文件 |-temp 存放临时文件 |-webapps 存放部署应用,内部有几个文件夹就有几个应用 |-WEB-INF |-classes Java类 |-lib Java类运行所需jar包 |-web.xml wab应用的配置文件 |-images 图片等媒体文件 |-work 服务器工作目录 6.Servlet的自动加载: [1].通过在web.xml文件<servlet>标签中加上<load-on-startup>2</load-on-startup> 让Servlet跟随服务器启动而创建 [2].作用:加载资源 [3].标签中取值1--10,数值小优先级高,优先级相同按照配置顺序加载。 7.Servlet配置中的url-pattern: [1].一个Servlet 是否可以映射到多个路径?可以 [2].url-pattern 的写法(有无*) a.完全匹配 要求必须以"/"开始 b.目录匹配: 以"/"开始以 * 结尾 c.扩展名匹配: 以*.xxx结尾 以上三种写法优先级:a > b > c; 8.web开发中的路径问题: [1].浏览器访问服务器有几种方式? a.浏览器地址栏输入URL b.超练级 <a href="http://www.itheima.com" >黑马</a> c.表单 <form action="...." method="post">...</form> //常用请求方式post get,除了表单可以post,其他都是get d.javascript [2].访问Servlet路径 a.绝对路径: |--带协议 一般用于访问站外资源,开发不常用 <a href="http://www.baidu.com" >百度</a> |--不带协议 在浏览器端写一个"/",相当于是服务器的路径,后面加上工程名,再加上资源名就可以 一般用于访问站内资源,开发中常用 <a href="/day7_2/demo1">demo1Servlet</a> 相当于:http://localhost:8080 b.相对路径: |-- ./XXX 同处于第二目录(工程名下)的路径 |-- ../XXX 退回上一级目录寻找目标 结论:开发中推荐使用不带协议的绝对路径 "/工程名/servlet-pattern的值" 9.Servlet接口中的init方法: [1].为什么在Servlet接口中init方法是有参数的而我们所覆写的方法没有参数? |--父类中已将init(ServletConfig config)方法重写,我们重写的方法不是接口中的方法而是其父类中定义的 [2].ServletConfig是什么,有什么作用? |--ServletConfig对象代表的是Servlet的配置对象,由服务器创建, 每一个Servlet都有一个自己的ServletConfig对象,不可公用 |--作用: public void init(ServletConfig config) throws ServletException { this.config = config; this.init(); } |---获得初始化参数 当第一次访问一个Servlet时,就会创建一个ServletConfig对象,通过init方法传递到Servlet,那么我们就可以在Servlet中获取其配置信息 |---可以获得Servlet的name 获取ServletConfig对象:this.getServletConfig(); |---可以获得ServletContext对象 ServletConfig的常用API: |--public String getServletName(); //用于获取Servlet名称 |--public String getInitParameter(String name); //用于获取init-parent中指定的value值 |--public Enumeration getInitParameter(String name); //用于获取所有的init-param中的name名称 |--public Servlet ServletContext getServletContext(); //用于获取一个ServletContext对象 10.关于ServletContext对象 [1].ServletContext代表的是一个web应用 [2].获取ServletContext对象 ServletConfig。getServletConfig(); [3].作用: a.获取全局初始化参数 String getInitParameter(String name) EnumerAtion getInitParameterNames() 在web.xml文件中可以配置 全局初始化参数 <context-param> <param-name>name</param-name> vparam-value>tom</param-value> </context-param> 此配置针对于整个web应用 b.让Servlet实现信息共享 ServletContext是一个域对象(相当于一个Map,它的作用是整个Web应用中) c.可以获取路径(资源)*-* 在web开发中,要想获取资源,必须使用绝对的磁盘路径。 实例总结:1.web中访问不到MyEclipse WebRoot以外的文件,部署只有此文件中内容才会被部署进服务器
时间: 2024-10-08 09:15:16

TC608——Java中的Servlet编程问答的相关文章

读懂Java中的Socket编程(转)

Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的Socket编程,并且如何写一个客户端/服务器程序. 餐前甜点 Unix的输入输出(IO)系统遵循Open-Read-Write-Close这样的操作范本.当一个用户进程进行IO操作之前,它需要调用Open来指定并获取待操作文件或设备读取或写入的权限.一旦IO操作对象被打开,那么这个用户进程可以对这个

读懂Java中的Socket编程

Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的Socket编程,并且如何写一个客户端/服务器程序. 餐前甜点 Unix的输入输出(IO)系统遵循Open-Read-Write-Close这样的操作范本.当一个用户进程进行IO操作之前,它需要调用Open来指定并获取待操作文件或设备读取或写入的权限.一旦IO操作对象被打开,那么这个用户进程可以对这个

Java中的 多线程编程

Java 中的多线程编程 一.多线程的优缺点 多线程的优点: 1)资源利用率更好2)程序设计在某些情况下更简单3)程序响应更快 多线程的代价: 1)设计更复杂虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂.在多线程访问共享数据的时候,这部分代码需要特别的注意.线程之间的交互往往非常复杂.不正确的线程同步产生的错误非常难以被发现,并且重现以修复. 2)上下文切换的开销当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另

黑马程序员————java中的网络编程

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- java中的网络编程 一.网络编程概述:基于互联网的编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. 二.网络模型:OSI和TCP/IP 1.OSI(Open System Interconnection开放系统互连

Java中的网络编程

Java中的网路编程主要是Java的Socket编程,属于JavaEE中的高级的部分,以下内容是对java网路编程的一个小结,代码都是经过编译调试的 C/S程序应用:客户/服务器模式,如QQ客户端,客户端连到服务器上,一个C/S模式的应用必须有两套程序,一个是客户端的程序,一个是服务器程序. B/S程序应用:浏览器/服务器模式,如当下的各种网站都是B/S模式,所有的程序代码都在服务器上,用户通过浏览器去访问. C/S程序分为两种: 基于TCP协议:Socket(套接字), 可靠的编程: A->B

java中的socket编程

Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的Socket编程,并且如何写一个客户端/服务器程序. Unix的输入输出(IO)系统遵循Open-Read-Write-Close这样的操作范本.当一个用户进程进行IO操作之前,它需要调用Open来指定并获取待操作文件或设备读取或写入的权限.一旦IO操作对象被打开,那么这个用户进程可以对这个对象进行一

第62节:探索Java中的网络编程技术

前言 感谢! 承蒙关照~ 探索Java中的网络编程技术 网络编程就是io技术和网络技术的结合,网络模型的定义,只要共用网络模型就可以两者连接.网络模型参考. 一座塔有七层,我们需要闯关. 第一层物理层->第二层数据链路层->第三层网络层->第四层传输层->第五层会话层->第六层表示层->第七层应用层. 物理层是主要定义物理设备标准,数据链路层是主要讲从物理层接收的数据进行MAC地址(网卡的地址)的封装与解封装.这层的数据较帧. 网络层是将从下层接收到的数据进行IP地址的

java中面向接口编程

面向接口编程详解(一)——思想基础 我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问. 1.面向接口编程和面向对象编程是什么关系 首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向

Java中的网络编程-2

Socket编程:(一般的网络编程) <1> 两个 JAVA 应用程序可通过一个双向的网络通信连接, 实现数据交换, 这个双向链路的一段称为一个 Socket. <2> Socket 通常用来实现 Client-Server 连接. <3> java.net 包中定义的两个类 Socket 和 ServerSocket(阻塞式), 分别用来实现双向连接的 Client 和 Server 端. <4> 建立连接时, 所需的寻址信息为远程计算机的 IP 地址和端