Jsp/Servlet 基础

今天没事情做,就重温下servlet方面的知识,以作记录。在最开始接触J2EE时,也没花太多时间再这块,跟着教学视频,现在都有点淡忘了,不过这块是面试时考官喜欢问到的地方,考察基本功。

Servlet

Servle是一个特殊的java类,没有main方法,不能独立运行,也就是讲它需要其他容器或者工具来启动。Servlet是运行在客户端处理请求并作出相应的程序。简单来讲,用户若想用使用一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:

 1、编写一个Java类,继承httpServlet。

 2、把开发好的Java类部署到web服务器中。

3、修改web.xml,配置访问改serlvet的映射地址。

Servlet生命周期

生命周期这个概念,怎么说呢,以下是个人理解,很重要但是在开发中好像用到的不是特别多吧,而且现在框架这么多,无需花精力去关注这块。不过作为基础熟悉下,后续还会有学Andriod时同样需要生命周期。Servlet生命周期,简单概括主要包括四个环节:servlet类加载-----》实例化-----》服务-----》销毁。

1、加载和实例化

Servlet容器启动时,读取web.xml配置文件中信息,构造指定的servlet对象,创建servletConfig对象,并且将servletConfig对象作为参数来调用servlet对象的init方法;用代码比较容易理解,分别为init()方法和带参数的init()方法,init()在生命周期中只会执行一次:

<span style="font-family:Times New Roman;">@Override
public void init() throws ServletException {
		System.out.println("====== init without parameter ====== ");
		super.init();
}
@Override
public void init(ServletConfig config) throws ServletException {
		System.out.println("====== init with parameter====== ");
		super.init(config);
}</span>

输出结果是:

====== init with parameter ======

====== init without parameter ======

====== service method ======

查看源码不难发现,带参数的init(ServletConfig config)方法最终又显示调用了不带参数init()方法,在init方法里面我们可以构造一些逻辑代码,在Servlet实例化之前进行相关初始化操作。究竟是如何加载的呢?

加载方式

在项目的web.xml中配置Servlet如下:<servlet>和<servlet-mapping>需配对出现,前者主要定义了servlet的命名和代码包路径,<load-on-startup>标签含义总结情况下,

如果没有配置<>load-on-start>则调用时才实例化servlet;分三种情况:

1、loadOnStartup < 0

即负数的情况下,web容器启动的时候不做实例化处理,servlet首次被调用时做实例化。这种情况和没有设置loadOnStartup是一样的。

2、loadOnStartup > 0

web容器启动的时候做实例化处理,顺序是由小到大,正整数小的先被实例化

3、loadOnStartup = 0

web容器启动的时候做实例化处理,相当于是最大整数,因此web容器启动时,最后被实例化。

而mapping中<url-pattern>是用来做路径映射的;比例下面代码中为/test/,那么访问路径就为:http://localhost:8080/项目命名/test,即可访问servlet;同理在struts2中struts.xml中分别定义package,action名称,访问方式相同。

<span style="font-family:Times New Roman;"><servlet>
	<servlet-name>demoServlet</servlet-name>
	<servlet-class>com.niuxl.servlet.DemoServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>demoServlet</servlet-name>
	<url-pattern>/test</url-pattern>
</servlet-mapping></span>

2:进入服务

当有请求提交时,Servlet将调用service()方法进行处理,常用的是service根据请求类型调用doGet()或者doPost()方法进行处理;在service()方法中,Servlet可以通过ServletRequest接受客户的请求,也可以利用ServletResponse设置响应信息。

3:销毁

当web容器关闭或者检测到一个Servlet要从容器中被删除时,会自动调用destroy()方法,以便让该实例释放掉所占用的资源。

4:卸载

当一个Servlet调用完destroy()方法后,次实例将等待被垃圾收集器所回收,如果需要再次使用此Servlet时,会重新调用init()方法初始化。

注意:在生命周期中,init()和service()方法都只调用一次,整个过程都只有一个servlet对象,采用的是单例模式。一般我们写servlet时候,只需要复写doGet()和doPost()即可。

Jsp(Java Server Page)

Jsp是一种用于开发动态web资源的技术,最大特别就在jsp页面中嵌套java代码。

Jsp本质也是一个Servlet,运行时需要依赖其他容器。Jsp是Servlet的扩展,从而可以看出来JSP主要是由两部分组成:

静态部分:标准的HTML标签、静态的页面内容,这些内容与静态HTML页面相同.

动态部分:Java程序控制的内容,这些内容由Java程序来动态生成。

当一个JSP文件第一次被请求的时候,JSP引擎(本身也是一个Servlet)首先会把这个JSP文件转换成一个Java源文件。在转换过程中如果发现JSP文件有语法错误,转换过程将中断,并向服务端和客户端输出出错信息;

在 MVC 架构模式中,就 JSP 和 Servlet 而言,controller通常由 Servlet 充当,View通常由 JSP 来充当。

JSP的工作原理可以简单总结为如下几条:

1.Jsp需依赖web容器才能运行,如流行的Web容器Tomcat/Weblogic/JBoss等等.

2.Jsp需编辑成Servlet才能被服务器响应给客户端。

3.Jsp页面的访问者无须安装任何客户端,甚至不需要可以运行Java的运行环境,因为JSP页面输送到客户端的是标准HTML页面。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-17 19:07:15

Jsp/Servlet 基础的相关文章

JSP/Servlet基础语法

相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp/web_xml.html http://blog.csdn.net/liaoxiaohua1981/article/details/6761053 http://computer.c.blog.163.com/blog/static/102524482012314537670/ http://ww

jsp servlet基础复习 Part1

jsp和servlet的一些基础知识整理,用于备忘. 一.jsp与servlet的基本关系 1.jsp-->web容器-->servlet-->加载进容器的虚拟机执行-->输出执行结果给浏览器端 在这个过程,所有位于<%%>之外的值,都被认为是out.println()中的内容进行直接输出.详细理解看代码 <html> <% //例子说明:servlet和jsp的关系 boolean b = false; if(b){ %> 这里是内容一 <

JSP SERVLET 基础知识

jsp(java server page)和servlet是JAVA EE规范的两个基本成员,是JAVA WEB开发的重点也是基础知识.JSP本质上也需要编译成SERVLET运行. JSP比较简单,可以理解为在HTML页面中嵌入JAVA代码,或使用各种JSP标签,再辅以各种JAVA BEAN. <!-- JSP声明 --> <%! public String info(){return "Hello jsp";} %> <div> <!-- J

JSP servlet基础

简述什么是servlet Servlet就是一个实现了特定接口或者父类的java类. servlet是在服务器端运行的一个小程序.一个servlet就是一个java类,并且可以通过"请求-响应"编程模型来访问的这个驻留在服务器内存里的servlet程序. tomcat容器等级 tomcat的容器等级分为四个等级,servlet的容器管理context容器,一个context对应一个web工程. Engine是个引擎容器 HOST是主机容器 实现Servlet三种方案: 01.Servl

JSP数据交互(二)和Servlet基础

01.Application原理与应用 01.application对象的作用域范围是整个应用服务,而它在应用中所承担的责任就类似于一个全局变量.只要服务启动,则application对象就会存在. 02.在一个应用中只有一个application,每一个用户都会共享这一个application对象. 03.通过统计网站访问次数来讲解application的用法 02.对象作用域 03.Cookie简介 解析:cookie是Web服务器保存在客户端的一系列文本信息,根据域名和端口号区分是否保存成

Servlet基础

Servlet基础 Jsp的本质即为Servlet,jsp页面部署到web容器中后会被编译为Servlet.Servlet使用输出流输出html标签,开发过程复杂且难以进行设计. Servlet是一个完整的java类,jsp是对Servlet的简化.Servlet中没有jsp的内置对象,jsp内置对象需要Servlet显式创建. 在MVC架构中,Servlet已不再作为视图仅仅作为控制器使用. 这里介绍了Servlet开发中所涉及的基础知识以及局部应用范例,Servlet作为控制器的应用介绍请见

JavaWeb-07(tomcat与web程序结构与Http协议与Servlet基础)

JavaWeb-07 JavaWeb-tomcat与web程序结构与Http协议与Servlet基础 HTTP协议(记住) 1.http协议:规定了客户端和服务端交流时的数据格式 a. WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议. b. HTTP是HyperText Transfer Protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式. c. HT

Unit01: Servlet基础 、 HTTP协议

Unit01: Servlet基础 . HTTP协议 在页面上输出当前时间 package web; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import

JSP Servlet学习笔记

在面试Java程序员工作时,经常会被问到JSP Servlet中相关的知识.这些知识都是JSP Servlet的基础,这篇文章主要梳理一下JSP Servlet比较基础但是又比较重要的知识. 1 service方法调用过程 在Servlet接口中有一个service方法,这个方法不是有人手动的调动,而是在运行时由tomcat自动调用的.GenericServlet抽象类实现了Servlet接口,当然它也重写了service方法,但是它也没有具体实现.到了HttpServlet类中,service