Servlet笔记4--ServletConfig接口和ServletContext接口

ServletConfig接口:

 

 

 

ServletContext接口:

  

  代码详解:

  (1)web.xml配置文件:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 3          xmlns="http://java.sun.com/xml/ns/javaee" 
 4          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
 5          id="WebApp_ID" version="2.5">
 6   
 7      <!-- web.xml文件中配置上下文参数,这些信息被自动封装到ServletContext对象中 -->
 8      <context-param>
 9          <param-name>username</param-name>
10          <param-value>admin</param-value>
11      </context-param>
12      
13      <context-param>
14          <param-name>password</param-name>
15          <param-value>123</param-value>
16      </context-param>
17  
18     <servlet>
19         <servlet-name>a</servlet-name>
20         <servlet-class>com.bjpowernode.javaweb.servlet.AServlet</servlet-class>
21         <!-- 初始化参数:被封装到ServletConfig对象中 -->
22         <init-param>
23             <param-name>driver</param-name>
24             <param-value>com.mysql.jdbc.Driver</param-value>
25         </init-param>
26         <init-param>
27             <param-name>url</param-name>
28             <param-value>jdbc:mysql://localhost:3306/bipowernode</param-value>
29         </init-param>
30         <init-param>
31             <param-name>user</param-name>
32             <param-value>root</param-value>
33         </init-param>
34         <init-param>
35             <param-name>password</param-name>
36             <param-value>123</param-value>
37         </init-param>
38     </servlet>
39     <servlet-mapping>
40         <servlet-name>a</servlet-name>
41         <url-pattern>/a</url-pattern>
42     </servlet-mapping>
43     
44     <servlet>
45         <servlet-name>b</servlet-name>
46         <servlet-class>com.bjpowernode.javaweb.servlet.BServlet</servlet-class>
47     </servlet>
48     <servlet-mapping>
49         <servlet-name>b</servlet-name>
50         <url-pattern>/b</url-pattern>
51     </servlet-mapping>
52 </web-app>

    (2) 前端页面:

 1 <html>
 2   <head>
 3     <title>ServletConfig接口</title>
 4   </head>
 5   <body>
 6       <a href="/prj-servlet-04/a">AServlet</a>
 7       <br><br>
 8       <a href="/prj-servlet-04/b">BServlet</a>
 9   </body>
10 </html>

    (3)辅助实体类:

 1 package com.bjpowernode.javaweb.entity;
 2 
 3 public class User {
 4     
 5     private String usercode;
 6     private String username;
 7 
 8     public String getUsercode() {
 9         return usercode;
10     }
11     
12     public void setUsercode(String usercode) {
13         this.usercode = usercode;
14     }
15     
16     public String getUsername() {
17         return username;
18     }
19     
20     public void setUsername(String username) {
21         this.username = username;
22     }
23 
24     @Override
25     public String toString() {
26         return "User [usercode=" + usercode + ", username=" + username + "]";
27     }
28     
29 }

    (4) Servlet程序:

  1 package com.bjpowernode.javaweb.servlet;
  2 
  3 import java.io.IOException;
  4 import java.io.PrintWriter;
  5 import java.util.Date;
  6 import java.util.Enumeration;
  7 
  8 import javax.servlet.Servlet;
  9 import javax.servlet.ServletConfig;
 10 import javax.servlet.ServletContext;
 11 import javax.servlet.ServletException;
 12 import javax.servlet.ServletRequest;
 13 import javax.servlet.ServletResponse;
 14 
 15 import com.bjpowernode.javaweb.entity.User;
 16 
 17 public class AServlet implements Servlet {
 18 
 19     private ServletConfig config;
 20 
 21     public void init(ServletConfig config) throws ServletException {
 22         this.config = config;
 23     }
 24 
 25     public void service(ServletRequest request, ServletResponse response)
 26             throws ServletException, IOException {
 27         
 28         response.setContentType("text/html;charset=UTF-8");
 29         PrintWriter out = response.getWriter();
 30         
 31         //获取ServletConfig
 32         ServletConfig config = getServletConfig();
 33         
 34         //获取Servlet Name
 35         String servletName = config.getServletName();
 36         out.print("<servlet-name>" + servletName + "</servlet-name>" + "<br><br>");
 37         
 38         //获取ServletContext,后面讲什么是ServletContext
 39         ServletContext application = config.getServletContext();
 40         out.print("ASevlet's ServletContext = " + application + "<br><br>");
 41         
 42         //通过当前Servlet初始化参数的name获取value
 43         /*String driver = config.getInitParameter("driver");
 44         String url = config.getInitParameter("url");
 45         String user = config.getInitParameter("user");
 46         String password = config.getInitParameter("password");*/
 47         
 48         //获取当前Servlet所有初始化参数的name,然后再根据name获取value
 49         @SuppressWarnings("unchecked")
 50         Enumeration<String> anames = config.getInitParameterNames();
 51         out.print("AServlet: <br>");
 52         while(anames.hasMoreElements()){
 53             String name = anames.nextElement();
 54             String value = config.getInitParameter(name);
 55             out.print(name + "=" + value);
 56             out.print("<br>");
 57         }
 58         out.print("<br>");
 59         
 60         //获取所有上下文(即当前Servlet的四周环境)初始化参数的name,然后再根据name获取value
 61         @SuppressWarnings("unchecked")
 62         Enumeration<String> snames = application.getInitParameterNames();
 63         out.print("ServletContext: <br>");
 64         while(snames.hasMoreElements()) {
 65             String name = snames.nextElement();
 66             String value = application.getInitParameter(name);
 67             out.print(name + "=" + value);
 68             out.print("<br>");
 69         }
 70         out.print("<br>");
 71         
 72         //获取文件绝对路径,参数必须是WebRoot的下一级目录开始写
 73         String realPath = application.getRealPath("/WEB-INF/resources/db.properties");
 74         out.print(realPath + "<br>");
 75         
 76         //创建User对象
 77         User user = new User();
 78         user.setUsercode("1231");
 79         user.setUsername("jackson");
 80         
 81         //向ServletContext范围中存储User数据
 82         application.setAttribute("userObj", user);
 83         application.setAttribute("time", new Date());
 84         
 85     }
 86     
 87     public void destroy() {
 88 
 89     }
 90     
 91     public ServletConfig getServletConfig() {
 92         return config;
 93     }
 94     
 95     public String getServletInfo() {
 96         return null;
 97     }
 98 
 99 
100 }
 1 package com.bjpowernode.javaweb.servlet;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 
 6 import javax.servlet.Servlet;
 7 import javax.servlet.ServletConfig;
 8 import javax.servlet.ServletContext;
 9 import javax.servlet.ServletException;
10 import javax.servlet.ServletRequest;
11 import javax.servlet.ServletResponse;
12 
13 public class BServlet implements Servlet {
14 
15     private ServletConfig config;
16     
17     public void init(ServletConfig config) throws ServletException {
18         this.config = config;
19     }
20 
21     public void service(ServletRequest request, ServletResponse response)
22             throws ServletException, IOException {
23         
24         response.setContentType("text/html;charset=UTF-8");
25         PrintWriter out = response.getWriter();
26         
27         //init的时候已经获取过了config
28         out.println("BServlet's ServletConfig = " + config + "<br>");
29         
30         ServletContext application = config.getServletContext();
31         
32         Object obj1 = application.getAttribute("userObj");
33         Object obj2 = application.getAttribute("time");
34         out.print(obj1 + "<br>");
35         out.print(obj2 + "<br>");
36     }
37     
38     public void destroy() {
39 
40     }
41     
42     public ServletConfig getServletConfig() {
43         return config;
44     }
45     
46     public String getServletInfo() {
47         return null;
48     }
49 
50 
51 }

posted @ 2017-02-06 14:39  拉夫德尔  阅读(561)  评论(0编辑  收藏  举报