Open SherryLang opened 7 years ago
Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接口的 Java 类。Web 应用程序开发人员通常编写 Servlet 来扩展 javax.servlet.http.HttpServlet,并实现 Servlet 接口的抽象类专门用来处理 HTTP 请求。
Servlet生命周期的三个核心方法分别是 init() , service() 和 destroy()。每个Servlet都会实现这些方法,并且在特定的运行时间调用它们。 最简单的示例:
// 导入必需的 java 库 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; // 扩展 HttpServlet 类 public class HelloWorld extends HttpServlet { private String message; public void init() throws ServletException { // 执行必需的初始化 message = "Hello World"; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html"); // 实际的逻辑是在这里 PrintWriter out = response.getWriter(); out.println("<h1>" + message + "</h1>"); } public void destroy() { // 什么也不做 } }
另外,为了在web容器里注册Servlet,要为应用建一个web.xml入口文件。
<web-app> <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/HelloWorld</url-pattern> </servlet-mapping> </web-app>
推荐阅读:Java Servlet完全教程
具体在王者归来这本书上写得很清楚。
Java Server Pages,中文名叫java服务器页面,本质上是一个简化的Servlet设计。
*web容器:如tomcat
在执行jsp网页时,通常分为两个时期:编译时期和请求时期。编译时期jsp页面被翻译成Servlet类,然后编译成Class文件;用户请求时期,servlet类被执行,生成HTML响应至客户端。
用户请求jsp页面
判断jsp是否编译过。如果而没有编译过,jsp引擎会将jsp文件中的脚本代码(HTML)和代码片段(Java代码)全部转换为java代码,转换过程非常直观:对于HTML文本只需要用简单的out.println方法包裹,对于java脚本只做保留或简单的处理。
预处理阶段把jsp文件解析为java代码,编译阶段jsp引擎把java代码编译成servlet类文件(.class),对于Tomcat,生成的class文件默认情况下存放在/work目录下。
编译后的class对象被加载到容器中,并根据用户的请求生成HTML格式的响应页面返回给客户端。
jsp的转译和请求都在在第一次访问时进行的,所以用户在第一次访问jsp页面时响应时间会比较长。在之后的请求中,这些工作已经完成,时间延长问题不存在了。在处理后续的访问时jsp和servlet的执行速度是一样的。
参考:web.xml文件详解
作业:web容器的加载顺序图
最终得出的结论是:ServletContext-> listener ->filter -> servlet
servlet
定义
Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接口的 Java 类。Web 应用程序开发人员通常编写 Servlet 来扩展 javax.servlet.http.HttpServlet,并实现 Servlet 接口的抽象类专门用来处理 HTTP 请求。
servlet生命周期
Servlet生命周期的三个核心方法分别是 init() , service() 和 destroy()。每个Servlet都会实现这些方法,并且在特定的运行时间调用它们。 最简单的示例:
另外,为了在web容器里注册Servlet,要为应用建一个web.xml入口文件。
推荐阅读:Java Servlet完全教程
servlet的4个作用域、9个内置对象和4个作用域关系
具体在王者归来这本书上写得很清楚。
JSP
定义
Java Server Pages,中文名叫java服务器页面,本质上是一个简化的Servlet设计。
编译运行的过程
*web容器:如tomcat
在执行jsp网页时,通常分为两个时期:编译时期和请求时期。编译时期jsp页面被翻译成Servlet类,然后编译成Class文件;用户请求时期,servlet类被执行,生成HTML响应至客户端。
1. 请求
用户请求jsp页面
2. 预处理
判断jsp是否编译过。如果而没有编译过,jsp引擎会将jsp文件中的脚本代码(HTML)和代码片段(Java代码)全部转换为java代码,转换过程非常直观:对于HTML文本只需要用简单的out.println方法包裹,对于java脚本只做保留或简单的处理。
3. 编译阶段
预处理阶段把jsp文件解析为java代码,编译阶段jsp引擎把java代码编译成servlet类文件(.class),对于Tomcat,生成的class文件默认情况下存放在/work目录下。
4. 响应阶段
编译后的class对象被加载到容器中,并根据用户的请求生成HTML格式的响应页面返回给客户端。
关于 jsp和servlet的执行速度
jsp的转译和请求都在在第一次访问时进行的,所以用户在第一次访问jsp页面时响应时间会比较长。在之后的请求中,这些工作已经完成,时间延长问题不存在了。在处理后续的访问时jsp和servlet的执行速度是一样的。
web.xml文件
参考:web.xml文件详解
作业:web容器的加载顺序图
web容器加载顺序:
最终得出的结论是:ServletContext-> listener ->filter -> servlet