JavaWeb笔记一、Servlet 详解,javawebservlet

JavaWeb笔记一、Servlet 详解,javawebservlet

一、创建一个 Servlet 简单实现类

一、创建一个 Servlet 简单实现类

1、创建一个 HelloServlet 类(测试 Servlet 接口方法)

 1 //创建一个 HelloServlet 类并实现 Servlet 接口
 2 public class HelloServlet implements Servlet {
 3 
 4     // Tomcat 停止服务时 Servlet 的销毁方法
 5     @Override
 6     public void destroy() {
 7         System.out.println("destroy.....");
 8     }
 9 
10     @Override
11     public ServletConfig getServletConfig() {
12         System.out.println("getServletConfig");
13         return null;
14     }
15 
16     @Override
17     public String getServletInfo() {
18         System.out.println("getServletInfo");
19         return null;
20     }
21 
22     // Servlet 加载时 初始化方法
23     @Override
24     public void init(ServletConfig servletConfig) throws ServletException {
25         System.out.println("init");
26     }
27 
28     // servlet 运行时的方法 每次请求调用
29     @Override
30     public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
31         System.out.println("service");
32     }
33 
34     // HelloServlet 实现类的构造方法 加载时调用
35     public HelloServlet() {
36         System.out.println("HelloServlet's constructor");
37     }
38 
39 }

1、创建一个 HelloServlet 类(测试 Servlet 接口方法)

 1 //创建一个 HelloServlet 类并实现 Servlet 接口
 2 public class HelloServlet implements Servlet {
 3 
 4     // Tomcat 停止服务时 Servlet 的销毁方法
 5     @Override
 6     public void destroy() {
 7         System.out.println("destroy.....");
 8     }
 9 
10     @Override
11     public ServletConfig getServletConfig() {
12         System.out.println("getServletConfig");
13         return null;
14     }
15 
16     @Override
17     public String getServletInfo() {
18         System.out.println("getServletInfo");
19         return null;
20     }
21 
22     // Servlet 加载时 初始化方法
23     @Override
24     public void init(ServletConfig servletConfig) throws ServletException {
25         System.out.println("init");
26     }
27 
28     // servlet 运行时的方法 每次请求调用
29     @Override
30     public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
31         System.out.println("service");
32     }
33 
34     // HelloServlet 实现类的构造方法 加载时调用
35     public HelloServlet() {
36         System.out.println("HelloServlet's constructor");
37     }
38 
39 }

2、配置和映射 Servlet

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 4     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 5     id="WebApp_ID" version="3.1">
 6 
 7     <!-- 配置和映射 Servlet -->
 8     <servlet>
 9         <!-- Servlet 注册的名字 -->
10         <servlet-name>HelloServlet_java</servlet-name>
11         <!-- Servlet 的全类名 -->
12         <servlet-class>com.panku.javaWeb1.HelloServlet</servlet-class>
13         <!-- 可以指定 Servlet 被创建的时机 -->
14         <load-on-startup>1</load-on-startup>
15     </servlet>
16 
17     <servlet-mapping>
18         <!-- 需要和某一个 Servlet 节点的 servlet-name 子节点的文本节点一致 -->
19         <servlet-name>HelloServlet_java</servlet-name>
20         <!-- 映射的具体访问路径: / 代表当前 Web 应用的根目录. -->
21         <url-pattern>/hello</url-pattern>
22     </servlet-mapping>
23 
24 </web-app>

 

2、配置和映射 Servlet

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 4     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 5     id="WebApp_ID" version="3.1">
 6 
 7     <!-- 配置和映射 Servlet -->
 8     <servlet>
 9         <!-- Servlet 注册的名字 -->
10         <servlet-name>HelloServlet_java</servlet-name>
11         <!-- Servlet 的全类名 -->
12         <servlet-class>com.panku.javaWeb1.HelloServlet</servlet-class>
13         <!-- 可以指定 Servlet 被创建的时机 -->
14         <load-on-startup>1</load-on-startup>
15     </servlet>
16 
17     <servlet-mapping>
18         <!-- 需要和某一个 Servlet 节点的 servlet-name 子节点的文本节点一致 -->
19         <servlet-name>HelloServlet_java</servlet-name>
20         <!-- 映射的具体访问路径: / 代表当前 Web 应用的根目录. -->
21         <url-pattern>/hello</url-pattern>
22     </servlet-mapping>
23 
24 </web-app>

 

二、Servlet 生命周期

二、Servlet 生命周期

Servlet 生命周期的方法: 以下方法都是由 Serlvet 容器负责调用.

1). 构造器: 只被调用一次. 只有第一次请求 Servlet 时, 创建 Servlet
的实例. 调用构造器. 这说明 Serlvet 的单实例的!

2). init 方法: 只被调用一次. 在创建好实例后立即被调用. 用于初始化当前
Servlet. 

3). service: 被多次调用. 每次请求都会调用 service 方法.
实际用于响应请求的. 

4). destroy: 只被调用一次. 在当前 Servlet 所在的 WEB 应用被卸载前调用.
用于释放当前 Servlet 所占用的资源.

Servlet 生命周期的方法: 以下方法都是由 Serlvet 容器负责调用.

1). 构造器: 只被调用一次. 只有第一次请求 Servlet 时, 创建 Servlet
的实例. 调用构造器. 这说明 Serlvet 的单实例的!

2). init 方法: 只被调用一次. 在创建好实例后立即被调用. 用于初始化当前
Servlet. 

3). service: 被多次调用. 每次请求都会调用 service 方法.
实际用于响应请求的. 

4). destroy: 只被调用一次. 在当前 Servlet 所在的 WEB 应用被卸载前调用.
用于释放当前 Servlet 所占用的资源.

三、ServletConfig 对象(getInitParameterNames、getInitParameter、getServletName(不常用)、getServletContext四个接口方法)

三、ServletConfig 对象(getInitParameterNames、getInitParameter、getServletName(不常用)、getServletContext四个接口方法)

1、在 web.xml 文件中配置 servlet 的初始化参数(init-param 节点)

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 4     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 5     id="WebApp_ID" version="3.1">
 6 
 7     <!-- 配置和映射 Servlet -->
 8     <servlet>
 9         <!-- Servlet 注册的名字 -->
10         <servlet-name>HelloServlet_java</servlet-name>
11         <!-- Servlet 的全类名 -->
12         <servlet-class>com.panku.javaWeb1.HelloServlet</servlet-class>
13 
14         <!-- 配置 Servlet 的初始化参数 -->
15         <init-param>
16             <!-- 参数名 -->
17             <param-name>user</param-name>
18             <!-- 参数值 -->
19             <param-value>root</param-value>
20         </init-param>
21 
22         <init-param>
23             <param-name>password</param-name>
24             <param-value>123456</param-value>
25         </init-param>
26 
27         <!-- 可以指定 Servlet 被创建的时机 -->
28         <load-on-startup>1</load-on-startup>
29     </servlet>
30 
31     <servlet-mapping>
32         <!-- 需要和某一个 Servlet 节点的 servlet-name 子节点的文本节点一致 -->
33         <servlet-name>HelloServlet_java</servlet-name>
34         <!-- 映射的具体访问路径: / 代表当前 Web 应用的根目录. -->
35         <url-pattern>/hello</url-pattern>
36     </servlet-mapping>
37 
38 </web-app>

 

1、在 web.xml 文件中配置 servlet 的初始化参数(init-param 节点)

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 4     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 5     id="WebApp_ID" version="3.1">
 6 
 7     <!-- 配置和映射 Servlet -->
 8     <servlet>
 9         <!-- Servlet 注册的名字 -->
10         <servlet-name>HelloServlet_java</servlet-name>
11         <!-- Servlet 的全类名 -->
12         <servlet-class>com.panku.javaWeb1.HelloServlet</servlet-class>
13 
14         <!-- 配置 Servlet 的初始化参数 -->
15         <init-param>
16             <!-- 参数名 -->
17             <param-name>user</param-name>
18             <!-- 参数值 -->
19             <param-value>root</param-value>
20         </init-param>
21 
22         <init-param>
23             <param-name>password</param-name>
24             <param-value>123456</param-value>
25         </init-param>
26 
27         <!-- 可以指定 Servlet 被创建的时机 -->
28         <load-on-startup>1</load-on-startup>
29     </servlet>
30 
31     <servlet-mapping>
32         <!-- 需要和某一个 Servlet 节点的 servlet-name 子节点的文本节点一致 -->
33         <servlet-name>HelloServlet_java</servlet-name>
34         <!-- 映射的具体访问路径: / 代表当前 Web 应用的根目录. -->
35         <url-pattern>/hello</url-pattern>
36     </servlet-mapping>
37 
38 </web-app>

 

2、servlet实现类的 init()方法中 ServletConfig 对象实例(ServletConfig的getInitParameterNames、getInitParameter、getServletName(不常用)方法实例)

 1     // Servlet 加载时 初始化方法
 2     @Override
 3     public void init(ServletConfig servletConfig) throws ServletException {
 4         System.out.println("init");
 5 
 6         // 获取初始化参数值
 7         String user = servletConfig.getInitParameter("user");
 8         System.out.println("user:" + user);
 9 
10         // 获取初始化参数名和值
11         Enumeration<String> names = servletConfig.getInitParameterNames();
12         while (names.hasMoreElements()) {
13             String name = names.nextElement();
14             String value = servletConfig.getInitParameter(name);
15             System.out.println("^^name:" + name + ":" + value);
16         }
17 
18         // 获取 Servlet 注册名称
19         String servletName = servletConfig.getServletName();
20         System.out.println(servletName);
21     }

 

2、servlet实现类的 init()方法中 ServletConfig 对象实例(ServletConfig的getInitParameterNames、getInitParameter、getServletName(不常用)方法实例)

 1     // Servlet 加载时 初始化方法
 2     @Override
 3     public void init(ServletConfig servletConfig) throws ServletException {
 4         System.out.println("init");
 5 
 6         // 获取初始化参数值
 7         String user = servletConfig.getInitParameter("user");
 8         System.out.println("user:" + user);
 9 
10         // 获取初始化参数名和值
11         Enumeration<String> names = servletConfig.getInitParameterNames();
12         while (names.hasMoreElements()) {
13             String name = names.nextElement();
14             String value = servletConfig.getInitParameter(name);
15             System.out.println("^^name:" + name + ":" + value);
16         }
17 
18         // 获取 Servlet 注册名称
19         String servletName = servletConfig.getServletName();
20         System.out.println(servletName);
21     }

 

3、在 servlet 实现类的 init()方法中 通过 ServletConfig 对象得到 ServletContext 对象

发表评论

电子邮件地址不会被公开。 必填项已用*标注