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 }