Servlet与JSP概念理解

Servlet是用Java编写的服务端程序。需要部署到servlet容器上才能运行,tomcat 就是一个servlet容器。


1、Servlet的生命周期

客户端请求该 Servlet --> 加载Servlet类到内存 -->  实例化并调用init()方法初始化该Servlet --> 响应客户请求阶段(调用service()方法) -->  销毁 (destroy()) 


2、什么时候Servlet容器装载Servlet:

1)Servlet容器启动时自动装载某些Servlet,实现它只需要在web.xml文件中的<servlet></servlet>之间添加如下代码:<load-on-startup>1</load-on-startup>  

2)在Servlet容器启动后,客户首次向Servlet发送请求。

3)Servlet类文件被更新后,重新装载Servlet。

Servlet被装载后,Servlet容器创建一个Servlet实例并调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。


3、Servlet与JSP的比较:

相似点:都可以生成动态网页。

JSP的优点是擅长于网页制作,生成动态页面比较直观,缺点是不容易跟踪与排错。

Servlet是纯Java语言,擅长于处理流程和业务逻辑,缺点是生成动态网页不直观。


4、JSP

1) 概念

JSP其实就是一个以“.jsp”为后缀的文件,该文件的内容主要是html和少量的java代码(<% java代码 %>    <%=java代码 %>)。

Jsp文件会被容器转换成一个servlet然后执行

具体转换方式:对于html(css,js)来说,会放到service方法里,使用out.write输出; 而<% %>会照搬到service方法中

2)隐含对象 --jsp9个内置对象 http://www.cnblogs.com/nannan0226/p/6378968.html

定义:在jsp文件里可以直接使用的对象。比如out、request、response

3)指令

定义:通知容器将jsp文件转换成一个servlet类时做一些额外的处理。比如导包。

格式: <%@指令的名称 属性名称=值%>

常用指令:

i: page指令:

import属性:导包。 

contentType属性:设置response.setContentType方法的参数值。 

pageEncoding属性:告诉容器jsp文件的字符集,容器会按照属性指定的字符集去解码。例子如下:

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

ii: taglib指令:定义标签

<%@ taglib prefix="s"  uri="/struts-tags"%>

iii: include指令:引入指定jsp文件

<%@include file="/common/taglibs.jsp"%>

原文地址:https://www.cnblogs.com/amunamuna/p/6393505.html